From 1098b8918a471c9cf45a0ad4f15c636415d881af Mon Sep 17 00:00:00 2001
From: Daniel <daniel.dominek@pwr.edu.pl>
Date: Fri, 10 Jul 2020 17:32:47 +0200
Subject: [PATCH] lexp www

---
 .htaccess                                     |    8 +
 Dockerfile                                    |   22 +
 apache2.conf                                  |  221 ++
 css/graph-creator.css                         |  249 ++
 css/languages.css                             |   42 +
 css/modal.css                                 |   90 +
 css/nav.css                                   |   65 +
 css/selectmenu-nav.css                        |   69 +
 css/style.css                                 |  633 ++++
 eswil/eswil.js                                |   41 +
 hask/hask.html                                |   16 +
 hask/hask.js                                  |   70 +
 hask/hasklist.html                            |   15 +
 httpd.conf                                    |  551 ++++
 img/ajax-loader.gif                           |  Bin 0 -> 3208 bytes
 img/check.png                                 |  Bin 0 -> 1757 bytes
 img/favicon.ico                               |  Bin 0 -> 43078 bytes
 img/icons.gif                                 |  Bin 0 -> 5906 bytes
 img/lang-en-32.png                            |  Bin 0 -> 1690 bytes
 img/lang-pl-32.png                            |  Bin 0 -> 815 bytes
 img/loading.gif                               |  Bin 0 -> 3897 bytes
 img/logo-small.png                            |  Bin 0 -> 10642 bytes
 img/progressbar.gif                           |  Bin 0 -> 3323 bytes
 img/services-logo/eswil.png                   |  Bin 0 -> 2114 bytes
 img/services-logo/hask.png                    |  Bin 0 -> 9033 bytes
 img/services-logo/morfeusz.png                |  Bin 0 -> 2450 bytes
 img/services-logo/omwn.png                    |  Bin 0 -> 11160 bytes
 img/services-logo/plwordnet.png               |  Bin 0 -> 4134 bytes
 img/services-logo/spxvi.png                   |  Bin 0 -> 4685 bytes
 img/services-logo/spxvii.png                  |  Bin 0 -> 2114 bytes
 img/services-logo/walenty.png                 |  Bin 0 -> 3447 bytes
 img/services-logo/word2vec.png                |  Bin 0 -> 5163 bytes
 index.shtml                                   |  239 ++
 js/about-app-modal.js                         |   36 +
 js/about-us-modal.js                          |   37 +
 js/ace/ace.js                                 |   11 +
 js/ace/ext-beautify.js                        |    5 +
 js/ace/ext-chromevox.js                       |    5 +
 js/ace/ext-elastic_tabstops_lite.js           |    5 +
 js/ace/ext-emmet.js                           |    5 +
 js/ace/ext-error_marker.js                    |    5 +
 js/ace/ext-keybinding_menu.js                 |    5 +
 js/ace/ext-language_tools.js                  |    5 +
 js/ace/ext-linking.js                         |    5 +
 js/ace/ext-modelist.js                        |    5 +
 js/ace/ext-old_ie.js                          |    5 +
 js/ace/ext-searchbox.js                       |    5 +
 js/ace/ext-settings_menu.js                   |    5 +
 js/ace/ext-spellcheck.js                      |    5 +
 js/ace/ext-split.js                           |    5 +
 js/ace/ext-static_highlight.js                |    5 +
 js/ace/ext-statusbar.js                       |    5 +
 js/ace/ext-textarea.js                        |    5 +
 js/ace/ext-themelist.js                       |    5 +
 js/ace/ext-whitespace.js                      |    5 +
 js/ace/keybinding-emacs.js                    |    1 +
 js/ace/keybinding-vim.js                      |    1 +
 js/ace/mode-abap.js                           |    1 +
 js/ace/mode-abc.js                            |    1 +
 js/ace/mode-actionscript.js                   |    1 +
 js/ace/mode-ada.js                            |    1 +
 js/ace/mode-apache_conf.js                    |    1 +
 js/ace/mode-applescript.js                    |    1 +
 js/ace/mode-asciidoc.js                       |    1 +
 js/ace/mode-assembly_x86.js                   |    1 +
 js/ace/mode-autohotkey.js                     |    1 +
 js/ace/mode-batchfile.js                      |    1 +
 js/ace/mode-c9search.js                       |    1 +
 js/ace/mode-c_cpp.js                          |    1 +
 js/ace/mode-cirru.js                          |    1 +
 js/ace/mode-clojure.js                        |    1 +
 js/ace/mode-cobol.js                          |    1 +
 js/ace/mode-coffee.js                         |    1 +
 js/ace/mode-coldfusion.js                     |    1 +
 js/ace/mode-csharp.js                         |    1 +
 js/ace/mode-css.js                            |    1 +
 js/ace/mode-curly.js                          |    1 +
 js/ace/mode-d.js                              |    1 +
 js/ace/mode-dart.js                           |    1 +
 js/ace/mode-diff.js                           |    1 +
 js/ace/mode-django.js                         |    1 +
 js/ace/mode-dockerfile.js                     |    1 +
 js/ace/mode-dot.js                            |    1 +
 js/ace/mode-eiffel.js                         |    1 +
 js/ace/mode-ejs.js                            |    1 +
 js/ace/mode-elixir.js                         |    1 +
 js/ace/mode-elm.js                            |    1 +
 js/ace/mode-erlang.js                         |    1 +
 js/ace/mode-forth.js                          |    1 +
 js/ace/mode-ftl.js                            |    1 +
 js/ace/mode-gcode.js                          |    1 +
 js/ace/mode-gherkin.js                        |    1 +
 js/ace/mode-gitignore.js                      |    1 +
 js/ace/mode-glsl.js                           |    1 +
 js/ace/mode-golang.js                         |    1 +
 js/ace/mode-groovy.js                         |    1 +
 js/ace/mode-haml.js                           |    1 +
 js/ace/mode-handlebars.js                     |    1 +
 js/ace/mode-haskell.js                        |    1 +
 js/ace/mode-haxe.js                           |    1 +
 js/ace/mode-html.js                           |    1 +
 js/ace/mode-html_ruby.js                      |    1 +
 js/ace/mode-ini.js                            |    1 +
 js/ace/mode-io.js                             |    1 +
 js/ace/mode-jack.js                           |    1 +
 js/ace/mode-jade.js                           |    1 +
 js/ace/mode-java.js                           |    1 +
 js/ace/mode-javascript.js                     |    1 +
 js/ace/mode-json.js                           |    1 +
 js/ace/mode-jsoniq.js                         |    1 +
 js/ace/mode-jsp.js                            |    1 +
 js/ace/mode-jsx.js                            |    1 +
 js/ace/mode-julia.js                          |    1 +
 js/ace/mode-latex.js                          |    1 +
 js/ace/mode-less.js                           |    1 +
 js/ace/mode-liquid.js                         |    1 +
 js/ace/mode-lisp.js                           |    1 +
 js/ace/mode-live_script.js                    |    1 +
 js/ace/mode-livescript.js                     |    1 +
 js/ace/mode-logiql.js                         |    1 +
 js/ace/mode-lsl.js                            |    1 +
 js/ace/mode-lua.js                            |    1 +
 js/ace/mode-luapage.js                        |    1 +
 js/ace/mode-lucene.js                         |    1 +
 js/ace/mode-makefile.js                       |    1 +
 js/ace/mode-markdown.js                       |    1 +
 js/ace/mode-mask.js                           |    1 +
 js/ace/mode-matlab.js                         |    1 +
 js/ace/mode-mel.js                            |    1 +
 js/ace/mode-mushcode.js                       |    1 +
 js/ace/mode-mysql.js                          |    1 +
 js/ace/mode-nix.js                            |    1 +
 js/ace/mode-objectivec.js                     |    1 +
 js/ace/mode-ocaml.js                          |    1 +
 js/ace/mode-pascal.js                         |    1 +
 js/ace/mode-perl.js                           |    1 +
 js/ace/mode-pgsql.js                          |    1 +
 js/ace/mode-php.js                            |    1 +
 js/ace/mode-plain_text.js                     |    1 +
 js/ace/mode-powershell.js                     |    1 +
 js/ace/mode-praat.js                          |    1 +
 js/ace/mode-prolog.js                         |    1 +
 js/ace/mode-properties.js                     |    1 +
 js/ace/mode-protobuf.js                       |    1 +
 js/ace/mode-python.js                         |    1 +
 js/ace/mode-r.js                              |    1 +
 js/ace/mode-rdoc.js                           |    1 +
 js/ace/mode-rhtml.js                          |    1 +
 js/ace/mode-ruby.js                           |    1 +
 js/ace/mode-rust.js                           |    1 +
 js/ace/mode-sass.js                           |    1 +
 js/ace/mode-scad.js                           |    1 +
 js/ace/mode-scala.js                          |    1 +
 js/ace/mode-scheme.js                         |    1 +
 js/ace/mode-scss.js                           |    1 +
 js/ace/mode-sh.js                             |    1 +
 js/ace/mode-sjs.js                            |    1 +
 js/ace/mode-smarty.js                         |    1 +
 js/ace/mode-snippets.js                       |    1 +
 js/ace/mode-soy_template.js                   |    1 +
 js/ace/mode-space.js                          |    1 +
 js/ace/mode-sql.js                            |    1 +
 js/ace/mode-stylus.js                         |    1 +
 js/ace/mode-svg.js                            |    1 +
 js/ace/mode-tcl.js                            |    1 +
 js/ace/mode-tex.js                            |    1 +
 js/ace/mode-text.js                           |    0
 js/ace/mode-textile.js                        |    1 +
 js/ace/mode-toml.js                           |    1 +
 js/ace/mode-twig.js                           |    1 +
 js/ace/mode-typescript.js                     |    1 +
 js/ace/mode-vala.js                           |    1 +
 js/ace/mode-vbscript.js                       |    1 +
 js/ace/mode-velocity.js                       |    1 +
 js/ace/mode-verilog.js                        |    1 +
 js/ace/mode-vhdl.js                           |    1 +
 js/ace/mode-xml.js                            |    1 +
 js/ace/mode-xquery.js                         |    1 +
 js/ace/mode-yaml.js                           |    1 +
 js/ace/snippets/abap.js                       |    1 +
 js/ace/snippets/abc.js                        |    1 +
 js/ace/snippets/actionscript.js               |    1 +
 js/ace/snippets/ada.js                        |    1 +
 js/ace/snippets/apache_conf.js                |    1 +
 js/ace/snippets/applescript.js                |    1 +
 js/ace/snippets/asciidoc.js                   |    1 +
 js/ace/snippets/assembly_x86.js               |    1 +
 js/ace/snippets/autohotkey.js                 |    1 +
 js/ace/snippets/batchfile.js                  |    1 +
 js/ace/snippets/c9search.js                   |    1 +
 js/ace/snippets/c_cpp.js                      |    1 +
 js/ace/snippets/cirru.js                      |    1 +
 js/ace/snippets/clojure.js                    |    1 +
 js/ace/snippets/cobol.js                      |    1 +
 js/ace/snippets/coffee.js                     |    1 +
 js/ace/snippets/coldfusion.js                 |    1 +
 js/ace/snippets/csharp.js                     |    1 +
 js/ace/snippets/css.js                        |    1 +
 js/ace/snippets/curly.js                      |    1 +
 js/ace/snippets/d.js                          |    1 +
 js/ace/snippets/dart.js                       |    1 +
 js/ace/snippets/diff.js                       |    1 +
 js/ace/snippets/django.js                     |    1 +
 js/ace/snippets/dockerfile.js                 |    1 +
 js/ace/snippets/dot.js                        |    1 +
 js/ace/snippets/eiffel.js                     |    1 +
 js/ace/snippets/ejs.js                        |    1 +
 js/ace/snippets/elixir.js                     |    1 +
 js/ace/snippets/elm.js                        |    1 +
 js/ace/snippets/erlang.js                     |    1 +
 js/ace/snippets/forth.js                      |    1 +
 js/ace/snippets/ftl.js                        |    1 +
 js/ace/snippets/gcode.js                      |    1 +
 js/ace/snippets/gherkin.js                    |    1 +
 js/ace/snippets/gitignore.js                  |    1 +
 js/ace/snippets/glsl.js                       |    1 +
 js/ace/snippets/golang.js                     |    1 +
 js/ace/snippets/groovy.js                     |    1 +
 js/ace/snippets/haml.js                       |    1 +
 js/ace/snippets/handlebars.js                 |    1 +
 js/ace/snippets/haskell.js                    |    1 +
 js/ace/snippets/haxe.js                       |    1 +
 js/ace/snippets/html.js                       |    1 +
 js/ace/snippets/html_ruby.js                  |    1 +
 js/ace/snippets/ini.js                        |    1 +
 js/ace/snippets/io.js                         |    1 +
 js/ace/snippets/jack.js                       |    1 +
 js/ace/snippets/jade.js                       |    1 +
 js/ace/snippets/java.js                       |    1 +
 js/ace/snippets/javascript.js                 |    1 +
 js/ace/snippets/json.js                       |    1 +
 js/ace/snippets/jsoniq.js                     |    1 +
 js/ace/snippets/jsp.js                        |    1 +
 js/ace/snippets/jsx.js                        |    1 +
 js/ace/snippets/julia.js                      |    1 +
 js/ace/snippets/latex.js                      |    1 +
 js/ace/snippets/less.js                       |    1 +
 js/ace/snippets/liquid.js                     |    1 +
 js/ace/snippets/lisp.js                       |    1 +
 js/ace/snippets/live_script.js                |    1 +
 js/ace/snippets/livescript.js                 |    1 +
 js/ace/snippets/logiql.js                     |    1 +
 js/ace/snippets/lsl.js                        |    1 +
 js/ace/snippets/lua.js                        |    1 +
 js/ace/snippets/luapage.js                    |    1 +
 js/ace/snippets/lucene.js                     |    1 +
 js/ace/snippets/makefile.js                   |    1 +
 js/ace/snippets/markdown.js                   |    1 +
 js/ace/snippets/mask.js                       |    1 +
 js/ace/snippets/matlab.js                     |    1 +
 js/ace/snippets/mel.js                        |    1 +
 js/ace/snippets/mushcode.js                   |    1 +
 js/ace/snippets/mysql.js                      |    1 +
 js/ace/snippets/nix.js                        |    1 +
 js/ace/snippets/objectivec.js                 |    1 +
 js/ace/snippets/ocaml.js                      |    1 +
 js/ace/snippets/pascal.js                     |    1 +
 js/ace/snippets/perl.js                       |    1 +
 js/ace/snippets/pgsql.js                      |    1 +
 js/ace/snippets/php.js                        |    1 +
 js/ace/snippets/plain_text.js                 |    1 +
 js/ace/snippets/powershell.js                 |    1 +
 js/ace/snippets/praat.js                      |    1 +
 js/ace/snippets/prolog.js                     |    1 +
 js/ace/snippets/properties.js                 |    1 +
 js/ace/snippets/protobuf.js                   |    1 +
 js/ace/snippets/python.js                     |    1 +
 js/ace/snippets/r.js                          |    1 +
 js/ace/snippets/rdoc.js                       |    1 +
 js/ace/snippets/rhtml.js                      |    1 +
 js/ace/snippets/ruby.js                       |    1 +
 js/ace/snippets/rust.js                       |    1 +
 js/ace/snippets/sass.js                       |    1 +
 js/ace/snippets/scad.js                       |    1 +
 js/ace/snippets/scala.js                      |    1 +
 js/ace/snippets/scheme.js                     |    1 +
 js/ace/snippets/scss.js                       |    1 +
 js/ace/snippets/sh.js                         |    1 +
 js/ace/snippets/sjs.js                        |    1 +
 js/ace/snippets/smarty.js                     |    1 +
 js/ace/snippets/snippets.js                   |    1 +
 js/ace/snippets/soy_template.js               |    1 +
 js/ace/snippets/space.js                      |    1 +
 js/ace/snippets/sql.js                        |    1 +
 js/ace/snippets/stylus.js                     |    1 +
 js/ace/snippets/svg.js                        |    1 +
 js/ace/snippets/tcl.js                        |    1 +
 js/ace/snippets/tex.js                        |    1 +
 js/ace/snippets/text.js                       |    1 +
 js/ace/snippets/textile.js                    |    1 +
 js/ace/snippets/toml.js                       |    1 +
 js/ace/snippets/twig.js                       |    1 +
 js/ace/snippets/typescript.js                 |    1 +
 js/ace/snippets/vala.js                       |    1 +
 js/ace/snippets/vbscript.js                   |    1 +
 js/ace/snippets/velocity.js                   |    1 +
 js/ace/snippets/verilog.js                    |    1 +
 js/ace/snippets/vhdl.js                       |    1 +
 js/ace/snippets/xml.js                        |    1 +
 js/ace/snippets/xquery.js                     |    1 +
 js/ace/snippets/yaml.js                       |    1 +
 js/ace/theme-ambiance.js                      |    1 +
 js/ace/theme-chaos.js                         |    1 +
 js/ace/theme-chrome.js                        |    1 +
 js/ace/theme-clouds.js                        |    1 +
 js/ace/theme-clouds_midnight.js               |    1 +
 js/ace/theme-cobalt.js                        |    1 +
 js/ace/theme-crimson_editor.js                |    1 +
 js/ace/theme-dawn.js                          |    1 +
 js/ace/theme-dreamweaver.js                   |    1 +
 js/ace/theme-eclipse.js                       |    1 +
 js/ace/theme-github.js                        |    1 +
 js/ace/theme-idle_fingers.js                  |    1 +
 js/ace/theme-katzenmilch.js                   |    1 +
 js/ace/theme-kr_theme.js                      |    1 +
 js/ace/theme-kuroir.js                        |    1 +
 js/ace/theme-merbivore.js                     |    1 +
 js/ace/theme-merbivore_soft.js                |    1 +
 js/ace/theme-mono_industrial.js               |    1 +
 js/ace/theme-monokai.js                       |    1 +
 js/ace/theme-pastel_on_dark.js                |    1 +
 js/ace/theme-solarized_dark.js                |    1 +
 js/ace/theme-solarized_light.js               |    1 +
 js/ace/theme-terminal.js                      |    1 +
 js/ace/theme-textmate.js                      |    1 +
 js/ace/theme-tomorrow.js                      |    1 +
 js/ace/theme-tomorrow_night.js                |    1 +
 js/ace/theme-tomorrow_night_blue.js           |    1 +
 js/ace/theme-tomorrow_night_bright.js         |    1 +
 js/ace/theme-tomorrow_night_eighties.js       |    1 +
 js/ace/theme-twilight.js                      |    1 +
 js/ace/theme-vibrant_ink.js                   |    1 +
 js/ace/theme-xcode.js                         |    1 +
 js/ace/worker-coffee.js                       |    1 +
 js/ace/worker-css.js                          |    1 +
 js/ace/worker-html.js                         |    1 +
 js/ace/worker-javascript.js                   |    1 +
 js/ace/worker-json.js                         |    1 +
 js/ace/worker-lua.js                          |    1 +
 js/ace/worker-php.js                          |    1 +
 js/ace/worker-xml.js                          |    1 +
 js/ace/worker-xquery.js                       |    1 +
 js/d3.v4.min.js                               |    8 +
 js/element.js                                 |  145 +
 js/graph-creator.js                           |    5 +
 js/languageSettings.js                        |   80 +
 js/lexp.js                                    |  230 ++
 js/nav-expand.js                              |   19 +
 js/options.js                                 |   97 +
 js/populate-selects.js                        |   68 +
 js/resource.js                                |   82 +
 js/selects/basic-options.js                   |   48 +
 js/table/bootstrap-table-locale-all.js        | 1592 ++++++++++
 js/table/bootstrap-table-locale-all.min.js    |    7 +
 js/table/bootstrap-table.css                  |  297 ++
 js/table/bootstrap-table.js                   | 2690 +++++++++++++++++
 js/table/bootstrap-table.min.css              |    1 +
 js/table/bootstrap-table.min.js               |    9 +
 .../bootstrap-table-accent-neutralise.js      |  182 ++
 .../bootstrap-table-accent-neutralise.min.js  |    7 +
 .../angular/bootstrap-table-angular.js        |  105 +
 .../angular/bootstrap-table-angular.min.js    |    7 +
 .../cookie/bootstrap-table-cookie.js          |  331 ++
 .../cookie/bootstrap-table-cookie.min.js      |    7 +
 .../editable/bootstrap-table-editable.js      |  107 +
 .../editable/bootstrap-table-editable.min.js  |    7 +
 .../export/bootstrap-table-export.js          |  105 +
 .../export/bootstrap-table-export.min.js      |    7 +
 .../bootstrap-table-filter-control.js         |  436 +++
 .../bootstrap-table-filter-control.min.js     |    7 +
 .../filter/bootstrap-table-filter.js          |   67 +
 .../filter/bootstrap-table-filter.min.js      |    7 +
 .../flat-json/bootstrap-table-flat-json.js    |   62 +
 .../bootstrap-table-flat-json.min.js          |    7 +
 .../flatJSON/bootstrap-table-flatJSON.min.js  |    7 +
 .../group-by/bootstrap-table-group-by.css     |   53 +
 .../group-by/bootstrap-table-group-by.js      |  243 ++
 .../group-by/bootstrap-table-group-by.min.js  |    7 +
 .../key-events/bootstrap-table-key-events.js  |   80 +
 .../bootstrap-table-key-events.min.js         |    7 +
 .../mobile/bootstrap-table-mobile.js          |  131 +
 .../mobile/bootstrap-table-mobile.min.js      |    7 +
 .../bootstrap-table-multiple-search.js        |   67 +
 .../bootstrap-table-multiple-search.min.js    |    7 +
 .../bootstrap-table-multiple-sort.js          |  378 +++
 .../bootstrap-table-multiple-sort.min.js      |    7 +
 .../bootstrap-table-natural-sorting.js        |   47 +
 .../bootstrap-table-natural-sorting.min.js    |    7 +
 .../bootstrap-table-reorder-columns.js        |  121 +
 .../bootstrap-table-reorder-columns.min.js    |    7 +
 .../bootstrap-table-reorder-rows.css          |   14 +
 .../bootstrap-table-reorder-rows.js           |  115 +
 .../bootstrap-table-reorder-rows.min.js       |    7 +
 .../resizable/bootstrap-table-resizable.js    |   74 +
 .../bootstrap-table-resizable.min.js          |    7 +
 .../bootstrap-table_natural-sorting.min.js    |    7 +
 .../toolbar/bootstrap-table-toolbar.js        |  211 ++
 .../toolbar/bootstrap-table-toolbar.min.js    |    7 +
 js/table/locale/bootstrap-table-af-ZA.js      |   40 +
 js/table/locale/bootstrap-table-af-ZA.min.js  |    7 +
 js/table/locale/bootstrap-table-ar-SA.js      |   40 +
 js/table/locale/bootstrap-table-ar-SA.min.js  |    7 +
 js/table/locale/bootstrap-table-ca-ES.js      |   43 +
 js/table/locale/bootstrap-table-ca-ES.min.js  |    7 +
 js/table/locale/bootstrap-table-cs-CZ.js      |   44 +
 js/table/locale/bootstrap-table-cs-CZ.min.js  |    7 +
 js/table/locale/bootstrap-table-da-DK.js      |   37 +
 js/table/locale/bootstrap-table-da-DK.min.js  |    7 +
 js/table/locale/bootstrap-table-de-DE.js      |   37 +
 js/table/locale/bootstrap-table-de-DE.min.js  |    7 +
 js/table/locale/bootstrap-table-el-GR.js      |   28 +
 js/table/locale/bootstrap-table-el-GR.min.js  |    7 +
 js/table/locale/bootstrap-table-en-US.js      |   43 +
 js/table/locale/bootstrap-table-en-US.min.js  |    7 +
 js/table/locale/bootstrap-table-es-AR.js      |   31 +
 js/table/locale/bootstrap-table-es-AR.min.js  |    7 +
 js/table/locale/bootstrap-table-es-CR.js      |   40 +
 js/table/locale/bootstrap-table-es-CR.min.js  |    7 +
 js/table/locale/bootstrap-table-es-ES.js      |   43 +
 js/table/locale/bootstrap-table-es-ES.min.js  |    7 +
 js/table/locale/bootstrap-table-es-MX.js      |   32 +
 js/table/locale/bootstrap-table-es-MX.min.js  |    7 +
 js/table/locale/bootstrap-table-es-NI.js      |   40 +
 js/table/locale/bootstrap-table-es-NI.min.js  |    7 +
 js/table/locale/bootstrap-table-es-SP.js      |   40 +
 js/table/locale/bootstrap-table-es-SP.min.js  |    7 +
 js/table/locale/bootstrap-table-et-EE.js      |   43 +
 js/table/locale/bootstrap-table-et-EE.min.js  |    7 +
 js/table/locale/bootstrap-table-fa-IR.js      |   43 +
 js/table/locale/bootstrap-table-fa-IR.min.js  |    7 +
 js/table/locale/bootstrap-table-fr-BE.js      |   28 +
 js/table/locale/bootstrap-table-fr-BE.min.js  |    7 +
 js/table/locale/bootstrap-table-fr-FR.js      |   41 +
 js/table/locale/bootstrap-table-fr-FR.min.js  |    7 +
 js/table/locale/bootstrap-table-hr-HR.js      |   44 +
 js/table/locale/bootstrap-table-hr-HR.min.js  |    7 +
 js/table/locale/bootstrap-table-hu-HU.js      |   43 +
 js/table/locale/bootstrap-table-hu-HU.min.js  |    7 +
 js/table/locale/bootstrap-table-it-IT.js      |   38 +
 js/table/locale/bootstrap-table-it-IT.min.js  |    7 +
 js/table/locale/bootstrap-table-ja-JP.js      |   43 +
 js/table/locale/bootstrap-table-ja-JP.min.js  |    7 +
 js/table/locale/bootstrap-table-ka-GE.js      |   40 +
 js/table/locale/bootstrap-table-ka-GE.min.js  |    7 +
 js/table/locale/bootstrap-table-ko-KR.js      |   37 +
 js/table/locale/bootstrap-table-ko-KR.min.js  |    7 +
 js/table/locale/bootstrap-table-ms-MY.js      |   43 +
 js/table/locale/bootstrap-table-ms-MY.min.js  |    7 +
 js/table/locale/bootstrap-table-nb-NO.js      |   37 +
 js/table/locale/bootstrap-table-nb-NO.min.js  |    7 +
 js/table/locale/bootstrap-table-nl-NL.js      |   28 +
 js/table/locale/bootstrap-table-nl-NL.min.js  |    7 +
 js/table/locale/bootstrap-table-pl-PL.js      |   37 +
 js/table/locale/bootstrap-table-pl-PL.min.js  |    7 +
 js/table/locale/bootstrap-table-pt-BR.js      |   41 +
 js/table/locale/bootstrap-table-pt-BR.min.js  |    7 +
 js/table/locale/bootstrap-table-pt-PT.js      |   28 +
 js/table/locale/bootstrap-table-pt-PT.min.js  |    7 +
 js/table/locale/bootstrap-table-ro-RO.js      |   43 +
 js/table/locale/bootstrap-table-ro-RO.min.js  |    7 +
 js/table/locale/bootstrap-table-ru-RU.js      |   36 +
 js/table/locale/bootstrap-table-ru-RU.min.js  |    7 +
 js/table/locale/bootstrap-table-sk-SK.js      |   37 +
 js/table/locale/bootstrap-table-sk-SK.min.js  |    7 +
 js/table/locale/bootstrap-table-sv-SE.js      |   37 +
 js/table/locale/bootstrap-table-sv-SE.min.js  |    7 +
 js/table/locale/bootstrap-table-th-TH.js      |   37 +
 js/table/locale/bootstrap-table-th-TH.min.js  |    7 +
 js/table/locale/bootstrap-table-tr-TR.js      |   41 +
 js/table/locale/bootstrap-table-tr-TR.min.js  |    7 +
 js/table/locale/bootstrap-table-uk-UA.js      |   37 +
 js/table/locale/bootstrap-table-uk-UA.min.js  |    7 +
 js/table/locale/bootstrap-table-ur-PK.js      |   37 +
 js/table/locale/bootstrap-table-ur-PK.min.js  |    7 +
 js/table/locale/bootstrap-table-vi-VN.js      |   28 +
 js/table/locale/bootstrap-table-vi-VN.min.js  |    7 +
 js/table/locale/bootstrap-table-zh-CN.js      |   40 +
 js/table/locale/bootstrap-table-zh-CN.min.js  |    7 +
 js/table/locale/bootstrap-table-zh-TW.js      |   40 +
 js/table/locale/bootstrap-table-zh-TW.min.js  |    7 +
 morfeusz/morfeusz.css                         |   73 +
 morfeusz/morfeusz.js                          |  854 ++++++
 omwn/omwn.js                                  |   83 +
 plwordnet/lang-pl-32.png                      |  Bin 0 -> 815 bytes
 plwordnet/plwordnet.css                       |  235 ++
 plwordnet/plwordnet.js                        |  676 +++++
 spxvi/css/haslo.css                           |  294 ++
 spxvi/css/tipsy.css                           |   25 +
 spxvi/fonts/PalemMUFI-bd.ttf                  |  Bin 0 -> 424180 bytes
 spxvi/fonts/PalemMUFI-it.ttf                  |  Bin 0 -> 961396 bytes
 spxvi/fonts/PalemMUFI-nm.ttf                  |  Bin 0 -> 857832 bytes
 spxvi/img/icons/page_white_text.png           |  Bin 0 -> 342 bytes
 spxvi/img/icons/table.png                     |  Bin 0 -> 566 bytes
 spxvi/js/spxvi.js                             |   74 +
 spxvii/img/kolo.gif                           |  Bin 0 -> 73 bytes
 spxvii/img/romb.gif                           |  Bin 0 -> 75 bytes
 spxvii/img/trojkat.gif                        |  Bin 0 -> 96 bytes
 spxvii/spxvii.css                             | 1997 ++++++++++++
 spxvii/spxvii.js                              |   41 +
 walenty/walenty.css                           |   58 +
 walenty/walenty.js                            |  318 ++
 word2vec/jqcloud-1.0.4.js                     |  235 ++
 word2vec/jqcloud.css                          |   49 +
 word2vec/jqcloud.js                           |  548 ++++
 word2vec/jqcloud.min.css                      |    1 +
 word2vec/jqcloud.min.js                       |    8 +
 word2vec/word2vec.js                          |   84 +
 507 files changed, 18748 insertions(+)
 create mode 100644 .htaccess
 create mode 100644 Dockerfile
 create mode 100644 apache2.conf
 create mode 100644 css/graph-creator.css
 create mode 100644 css/languages.css
 create mode 100644 css/modal.css
 create mode 100644 css/nav.css
 create mode 100644 css/selectmenu-nav.css
 create mode 100644 css/style.css
 create mode 100644 eswil/eswil.js
 create mode 100644 hask/hask.html
 create mode 100644 hask/hask.js
 create mode 100644 hask/hasklist.html
 create mode 100644 httpd.conf
 create mode 100644 img/ajax-loader.gif
 create mode 100644 img/check.png
 create mode 100644 img/favicon.ico
 create mode 100644 img/icons.gif
 create mode 100644 img/lang-en-32.png
 create mode 100644 img/lang-pl-32.png
 create mode 100644 img/loading.gif
 create mode 100644 img/logo-small.png
 create mode 100644 img/progressbar.gif
 create mode 100644 img/services-logo/eswil.png
 create mode 100644 img/services-logo/hask.png
 create mode 100644 img/services-logo/morfeusz.png
 create mode 100644 img/services-logo/omwn.png
 create mode 100644 img/services-logo/plwordnet.png
 create mode 100644 img/services-logo/spxvi.png
 create mode 100644 img/services-logo/spxvii.png
 create mode 100644 img/services-logo/walenty.png
 create mode 100644 img/services-logo/word2vec.png
 create mode 100644 index.shtml
 create mode 100644 js/about-app-modal.js
 create mode 100644 js/about-us-modal.js
 create mode 100644 js/ace/ace.js
 create mode 100644 js/ace/ext-beautify.js
 create mode 100644 js/ace/ext-chromevox.js
 create mode 100644 js/ace/ext-elastic_tabstops_lite.js
 create mode 100644 js/ace/ext-emmet.js
 create mode 100644 js/ace/ext-error_marker.js
 create mode 100644 js/ace/ext-keybinding_menu.js
 create mode 100644 js/ace/ext-language_tools.js
 create mode 100644 js/ace/ext-linking.js
 create mode 100644 js/ace/ext-modelist.js
 create mode 100644 js/ace/ext-old_ie.js
 create mode 100644 js/ace/ext-searchbox.js
 create mode 100644 js/ace/ext-settings_menu.js
 create mode 100644 js/ace/ext-spellcheck.js
 create mode 100644 js/ace/ext-split.js
 create mode 100644 js/ace/ext-static_highlight.js
 create mode 100644 js/ace/ext-statusbar.js
 create mode 100644 js/ace/ext-textarea.js
 create mode 100644 js/ace/ext-themelist.js
 create mode 100644 js/ace/ext-whitespace.js
 create mode 100644 js/ace/keybinding-emacs.js
 create mode 100644 js/ace/keybinding-vim.js
 create mode 100644 js/ace/mode-abap.js
 create mode 100644 js/ace/mode-abc.js
 create mode 100644 js/ace/mode-actionscript.js
 create mode 100644 js/ace/mode-ada.js
 create mode 100644 js/ace/mode-apache_conf.js
 create mode 100644 js/ace/mode-applescript.js
 create mode 100644 js/ace/mode-asciidoc.js
 create mode 100644 js/ace/mode-assembly_x86.js
 create mode 100644 js/ace/mode-autohotkey.js
 create mode 100644 js/ace/mode-batchfile.js
 create mode 100644 js/ace/mode-c9search.js
 create mode 100644 js/ace/mode-c_cpp.js
 create mode 100644 js/ace/mode-cirru.js
 create mode 100644 js/ace/mode-clojure.js
 create mode 100644 js/ace/mode-cobol.js
 create mode 100644 js/ace/mode-coffee.js
 create mode 100644 js/ace/mode-coldfusion.js
 create mode 100644 js/ace/mode-csharp.js
 create mode 100644 js/ace/mode-css.js
 create mode 100644 js/ace/mode-curly.js
 create mode 100644 js/ace/mode-d.js
 create mode 100644 js/ace/mode-dart.js
 create mode 100644 js/ace/mode-diff.js
 create mode 100644 js/ace/mode-django.js
 create mode 100644 js/ace/mode-dockerfile.js
 create mode 100644 js/ace/mode-dot.js
 create mode 100644 js/ace/mode-eiffel.js
 create mode 100644 js/ace/mode-ejs.js
 create mode 100644 js/ace/mode-elixir.js
 create mode 100644 js/ace/mode-elm.js
 create mode 100644 js/ace/mode-erlang.js
 create mode 100644 js/ace/mode-forth.js
 create mode 100644 js/ace/mode-ftl.js
 create mode 100644 js/ace/mode-gcode.js
 create mode 100644 js/ace/mode-gherkin.js
 create mode 100644 js/ace/mode-gitignore.js
 create mode 100644 js/ace/mode-glsl.js
 create mode 100644 js/ace/mode-golang.js
 create mode 100644 js/ace/mode-groovy.js
 create mode 100644 js/ace/mode-haml.js
 create mode 100644 js/ace/mode-handlebars.js
 create mode 100644 js/ace/mode-haskell.js
 create mode 100644 js/ace/mode-haxe.js
 create mode 100644 js/ace/mode-html.js
 create mode 100644 js/ace/mode-html_ruby.js
 create mode 100644 js/ace/mode-ini.js
 create mode 100644 js/ace/mode-io.js
 create mode 100644 js/ace/mode-jack.js
 create mode 100644 js/ace/mode-jade.js
 create mode 100644 js/ace/mode-java.js
 create mode 100644 js/ace/mode-javascript.js
 create mode 100644 js/ace/mode-json.js
 create mode 100644 js/ace/mode-jsoniq.js
 create mode 100644 js/ace/mode-jsp.js
 create mode 100644 js/ace/mode-jsx.js
 create mode 100644 js/ace/mode-julia.js
 create mode 100644 js/ace/mode-latex.js
 create mode 100644 js/ace/mode-less.js
 create mode 100644 js/ace/mode-liquid.js
 create mode 100644 js/ace/mode-lisp.js
 create mode 100644 js/ace/mode-live_script.js
 create mode 100644 js/ace/mode-livescript.js
 create mode 100644 js/ace/mode-logiql.js
 create mode 100644 js/ace/mode-lsl.js
 create mode 100644 js/ace/mode-lua.js
 create mode 100644 js/ace/mode-luapage.js
 create mode 100644 js/ace/mode-lucene.js
 create mode 100644 js/ace/mode-makefile.js
 create mode 100644 js/ace/mode-markdown.js
 create mode 100644 js/ace/mode-mask.js
 create mode 100644 js/ace/mode-matlab.js
 create mode 100644 js/ace/mode-mel.js
 create mode 100644 js/ace/mode-mushcode.js
 create mode 100644 js/ace/mode-mysql.js
 create mode 100644 js/ace/mode-nix.js
 create mode 100644 js/ace/mode-objectivec.js
 create mode 100644 js/ace/mode-ocaml.js
 create mode 100644 js/ace/mode-pascal.js
 create mode 100644 js/ace/mode-perl.js
 create mode 100644 js/ace/mode-pgsql.js
 create mode 100644 js/ace/mode-php.js
 create mode 100644 js/ace/mode-plain_text.js
 create mode 100644 js/ace/mode-powershell.js
 create mode 100644 js/ace/mode-praat.js
 create mode 100644 js/ace/mode-prolog.js
 create mode 100644 js/ace/mode-properties.js
 create mode 100644 js/ace/mode-protobuf.js
 create mode 100644 js/ace/mode-python.js
 create mode 100644 js/ace/mode-r.js
 create mode 100644 js/ace/mode-rdoc.js
 create mode 100644 js/ace/mode-rhtml.js
 create mode 100644 js/ace/mode-ruby.js
 create mode 100644 js/ace/mode-rust.js
 create mode 100644 js/ace/mode-sass.js
 create mode 100644 js/ace/mode-scad.js
 create mode 100644 js/ace/mode-scala.js
 create mode 100644 js/ace/mode-scheme.js
 create mode 100644 js/ace/mode-scss.js
 create mode 100644 js/ace/mode-sh.js
 create mode 100644 js/ace/mode-sjs.js
 create mode 100644 js/ace/mode-smarty.js
 create mode 100644 js/ace/mode-snippets.js
 create mode 100644 js/ace/mode-soy_template.js
 create mode 100644 js/ace/mode-space.js
 create mode 100644 js/ace/mode-sql.js
 create mode 100644 js/ace/mode-stylus.js
 create mode 100644 js/ace/mode-svg.js
 create mode 100644 js/ace/mode-tcl.js
 create mode 100644 js/ace/mode-tex.js
 create mode 100644 js/ace/mode-text.js
 create mode 100644 js/ace/mode-textile.js
 create mode 100644 js/ace/mode-toml.js
 create mode 100644 js/ace/mode-twig.js
 create mode 100644 js/ace/mode-typescript.js
 create mode 100644 js/ace/mode-vala.js
 create mode 100644 js/ace/mode-vbscript.js
 create mode 100644 js/ace/mode-velocity.js
 create mode 100644 js/ace/mode-verilog.js
 create mode 100644 js/ace/mode-vhdl.js
 create mode 100644 js/ace/mode-xml.js
 create mode 100644 js/ace/mode-xquery.js
 create mode 100644 js/ace/mode-yaml.js
 create mode 100644 js/ace/snippets/abap.js
 create mode 100644 js/ace/snippets/abc.js
 create mode 100644 js/ace/snippets/actionscript.js
 create mode 100644 js/ace/snippets/ada.js
 create mode 100644 js/ace/snippets/apache_conf.js
 create mode 100644 js/ace/snippets/applescript.js
 create mode 100644 js/ace/snippets/asciidoc.js
 create mode 100644 js/ace/snippets/assembly_x86.js
 create mode 100644 js/ace/snippets/autohotkey.js
 create mode 100644 js/ace/snippets/batchfile.js
 create mode 100644 js/ace/snippets/c9search.js
 create mode 100644 js/ace/snippets/c_cpp.js
 create mode 100644 js/ace/snippets/cirru.js
 create mode 100644 js/ace/snippets/clojure.js
 create mode 100644 js/ace/snippets/cobol.js
 create mode 100644 js/ace/snippets/coffee.js
 create mode 100644 js/ace/snippets/coldfusion.js
 create mode 100644 js/ace/snippets/csharp.js
 create mode 100644 js/ace/snippets/css.js
 create mode 100644 js/ace/snippets/curly.js
 create mode 100644 js/ace/snippets/d.js
 create mode 100644 js/ace/snippets/dart.js
 create mode 100644 js/ace/snippets/diff.js
 create mode 100644 js/ace/snippets/django.js
 create mode 100644 js/ace/snippets/dockerfile.js
 create mode 100644 js/ace/snippets/dot.js
 create mode 100644 js/ace/snippets/eiffel.js
 create mode 100644 js/ace/snippets/ejs.js
 create mode 100644 js/ace/snippets/elixir.js
 create mode 100644 js/ace/snippets/elm.js
 create mode 100644 js/ace/snippets/erlang.js
 create mode 100644 js/ace/snippets/forth.js
 create mode 100644 js/ace/snippets/ftl.js
 create mode 100644 js/ace/snippets/gcode.js
 create mode 100644 js/ace/snippets/gherkin.js
 create mode 100644 js/ace/snippets/gitignore.js
 create mode 100644 js/ace/snippets/glsl.js
 create mode 100644 js/ace/snippets/golang.js
 create mode 100644 js/ace/snippets/groovy.js
 create mode 100644 js/ace/snippets/haml.js
 create mode 100644 js/ace/snippets/handlebars.js
 create mode 100644 js/ace/snippets/haskell.js
 create mode 100644 js/ace/snippets/haxe.js
 create mode 100644 js/ace/snippets/html.js
 create mode 100644 js/ace/snippets/html_ruby.js
 create mode 100644 js/ace/snippets/ini.js
 create mode 100644 js/ace/snippets/io.js
 create mode 100644 js/ace/snippets/jack.js
 create mode 100644 js/ace/snippets/jade.js
 create mode 100644 js/ace/snippets/java.js
 create mode 100644 js/ace/snippets/javascript.js
 create mode 100644 js/ace/snippets/json.js
 create mode 100644 js/ace/snippets/jsoniq.js
 create mode 100644 js/ace/snippets/jsp.js
 create mode 100644 js/ace/snippets/jsx.js
 create mode 100644 js/ace/snippets/julia.js
 create mode 100644 js/ace/snippets/latex.js
 create mode 100644 js/ace/snippets/less.js
 create mode 100644 js/ace/snippets/liquid.js
 create mode 100644 js/ace/snippets/lisp.js
 create mode 100644 js/ace/snippets/live_script.js
 create mode 100644 js/ace/snippets/livescript.js
 create mode 100644 js/ace/snippets/logiql.js
 create mode 100644 js/ace/snippets/lsl.js
 create mode 100644 js/ace/snippets/lua.js
 create mode 100644 js/ace/snippets/luapage.js
 create mode 100644 js/ace/snippets/lucene.js
 create mode 100644 js/ace/snippets/makefile.js
 create mode 100644 js/ace/snippets/markdown.js
 create mode 100644 js/ace/snippets/mask.js
 create mode 100644 js/ace/snippets/matlab.js
 create mode 100644 js/ace/snippets/mel.js
 create mode 100644 js/ace/snippets/mushcode.js
 create mode 100644 js/ace/snippets/mysql.js
 create mode 100644 js/ace/snippets/nix.js
 create mode 100644 js/ace/snippets/objectivec.js
 create mode 100644 js/ace/snippets/ocaml.js
 create mode 100644 js/ace/snippets/pascal.js
 create mode 100644 js/ace/snippets/perl.js
 create mode 100644 js/ace/snippets/pgsql.js
 create mode 100644 js/ace/snippets/php.js
 create mode 100644 js/ace/snippets/plain_text.js
 create mode 100644 js/ace/snippets/powershell.js
 create mode 100644 js/ace/snippets/praat.js
 create mode 100644 js/ace/snippets/prolog.js
 create mode 100644 js/ace/snippets/properties.js
 create mode 100644 js/ace/snippets/protobuf.js
 create mode 100644 js/ace/snippets/python.js
 create mode 100644 js/ace/snippets/r.js
 create mode 100644 js/ace/snippets/rdoc.js
 create mode 100644 js/ace/snippets/rhtml.js
 create mode 100644 js/ace/snippets/ruby.js
 create mode 100644 js/ace/snippets/rust.js
 create mode 100644 js/ace/snippets/sass.js
 create mode 100644 js/ace/snippets/scad.js
 create mode 100644 js/ace/snippets/scala.js
 create mode 100644 js/ace/snippets/scheme.js
 create mode 100644 js/ace/snippets/scss.js
 create mode 100644 js/ace/snippets/sh.js
 create mode 100644 js/ace/snippets/sjs.js
 create mode 100644 js/ace/snippets/smarty.js
 create mode 100644 js/ace/snippets/snippets.js
 create mode 100644 js/ace/snippets/soy_template.js
 create mode 100644 js/ace/snippets/space.js
 create mode 100644 js/ace/snippets/sql.js
 create mode 100644 js/ace/snippets/stylus.js
 create mode 100644 js/ace/snippets/svg.js
 create mode 100644 js/ace/snippets/tcl.js
 create mode 100644 js/ace/snippets/tex.js
 create mode 100644 js/ace/snippets/text.js
 create mode 100644 js/ace/snippets/textile.js
 create mode 100644 js/ace/snippets/toml.js
 create mode 100644 js/ace/snippets/twig.js
 create mode 100644 js/ace/snippets/typescript.js
 create mode 100644 js/ace/snippets/vala.js
 create mode 100644 js/ace/snippets/vbscript.js
 create mode 100644 js/ace/snippets/velocity.js
 create mode 100644 js/ace/snippets/verilog.js
 create mode 100644 js/ace/snippets/vhdl.js
 create mode 100644 js/ace/snippets/xml.js
 create mode 100644 js/ace/snippets/xquery.js
 create mode 100644 js/ace/snippets/yaml.js
 create mode 100644 js/ace/theme-ambiance.js
 create mode 100644 js/ace/theme-chaos.js
 create mode 100644 js/ace/theme-chrome.js
 create mode 100644 js/ace/theme-clouds.js
 create mode 100644 js/ace/theme-clouds_midnight.js
 create mode 100644 js/ace/theme-cobalt.js
 create mode 100644 js/ace/theme-crimson_editor.js
 create mode 100644 js/ace/theme-dawn.js
 create mode 100644 js/ace/theme-dreamweaver.js
 create mode 100644 js/ace/theme-eclipse.js
 create mode 100644 js/ace/theme-github.js
 create mode 100644 js/ace/theme-idle_fingers.js
 create mode 100644 js/ace/theme-katzenmilch.js
 create mode 100644 js/ace/theme-kr_theme.js
 create mode 100644 js/ace/theme-kuroir.js
 create mode 100644 js/ace/theme-merbivore.js
 create mode 100644 js/ace/theme-merbivore_soft.js
 create mode 100644 js/ace/theme-mono_industrial.js
 create mode 100644 js/ace/theme-monokai.js
 create mode 100644 js/ace/theme-pastel_on_dark.js
 create mode 100644 js/ace/theme-solarized_dark.js
 create mode 100644 js/ace/theme-solarized_light.js
 create mode 100644 js/ace/theme-terminal.js
 create mode 100644 js/ace/theme-textmate.js
 create mode 100644 js/ace/theme-tomorrow.js
 create mode 100644 js/ace/theme-tomorrow_night.js
 create mode 100644 js/ace/theme-tomorrow_night_blue.js
 create mode 100644 js/ace/theme-tomorrow_night_bright.js
 create mode 100644 js/ace/theme-tomorrow_night_eighties.js
 create mode 100644 js/ace/theme-twilight.js
 create mode 100644 js/ace/theme-vibrant_ink.js
 create mode 100644 js/ace/theme-xcode.js
 create mode 100644 js/ace/worker-coffee.js
 create mode 100644 js/ace/worker-css.js
 create mode 100644 js/ace/worker-html.js
 create mode 100644 js/ace/worker-javascript.js
 create mode 100644 js/ace/worker-json.js
 create mode 100644 js/ace/worker-lua.js
 create mode 100644 js/ace/worker-php.js
 create mode 100644 js/ace/worker-xml.js
 create mode 100644 js/ace/worker-xquery.js
 create mode 100644 js/d3.v4.min.js
 create mode 100644 js/element.js
 create mode 100644 js/graph-creator.js
 create mode 100644 js/languageSettings.js
 create mode 100644 js/lexp.js
 create mode 100644 js/nav-expand.js
 create mode 100644 js/options.js
 create mode 100644 js/populate-selects.js
 create mode 100644 js/resource.js
 create mode 100644 js/selects/basic-options.js
 create mode 100644 js/table/bootstrap-table-locale-all.js
 create mode 100644 js/table/bootstrap-table-locale-all.min.js
 create mode 100644 js/table/bootstrap-table.css
 create mode 100644 js/table/bootstrap-table.js
 create mode 100644 js/table/bootstrap-table.min.css
 create mode 100644 js/table/bootstrap-table.min.js
 create mode 100644 js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js
 create mode 100644 js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.min.js
 create mode 100644 js/table/extensions/angular/bootstrap-table-angular.js
 create mode 100644 js/table/extensions/angular/bootstrap-table-angular.min.js
 create mode 100644 js/table/extensions/cookie/bootstrap-table-cookie.js
 create mode 100644 js/table/extensions/cookie/bootstrap-table-cookie.min.js
 create mode 100644 js/table/extensions/editable/bootstrap-table-editable.js
 create mode 100644 js/table/extensions/editable/bootstrap-table-editable.min.js
 create mode 100644 js/table/extensions/export/bootstrap-table-export.js
 create mode 100644 js/table/extensions/export/bootstrap-table-export.min.js
 create mode 100644 js/table/extensions/filter-control/bootstrap-table-filter-control.js
 create mode 100644 js/table/extensions/filter-control/bootstrap-table-filter-control.min.js
 create mode 100644 js/table/extensions/filter/bootstrap-table-filter.js
 create mode 100644 js/table/extensions/filter/bootstrap-table-filter.min.js
 create mode 100644 js/table/extensions/flat-json/bootstrap-table-flat-json.js
 create mode 100644 js/table/extensions/flat-json/bootstrap-table-flat-json.min.js
 create mode 100644 js/table/extensions/flatJSON/bootstrap-table-flatJSON.min.js
 create mode 100644 js/table/extensions/group-by/bootstrap-table-group-by.css
 create mode 100644 js/table/extensions/group-by/bootstrap-table-group-by.js
 create mode 100644 js/table/extensions/group-by/bootstrap-table-group-by.min.js
 create mode 100644 js/table/extensions/key-events/bootstrap-table-key-events.js
 create mode 100644 js/table/extensions/key-events/bootstrap-table-key-events.min.js
 create mode 100644 js/table/extensions/mobile/bootstrap-table-mobile.js
 create mode 100644 js/table/extensions/mobile/bootstrap-table-mobile.min.js
 create mode 100644 js/table/extensions/multiple-search/bootstrap-table-multiple-search.js
 create mode 100644 js/table/extensions/multiple-search/bootstrap-table-multiple-search.min.js
 create mode 100644 js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.js
 create mode 100644 js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js
 create mode 100644 js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.js
 create mode 100644 js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js
 create mode 100644 js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.js
 create mode 100644 js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js
 create mode 100644 js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.css
 create mode 100644 js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.js
 create mode 100644 js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js
 create mode 100644 js/table/extensions/resizable/bootstrap-table-resizable.js
 create mode 100644 js/table/extensions/resizable/bootstrap-table-resizable.min.js
 create mode 100644 js/table/extensions/sorting/bootstrap-table_natural-sorting.min.js
 create mode 100644 js/table/extensions/toolbar/bootstrap-table-toolbar.js
 create mode 100644 js/table/extensions/toolbar/bootstrap-table-toolbar.min.js
 create mode 100644 js/table/locale/bootstrap-table-af-ZA.js
 create mode 100644 js/table/locale/bootstrap-table-af-ZA.min.js
 create mode 100644 js/table/locale/bootstrap-table-ar-SA.js
 create mode 100644 js/table/locale/bootstrap-table-ar-SA.min.js
 create mode 100644 js/table/locale/bootstrap-table-ca-ES.js
 create mode 100644 js/table/locale/bootstrap-table-ca-ES.min.js
 create mode 100644 js/table/locale/bootstrap-table-cs-CZ.js
 create mode 100644 js/table/locale/bootstrap-table-cs-CZ.min.js
 create mode 100644 js/table/locale/bootstrap-table-da-DK.js
 create mode 100644 js/table/locale/bootstrap-table-da-DK.min.js
 create mode 100644 js/table/locale/bootstrap-table-de-DE.js
 create mode 100644 js/table/locale/bootstrap-table-de-DE.min.js
 create mode 100644 js/table/locale/bootstrap-table-el-GR.js
 create mode 100644 js/table/locale/bootstrap-table-el-GR.min.js
 create mode 100644 js/table/locale/bootstrap-table-en-US.js
 create mode 100644 js/table/locale/bootstrap-table-en-US.min.js
 create mode 100644 js/table/locale/bootstrap-table-es-AR.js
 create mode 100644 js/table/locale/bootstrap-table-es-AR.min.js
 create mode 100644 js/table/locale/bootstrap-table-es-CR.js
 create mode 100644 js/table/locale/bootstrap-table-es-CR.min.js
 create mode 100644 js/table/locale/bootstrap-table-es-ES.js
 create mode 100644 js/table/locale/bootstrap-table-es-ES.min.js
 create mode 100644 js/table/locale/bootstrap-table-es-MX.js
 create mode 100644 js/table/locale/bootstrap-table-es-MX.min.js
 create mode 100644 js/table/locale/bootstrap-table-es-NI.js
 create mode 100644 js/table/locale/bootstrap-table-es-NI.min.js
 create mode 100644 js/table/locale/bootstrap-table-es-SP.js
 create mode 100644 js/table/locale/bootstrap-table-es-SP.min.js
 create mode 100644 js/table/locale/bootstrap-table-et-EE.js
 create mode 100644 js/table/locale/bootstrap-table-et-EE.min.js
 create mode 100644 js/table/locale/bootstrap-table-fa-IR.js
 create mode 100644 js/table/locale/bootstrap-table-fa-IR.min.js
 create mode 100644 js/table/locale/bootstrap-table-fr-BE.js
 create mode 100644 js/table/locale/bootstrap-table-fr-BE.min.js
 create mode 100644 js/table/locale/bootstrap-table-fr-FR.js
 create mode 100644 js/table/locale/bootstrap-table-fr-FR.min.js
 create mode 100644 js/table/locale/bootstrap-table-hr-HR.js
 create mode 100644 js/table/locale/bootstrap-table-hr-HR.min.js
 create mode 100644 js/table/locale/bootstrap-table-hu-HU.js
 create mode 100644 js/table/locale/bootstrap-table-hu-HU.min.js
 create mode 100644 js/table/locale/bootstrap-table-it-IT.js
 create mode 100644 js/table/locale/bootstrap-table-it-IT.min.js
 create mode 100644 js/table/locale/bootstrap-table-ja-JP.js
 create mode 100644 js/table/locale/bootstrap-table-ja-JP.min.js
 create mode 100644 js/table/locale/bootstrap-table-ka-GE.js
 create mode 100644 js/table/locale/bootstrap-table-ka-GE.min.js
 create mode 100644 js/table/locale/bootstrap-table-ko-KR.js
 create mode 100644 js/table/locale/bootstrap-table-ko-KR.min.js
 create mode 100644 js/table/locale/bootstrap-table-ms-MY.js
 create mode 100644 js/table/locale/bootstrap-table-ms-MY.min.js
 create mode 100644 js/table/locale/bootstrap-table-nb-NO.js
 create mode 100644 js/table/locale/bootstrap-table-nb-NO.min.js
 create mode 100644 js/table/locale/bootstrap-table-nl-NL.js
 create mode 100644 js/table/locale/bootstrap-table-nl-NL.min.js
 create mode 100644 js/table/locale/bootstrap-table-pl-PL.js
 create mode 100644 js/table/locale/bootstrap-table-pl-PL.min.js
 create mode 100644 js/table/locale/bootstrap-table-pt-BR.js
 create mode 100644 js/table/locale/bootstrap-table-pt-BR.min.js
 create mode 100644 js/table/locale/bootstrap-table-pt-PT.js
 create mode 100644 js/table/locale/bootstrap-table-pt-PT.min.js
 create mode 100644 js/table/locale/bootstrap-table-ro-RO.js
 create mode 100644 js/table/locale/bootstrap-table-ro-RO.min.js
 create mode 100644 js/table/locale/bootstrap-table-ru-RU.js
 create mode 100644 js/table/locale/bootstrap-table-ru-RU.min.js
 create mode 100644 js/table/locale/bootstrap-table-sk-SK.js
 create mode 100644 js/table/locale/bootstrap-table-sk-SK.min.js
 create mode 100644 js/table/locale/bootstrap-table-sv-SE.js
 create mode 100644 js/table/locale/bootstrap-table-sv-SE.min.js
 create mode 100644 js/table/locale/bootstrap-table-th-TH.js
 create mode 100644 js/table/locale/bootstrap-table-th-TH.min.js
 create mode 100644 js/table/locale/bootstrap-table-tr-TR.js
 create mode 100644 js/table/locale/bootstrap-table-tr-TR.min.js
 create mode 100644 js/table/locale/bootstrap-table-uk-UA.js
 create mode 100644 js/table/locale/bootstrap-table-uk-UA.min.js
 create mode 100644 js/table/locale/bootstrap-table-ur-PK.js
 create mode 100644 js/table/locale/bootstrap-table-ur-PK.min.js
 create mode 100644 js/table/locale/bootstrap-table-vi-VN.js
 create mode 100644 js/table/locale/bootstrap-table-vi-VN.min.js
 create mode 100644 js/table/locale/bootstrap-table-zh-CN.js
 create mode 100644 js/table/locale/bootstrap-table-zh-CN.min.js
 create mode 100644 js/table/locale/bootstrap-table-zh-TW.js
 create mode 100644 js/table/locale/bootstrap-table-zh-TW.min.js
 create mode 100644 morfeusz/morfeusz.css
 create mode 100644 morfeusz/morfeusz.js
 create mode 100644 omwn/omwn.js
 create mode 100644 plwordnet/lang-pl-32.png
 create mode 100644 plwordnet/plwordnet.css
 create mode 100644 plwordnet/plwordnet.js
 create mode 100644 spxvi/css/haslo.css
 create mode 100644 spxvi/css/tipsy.css
 create mode 100644 spxvi/fonts/PalemMUFI-bd.ttf
 create mode 100644 spxvi/fonts/PalemMUFI-it.ttf
 create mode 100644 spxvi/fonts/PalemMUFI-nm.ttf
 create mode 100644 spxvi/img/icons/page_white_text.png
 create mode 100644 spxvi/img/icons/table.png
 create mode 100644 spxvi/js/spxvi.js
 create mode 100644 spxvii/img/kolo.gif
 create mode 100644 spxvii/img/romb.gif
 create mode 100644 spxvii/img/trojkat.gif
 create mode 100644 spxvii/spxvii.css
 create mode 100644 spxvii/spxvii.js
 create mode 100644 walenty/walenty.css
 create mode 100644 walenty/walenty.js
 create mode 100644 word2vec/jqcloud-1.0.4.js
 create mode 100644 word2vec/jqcloud.css
 create mode 100644 word2vec/jqcloud.js
 create mode 100644 word2vec/jqcloud.min.css
 create mode 100644 word2vec/jqcloud.min.js
 create mode 100644 word2vec/word2vec.js

diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..b9189a8
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,8 @@
+<IfModule mod_rewrite.c>
+  RewriteEngine On
+  RewriteBase /
+  RewriteRule ^index\.shtml$ - [L]
+  RewriteCond %{REQUEST_FILENAME} !-f
+  RewriteCond %{REQUEST_FILENAME} !-d
+  RewriteRule . /index.shtml [L]
+</IfModule>
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..e3999b0
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,22 @@
+FROM httpd:2.4-alpine
+
+ADD *.conf /usr/local/apache2/conf/
+#ADD css /usr/local/apache2/htdocs/css
+ADD css /usr/local/apache2/htdocs/css
+ADD eswil /usr/local/apache2/htdocs/eswil
+ADD hask /usr/local/apache2/htdocs/hask
+ADD img /usr/local/apache2/htdocs/img
+ADD js /usr/local/apache2/htdocs/js
+ADD morfeusz /usr/local/apache2/htdocs/morfeusz
+ADD omwn /usr/local/apache2/htdocs/omwn
+ADD plwordnet /usr/local/apache2/htdocs/plwordnet
+ADD spxvi /usr/local/apache2/htdocs/spxvi
+ADD spxvii /usr/local/apache2/htdocs/spxvii
+ADD walenty /usr/local/apache2/htdocs/walenty
+ADD word2vec /usr/local/apache2/htdocs/word2vec
+
+ADD *.shtml  /usr/local/apache2/htdocs/
+ADD .htaccess /usr/local/apache2/htdocs/
+
+
+
diff --git a/apache2.conf b/apache2.conf
new file mode 100644
index 0000000..baf6d8a
--- /dev/null
+++ b/apache2.conf
@@ -0,0 +1,221 @@
+# This is the main Apache server configuration file.  It contains the
+# configuration directives that give the server its instructions.
+# See http://httpd.apache.org/docs/2.4/ for detailed information about
+# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
+# hints.
+#
+#
+# Summary of how the Apache 2 configuration works in Debian:
+# The Apache 2 web server configuration in Debian is quite different to
+# upstream's suggested way to configure the web server. This is because Debian's
+# default Apache2 installation attempts to make adding and removing modules,
+# virtual hosts, and extra configuration directives as flexible as possible, in
+# order to make automating the changes and administering the server as easy as
+# possible.
+
+# It is split into several files forming the configuration hierarchy outlined
+# below, all located in the /etc/apache2/ directory:
+#
+#	/etc/apache2/
+#	|-- apache2.conf
+#	|	`--  ports.conf
+#	|-- mods-enabled
+#	|	|-- *.load
+#	|	`-- *.conf
+#	|-- conf-enabled
+#	|	`-- *.conf
+# 	`-- sites-enabled
+#	 	`-- *.conf
+#
+#
+# * apache2.conf is the main configuration file (this file). It puts the pieces
+#   together by including all remaining configuration files when starting up the
+#   web server.
+#
+# * ports.conf is always included from the main configuration file. It is
+#   supposed to determine listening ports for incoming connections which can be
+#   customized anytime.
+#
+# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/
+#   directories contain particular configuration snippets which manage modules,
+#   global configuration fragments, or virtual host configurations,
+#   respectively.
+#
+#   They are activated by symlinking available configuration files from their
+#   respective *-available/ counterparts. These should be managed by using our
+#   helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See
+#   their respective man pages for detailed information.
+#
+# * The binary is called apache2. Due to the use of environment variables, in
+#   the default configuration, apache2 needs to be started/stopped with
+#   /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not
+#   work with the default configuration.
+
+
+# Global configuration
+#
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE!  If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the Mutex documentation (available
+# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);
+# you will save yourself a lot of trouble.
+#
+# Do NOT add a slash at the end of the directory path.
+#
+#ServerRoot "/etc/apache2"
+
+#
+# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
+#
+Mutex file:${APACHE_LOCK_DIR} default
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+# This needs to be set in /etc/apache2/envvars
+#
+PidFile ${APACHE_PID_FILE}
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 5
+
+
+# These need to be set in /etc/apache2/envvars
+User ${APACHE_RUN_USER}
+Group ${APACHE_RUN_GROUP}
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here.  If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog ${APACHE_LOG_DIR}/error.log
+
+#
+# LogLevel: Control the severity of messages logged to the error_log.
+# Available values: trace8, ..., trace1, debug, info, notice, warn,
+# error, crit, alert, emerg.
+# It is also possible to configure the log level for particular modules, e.g.
+# "LogLevel info ssl:warn"
+#
+LogLevel warn
+
+# Include module configuration:
+IncludeOptional mods-enabled/*.load
+IncludeOptional mods-enabled/*.conf
+
+# Include list of ports to listen on
+Include ports.conf
+
+
+# Sets the default security model of the Apache2 HTTPD server. It does
+# not allow access to the root filesystem outside of /usr/share and /var/www.
+# The former is used by web applications packaged in Debian,
+# the latter may be used for local directories served by the web server. If
+# your system is serving content from a sub-directory in /srv you must allow
+# access here, or in any related virtual host.
+<Directory />
+	Options FollowSymLinks
+	AllowOverride None
+	Require all denied
+</Directory>
+
+<Directory /usr/share>
+	AllowOverride None
+	Require all granted
+</Directory>
+
+<Directory /var/www/>
+	Options Indexes FollowSymLinks
+	AllowOverride None
+	Require all granted
+</Directory>
+
+#<Directory /srv/>
+#	Options Indexes FollowSymLinks
+#	AllowOverride None
+#	Require all granted
+#</Directory>
+
+
+
+
+# AccessFileName: The name of the file to look for in each directory
+# for additional configuration directives.  See also the AllowOverride
+# directive.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess and .htpasswd files from being
+# viewed by Web clients.
+#
+<FilesMatch "^\.ht">
+	Require all denied
+</FilesMatch>
+
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive.
+#
+# These deviate from the Common Log Format definitions in that they use %O
+# (the actual bytes sent including headers) instead of %b (the size of the
+# requested file), because the latter makes it impossible to detect partial
+# requests.
+#
+# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
+# Use mod_remoteip instead.
+#
+LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
+LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%h %l %u %t \"%r\" %>s %O" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+# Include of directories ignores editors' and dpkg's backup files,
+# see README.Debian for details.
+
+# Include generic snippets of statements
+IncludeOptional conf-enabled/*.conf
+
+# Include the virtual host configurations:
+IncludeOptional sites-enabled/*.conf
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
diff --git a/css/graph-creator.css b/css/graph-creator.css
new file mode 100644
index 0000000..15d48ff
--- /dev/null
+++ b/css/graph-creator.css
@@ -0,0 +1,249 @@
+#toolbox{
+    position: absolute;
+    top: 0;
+    margin-left: 25%;
+    width: 50%;
+    border: 2px solid #EEEEEE;
+    border-radius: 5px;
+    z-index: 5;
+    transition: all 0.3s;
+    padding: 7px 20px 20px 20px;
+    margin-bottom: 10px;
+}
+#toolbox:hover{
+    background-color: #fff;
+}
+#toolbox input{
+    background-color: inherit;
+}
+#toolbox:hover input{
+    min-width: 300px;
+    opacity: 1;
+}
+#toolbox:hover{
+    opacity: 1;
+    cursor: pointer;
+    /*padding-bottom: 40px;*/
+}
+
+#inspected-word{
+    min-width: 200px;
+    min-height: 40px;
+    font-size: 16px;
+    color: #000;
+    padding: 10px;
+    border: none;
+    border-bottom: solid 3px #c9c9c9;
+    transition: min-width 0.3s;
+}
+
+#inspected-word-btn {
+    min-height: 40px;
+    background-color: white;
+    color: black;
+    border: 2px solid #555555;
+    -webkit-transition-duration: 0.4s; /* Safari */
+    transition-duration: 0.4s;
+}
+
+#inspected-word-btn:hover {
+    background-color: #555555; /* Green */
+    color: white;
+}
+
+#hidden-file-upload{
+    display: none;
+}
+
+#download-input{
+    margin: 0 0.5em;
+}
+
+#possible-senses{
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+    max-height: 400px;
+    overflow-y: scroll;
+}
+#possible-senses li{
+    padding: 5px;
+}
+#possible-senses li:hover{
+    background-color: #eee;
+}
+
+.conceptG text{
+    pointer-events: none;
+}
+
+marker{
+    fill: #333;
+}
+
+g.conceptG circle.inner-node{
+    fill: #aaffaf;
+    /*stroke: #333;*/
+    /*stroke-width: 2px;*/
+}
+
+/*g.conceptG:hover circle{*/
+    /*fill: rgb(200, 238, 241);*/
+/*}*/
+
+/*g.selected circle{*/
+    /*fill: rgb(250, 232, 255);*/
+/*}*/
+/*g.selected:hover circle{*/
+    /*fill: rgb(250, 232, 255);*/
+/*}*/
+
+path.link {
+    fill: none;
+    /*stroke: #000;*/
+    stroke-width: 2px;
+    cursor: default;
+}
+
+path.dotted {
+    stroke-dasharray: 6, 3;
+}
+
+path.link:hover{
+    stroke: rgb(94, 196, 204);
+}
+
+g.connect-node circle{
+    fill: #BEFFFF;
+}
+
+path.link.hidden{
+    stroke-width: 0;
+}
+
+path.link.selected {
+    stroke: rgb(229, 172, 247);
+}
+
+polyline.expanded {
+  fill: red;
+}
+
+polyline.inner-node,
+circle.inner-node {
+    stroke: black;
+    stroke-width: 1px;
+}
+
+/* marking selected nodes */
+g.node-selected polyline.inner-node,
+g.node-selected circle.inner-node {
+    fill: rgb(255,255,48);
+}
+
+text.relation-text{
+    font-size: .8em;
+}
+
+.hidden-list{
+    background-color: whitesmoke;
+    overflow-y: scroll;
+    min-width: 50px;
+    max-height: 200px;
+}
+.hidden-list ul {
+    list-style: none;
+    padding-left: 0;
+}
+
+.hidden-list ul li {
+    cursor: pointer;
+    padding: 5px;
+}
+.hidden-list ul li:hover {
+    background-color: #aaa;
+}
+
+#node-tooltip{
+    position: absolute;
+    color: #fff;
+    text-align: center;
+    padding: 10px;
+    font: 12px sans-serif;
+    background: black;
+    border: 0px;
+    border-radius: 8px;
+    pointer-events: none;
+}
+
+#node-tooltip::after {
+    content: " ";
+    opacity: inherit;
+    position: absolute;
+    top: 50%;
+    right: 100%; /* To the left of the tooltip */
+    margin-top: -5px;
+    border-width: 5px;
+    border-style: solid;
+    border-color: transparent black transparent transparent;
+}
+
+#loader {
+    border: 5px solid #f3f3f3;
+    -webkit-animation: spin 1s linear infinite;
+    animation: spin 1s linear infinite;
+    border-top: 5px solid #555;
+    border-radius: 50%;
+    width: 50px;
+    height: 50px;
+}
+
+@keyframes spin {
+    0% { transform: rotate(0deg); }
+    100% { transform: rotate(360deg); }
+}
+
+#download-picture {
+    position: absolute;
+    bottom: 10px;
+    right: 10px;
+    border: none;
+    background-color: transparent;
+    background-image: url('../img/download-icon.png');
+    background-size: 50px 50px;
+    height: 50px;
+    width: 55px;
+}
+#download-picture:hover{
+    background-size: 55px 55px;
+    height: 55px;
+    width: 60px;
+}
+
+
+.inner-graph-container{
+    background-color: white;
+}
+
+
+/*
+    For minimap
+    =========================
+*/
+
+.canvas {
+    overflow: hidden;
+    background-color: rgba(236, 236, 236, 0.9);
+
+    -webkit-box-shadow: 0px 0px 15px 3px rgba(0,0,0,0.5);
+    -moz-box-shadow: 0px 0px 15px 3px rgba(0,0,0,0.5);
+    box-shadow: 0px 0px 15px 3px rgba(0,0,0,0.5);
+}
+
+.canvas .minimap .frame .background {
+    stroke: #111111;
+    stroke-width: 4px;
+    fill-opacity: 0.1;
+    fill: #000000;
+    cursor: move;
+}
\ No newline at end of file
diff --git a/css/languages.css b/css/languages.css
new file mode 100644
index 0000000..1924268
--- /dev/null
+++ b/css/languages.css
@@ -0,0 +1,42 @@
+select#languages {
+  padding: 2px 5px;
+  margin: 7px 15px 0 5px;
+  color: white;
+  background-color: inherit;
+  border: none;
+  font-size: 20px;
+  font-weight: bold;
+  cursor: pointer;
+
+  background-repeat: no-repeat;
+  background-image: url('../img/lang-pl-32.png');
+  background-position: left center;
+
+  /* Chrome + Firefox */
+  -moz-appearance: none;
+  -webkit-appearance: none;
+  appearance: none;
+}
+
+/* IE10 */
+select#languages::-ms-expand {
+  display: none;
+}
+
+select#languages:active,
+select#languages:focus {
+  outline: none;
+}
+
+select#languages option {
+  color: white;
+  background-color: black;
+}
+
+select#languages option:before,
+select#languages option:after {
+  content: "*";
+  color: white;
+  background-color: red;
+  padding: 2px;
+}
\ No newline at end of file
diff --git a/css/modal.css b/css/modal.css
new file mode 100644
index 0000000..7e37244
--- /dev/null
+++ b/css/modal.css
@@ -0,0 +1,90 @@
+.modal .modal-content {
+  width: 100%;
+  margin: 15% auto;
+  background-color: #FEFEFE;
+  border: none;
+  border-radius: 0;
+}
+
+.modal .modal-content.modal-content-nav {
+  width: 60%;
+}
+
+.modal .modal-content .modal-header {
+  padding: 5px;
+  text-align: center;
+  letter-spacing: 1px;
+  font-family: 'Saira Semi Condensed', sans-serif;
+  color: white;
+  background-color: #7F6CAF;
+  text-transform: uppercase;
+  border: none;
+  -webkit-box-shadow: 0px 0px 6px #5D4A8D;
+  -moz-box-shadow: 0px 0px 6px #5D4A8D;
+  box-shadow: 0px 0px 6px #5D4A8D;
+}
+
+.modal .modal-content .modal-header .close {
+  color: white;
+  float: right;
+  font-size: 28px;
+  font-weight: bold;
+}
+
+.modal .modal-content .modal-header .close:hover,
+.modal .modal-content .modal-header .close:focus {
+  color: black;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+.modal .modal-content .modal-body {
+  padding: 20px 10px;
+}
+
+.modal .modal-content .modal-body p {
+  margin: 0;
+}
+
+.modal .modal-content .modal-body a {
+  color: #337AB7;
+  border-bottom: 1px solid #337AB7;
+}
+
+.modal .modal-content .modal-body a:hover {
+  text-decoration: none;
+}
+
+.modal .modal-content .modal-body .author {
+  font-size: 12px;
+  padding-bottom: 10px;
+  letter-spacing: 1px;
+}
+
+.modal .modal-content .modal-body .description {
+  font-size: 16px;
+}
+
+.modal .modal-content .modal-footer {
+  padding: 15px;
+  text-align: center;
+  border: none;
+  background-color: #7F6CAF;
+  color: white;
+  letter-spacing: 1px;
+  -webkit-box-shadow: 0px 0px 6px #5D4A8D;
+  -moz-box-shadow: 0px 0px 6px #5D4A8D;
+  box-shadow: 0px 0px 6px #5D4A8D;
+}
+
+@media (max-width: 767px) {
+  .modal .modal-content {
+    margin: 30% auto 15%;
+  }
+}
+
+@media (max-width: 1200px) {
+  .modal .modal-content {
+    width: 80%;
+  }
+}
\ No newline at end of file
diff --git a/css/nav.css b/css/nav.css
new file mode 100644
index 0000000..5fb6bbf
--- /dev/null
+++ b/css/nav.css
@@ -0,0 +1,65 @@
+.container-fluid-nav-adjust {
+  margin-top: 35px;
+  transition: .4s all;
+}
+
+nav.navbar-main {
+  width: 100%;
+  background-color: #F9F9F9;
+  padding: 0;
+  margin: 0;
+  font-size: 14px;
+  border-bottom: 2px solid #41423A;
+  position: fixed;
+  top: 0;
+  z-index: 1;
+  -webkit-box-shadow: 0px 1px 1px #CCC;
+  -moz-box-shadow: 0px 1px 1px #CCC;
+  box-shadow: 0px 1px 1px #CCC;
+}
+
+nav.navbar-main .navbar-header .navbar-toggle span {
+  background-color: #41423A;
+}
+
+nav.navbar-main .navbar-collapse ul.navbar-nav {
+  float: right;
+  height: 71px;
+
+  display: -ms-flex;
+  display: -webkit-flex;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+nav.navbar-main .navbar-collapse .navbar-nav li a {
+  padding: 15px 10px;
+  font-size: 16px;
+  font-weight: bold;
+  text-transform: uppercase;
+  text-decoration: none;
+}
+
+nav.navbar-main .navbar-collapse .navbar-nav .li-animation a {
+  color: #41423A;
+  letter-spacing: 1px;
+  -webkit-transition: 0.5s;
+  -moz-transition: 0.5s;
+  -o-transition: 0.5s;
+  transition: 0.5s;
+}
+
+nav.navbar-main .navbar-collapse .navbar-nav .li-animation a:hover {
+  color: #74756D;
+}
+
+.row-nav-adjust {
+  margin-top: 85px !important;
+}
+
+@media (min-width: 768px) {
+  .container-fluid-nav-adjust {
+    margin-top: 50px;
+  }
+}
\ No newline at end of file
diff --git a/css/selectmenu-nav.css b/css/selectmenu-nav.css
new file mode 100644
index 0000000..7f7328b
--- /dev/null
+++ b/css/selectmenu-nav.css
@@ -0,0 +1,69 @@
+.ui-widget.ui-widget-content {
+  border: 2px solid #41423A;
+}
+.ui-selectmenu-menu .ui-menu {
+  padding: 0;
+}
+.ui-selectmenu-menu .ui-menu.customicons .ui-menu-item-wrapper {
+  padding: 0.5em 0 0.5em 3em;
+  color: #41423A;
+  background-color: #F9F9F9;
+  border: none;
+  font-weight: bold;
+}
+.ui-menu .ui-state-focus,
+.ui-menu .ui-state-active {
+  margin: 0;
+}
+.ui-selectmenu-menu .ui-menu.customicons .ui-menu-item .ui-icon {
+  height: 24px;
+  width: 24px;
+  top: 0.1em;
+  margin-left: 10px;
+}
+.ui-selectmenu-menu .ui-menu.customicons .ui-menu-item-wrapper:active {
+  border: none;
+}
+.ui-icon.pl {
+  background: url("../img/lang-pl-32.png") 0 0 no-repeat;
+  background-size: cover;
+}
+.ui-icon.en {
+  background: url("../img/lang-en-32.png") 0 0 no-repeat;
+  background-size: cover;
+}
+#languages-button {
+  display: inline-block;
+  width: auto;
+  border: none;
+  padding: 15px 15px 15px 35px;
+  margin-right: 50px;
+  font-size: 16px;
+  font-weight: bold;
+  color: #41423A;
+  background-color: transparent;
+
+  background-repeat: no-repeat;
+  background-image: url("../img/lang-pl-32.png");
+  background-position: left;
+}
+#languages-button:active,
+#languages-button:focus {
+  outline: none;
+  box-shadow: none;
+  border-color: transparent;
+}
+.ui-selectmenu-menu .ui-menu-item:hover div {
+  background-color: #E8E8E8E8 !important;
+}
+.ui-button:active .ui-icon,
+.ui-button:focus .ui-icon,
+.ui-button:hover .ui-icon {
+  background-image: url("http://code.jquery.com/ui/1.12.1/themes/base/images/ui-icons_777777_256x240.png");
+}
+.ui-button .ui-selectmenu-text {
+  transition: .5s all;
+}
+.ui-button:hover .ui-selectmenu-text {
+  color: #74756D;
+}
\ No newline at end of file
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..a9fc2aa
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,633 @@
+* {
+  margin: 0;
+  padding: 0;
+  box-sizing: border-box;
+}
+
+#tooltip-test {
+  color: white;
+  /*background-color: #63C542;*/
+  background-color: black;
+  /*display: inline-block;*/
+  display: none;
+  padding: 10px;
+  position: fixed;
+  z-index: 1234;
+  left: 10%;
+}
+
+#tooltip-test::after {
+  content: "";
+  position: absolute;
+  top: 100%;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px;
+  border-style: solid;
+  /*border-color: #63C542 transparent transparent transparent;*/
+  border-color: black transparent transparent transparent;
+}
+
+.my-tooltip {
+  position: relative;
+  display: inline-block;
+  border-bottom: 1px dotted black;
+}
+
+.my-tooltip .my-tooltiptext {
+  visibility: hidden;
+  width: 120px;
+  background-color: #555;
+  color: #fff;
+  text-align: center;
+  padding: 5px 0;
+  border-radius: 6px;
+
+  /* Position the tooltip text */
+  position: absolute;
+  z-index: 1;
+  bottom: 125%;
+  left: 50%;
+  margin-left: -60px;
+
+  /* Fade in tooltip */
+  opacity: 0;
+  transition: opacity 0.3s;
+}
+
+.my-tooltip .my-tooltiptext::after {
+  content: "";
+  position: absolute;
+  top: 100%;
+  left: 50%;
+  margin-left: -5px;
+  border-width: 5px;
+  border-style: solid;
+  border-color: #555 transparent transparent transparent;
+}
+
+.my-tooltip:hover .my-tooltiptext {
+  visibility: visible;
+  opacity: 1;
+}
+
+.tooltip-inner {
+  color: white;
+  background-color: black;
+}
+
+.tooltip-inner a {
+  color: #84A3BD;
+  color: #5AB4FF;
+}
+
+.hand {
+  cursor: pointer;
+}
+
+table th {
+  letter-spacing: 1px;
+}
+
+body {
+  color: black;
+  font-family: 'Roboto', sans-serif;
+}
+
+body.en :lang(pl) {
+  display: none !important;
+}
+
+body.pl :lang(en) {
+  display: none !important;
+}
+
+.decoration-box {
+  padding: 1px 0;
+  background-color: white;
+  cursor: default !important;
+}
+
+.decoration {
+  border-top: 1px solid #EEE;
+  position: relative;
+  height: 1px;
+  margin: 20px 60px 20px 60px;
+  cursor: default !important;
+}
+
+.hamburger-expanded {
+  margin-top: 200px !important;
+}
+
+.ui-front {
+  z-index: 1000;
+}
+
+.expand-content {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+a:focus,
+a:hover {
+  text-decoration: none;
+}
+
+#lang-box,
+#synset-box {
+  width: 100%;
+  display: flex;
+  align-items: center;
+}
+
+.container-fluid {
+  padding: 0;
+}
+
+.make-space {
+  padding: 1% 0;
+  background-color: white;
+}
+
+.table-bordered>tbody>tr>td,
+.table-bordered>tbody>tr>th,
+.table-bordered>tfoot>tr>td,
+.table-bordered>tfoot>tr>th,
+.table-bordered>thead>tr>td,
+.table-bordered>thead>tr>th {
+  border: 2px solid #EAE5E5;
+}
+
+.table>tbody>tr>td,
+.table>tbody>tr>th,
+.table>tfoot>tr>td,
+.table>tfoot>tr>th,
+.table>thead>tr>td,
+.table>thead>tr>th {
+  border-top: 2px solid #EAE5E5;
+  border-bottom: none;
+}
+
+nav.navbar-main {
+  width: 100%;
+  background-color: white;
+  padding: 10px 0;
+  margin: 0;
+  font-size: 14px;
+  border-bottom: 3px solid #41423A;
+}
+
+nav.navbar-main .navbar-header {
+  text-align: center;
+  padding: 10px 0;
+}
+
+nav.navbar-main .navbar-header button.navbar-toggle {
+  float: none;
+  border: none;
+  margin: 0 auto;
+}
+
+nav.navbar-main .navbar-header button.navbar-toggle:link,
+nav.navbar-main .navbar-header button.navbar-toggle:visited,
+nav.navbar-main .navbar-header button.navbar-toggle:hover,
+nav.navbar-main .navbar-header button.navbar-toggle:active,
+nav.navbar-main .navbar-header button.navbar-toggle:focus {
+  background-color: inherit;
+}
+
+nav.navbar-main .navbar-collapse {
+  border: none;
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+
+nav.navbar-main .navbar-collapse a.logo {
+  float: left;
+  margin-left: 4%;
+}
+
+nav.navbar-main .navbar-collapse ul.navbar-nav {
+  float: right;
+  margin-right: 4%;
+  height: 71px;
+
+  display: -ms-flex;
+  display: -webkit-flex;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+nav.navbar-main .navbar-collapse .navbar-nav li a {
+  color: black;
+  padding: 15px 10px;
+  font-size: 16px;
+  font-weight: bold;
+  text-transform: uppercase;
+  text-decoration: none;
+}
+
+nav.navbar-main .navbar-collapse .navbar-nav .li-animation a {
+  color: #41423A;
+  letter-spacing: 1px;
+  -webkit-transition: 0.5s;
+  -moz-transition: 0.5s;
+  -o-transition: 0.5s;
+  transition: 0.5s;
+}
+
+nav.navbar-main .navbar-collapse .navbar-nav .li-animation a:hover {
+  color: #74756D;
+}
+
+.container-fluid#hamburger-scroll-down a img {
+  display: block;
+  margin: 100px auto 10px auto;
+}
+
+section#options {
+  background-color: #F9F9F9;
+  padding: 2% 0 1% 0;
+}
+
+section#options .container-fluid {
+  width: 70%;
+  padding: 20px;
+}
+
+section#options .container-fluid .row div[class^="col"] {
+  margin: 0;
+  padding: 0;
+}
+
+section#options .container-fluid .row h1 {
+  margin: 0;
+  padding: 0 0 2% 0;
+  color: #41423A;
+  background-color: transparent;
+  text-align: center;
+  font-size: 30px;
+  font-family: 'Saira Semi Condensed', sans-serif;
+}
+
+section#options .container-fluid .row .options-box {
+  display: -ms-flex;
+  display: -webkit-flex;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 5px;
+}
+
+section#options .container-fluid .row p {
+  margin: 0;
+  padding: 0 10px 0 0;
+  color: #41423A;
+  font-size: 12px;
+  font-weight: bold;
+  text-align: right;
+  text-transform: uppercase;
+  letter-spacing: 1px;
+}
+
+section#options .container-fluid .row select,
+section#options .container-fluid .row input {
+  color: black;
+  background-color: white;
+  display: inline-block;
+  width: 100%;
+  border: 2px solid black;
+  border-radius: 0;
+  box-shadow: none;
+  box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
+
+section#options .container-fluid .row select {
+  cursor: pointer;
+  padding-right: 40px;
+}
+
+section#options .container-fluid .row .select-wrapper {
+  width: 100%;
+  margin: 0 auto;
+  text-align: center;
+  display: inline-block;
+  position: relative;
+}
+
+section#options .container-fluid .row .select-wrapper:before {
+  content: '\e114';
+  font-family: Glyphicons Halflings;
+  pointer-events: none;
+  color: #606060;
+  font-size: 16px;
+  position: absolute;
+  right: 12px;
+  top: 7px;
+}
+
+section#options .container-fluid .row .select-wrapper:after {
+  content: '';
+  height: 100%;
+  pointer-events: none;
+  border-left: 2px solid black;
+  position: absolute;
+  right: 40px;
+  top: 0;
+}
+
+section#options .container-fluid .row button {
+  padding: 3px 11px;
+  margin: 2.5% auto 0% auto;
+  color: white;
+  background-color: #63C542;
+  border: 5px solid #63C542;
+  border-radius: 0;
+  transition: background-color 0.5s, color 0.5s;
+}
+
+section#options .container-fluid .row button:hover {
+  color: #63C542;
+  background-color: white;
+}
+
+section#options .container-fluid .row button:active,
+section#options .container-fluid .row button:focus {
+  outline: none;
+}
+
+section#options .container-fluid .row button span {
+  font-size: 18px;
+  font-weight: 700;
+  font-family: 'Saira Semi Condensed', sans-serif;
+  text-transform: uppercase;
+  letter-spacing: 3px;
+}
+
+#lexp_results {
+  background-color: #F9F9F9;
+  text-align: center;
+}
+
+#lexp_results div.expand-content {
+  cursor: pointer;
+  position: relative;
+  transition: all 1s;
+}
+
+#lexp_results div.expand-content:hover {
+  background-color: #EAE5E5;
+}
+
+#lexp_results div h1 {
+  display: inline-block;
+  padding: 0 10px;
+  color: #41423A;
+  font-size: 30px;
+  font-family: 'Saira Semi Condensed', sans-serif;
+
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+#lexp_results .img-container {
+  max-height: 50px;
+  display: inline-block;
+  position: absolute;
+  left: 2%;
+}
+
+#lexp_results .img-container img {
+  margin: 5px 0;
+}
+
+#handlebars_resource_index {
+  display: none;
+}
+
+#lexpelement_spxvi {
+  font-family: 'Roboto', sans-serif;
+  width: 90%;
+  display: none;
+  margin: 10px auto;
+  padding: 1%;
+  border: 5px solid #E4E4E4;
+  background: url("https://spxvi.edu.pl/static/img/koch_bg97.jpg");
+}
+
+#lexpelement_omwn, .ace_content, #lexpelement_spxvi, .jqcloud {
+  text-align: left;
+}
+
+#lexp_results .ace_editor {
+  width: 100% !important;
+  border: 5px solid #E4E4E4;
+}
+
+#lexp_results .ace_editor .ace_gutter,
+#lexp_results .ace_editor .ace_layer,
+#lexp_results .ace_editor .ace_scroller,
+#lexp_results .ace_editor .ace_scrollbar  {
+  z-index: 0;
+}
+
+#lexp_results .expand-content .glyphicon {
+  top: 0;
+}
+
+#lexp_results .expand-content .copyright,
+#lexp_results .expand-content .help,
+#lexp_results .expand-content .source {
+  font-size: 16px;
+  color: black;
+}
+
+#lexpelement_omwn,
+#lexpelement_plwordnet {
+  text-align: center;
+}
+
+#lexpelement_omwn .table-responsive,
+#lexpelement_plwordnet .table-responsive {
+  width: auto;
+  max-width: 90%;
+  display: inline-block;
+}
+
+#lexpelement_omwn table {
+  border: 5px solid #EAE5E5;
+  margin: 20px 0;
+}
+
+#lexpelement_omwn table thead {
+  background-color: #EAE5E5;
+}
+
+#lexpelement_omwn table tbody tr {
+  background-color: white;
+}
+
+#lexpelement_omwn a.lemma-link {
+  color: #1786C8;
+  letter-spacing: 0.7px;
+}
+
+#lexpelement_word2vec .jqcloud span {
+  font-family: 'Roboto', sans-serif;
+}
+
+#lexpelement_morfeusz .table-responsive {
+  width: 90%;
+  margin: 0 auto;
+}
+
+#lexpelement_plwordnet .table-responsive  table,
+#lexpelement_morfeusz .table-responsive  table {
+  border: 5px solid #EAE5E5;
+  margin: 20px 0;
+}
+
+#lexpelement_plwordnet .table-responsive  table thead,
+#lexpelement_morfeusz .table-responsive  table thead {
+  background-color: #EAE5E5;
+}
+
+#lexpelement_hask .bootstrap-table {
+  width: 90%;
+  margin: 25px auto;
+}
+
+#lexpelement_hask .fixed-table-container {
+  border: none;
+}
+
+#lexpelement_hask .bootstrap-table table {
+  border-radius: 0;
+  border: 5px solid #EAE5E5;
+  text-align: center;
+}
+
+#lexpelement_hask .bootstrap-table table thead {
+  background-color: #EAE5E5;
+}
+
+#lexpelement_hask .bootstrap-table table tbody {
+  background-color: white;
+}
+
+#lexpelement_hask .bootstrap-table table th,
+#lexpelement_hask .bootstrap-table table td {
+  text-align: center;
+}
+
+#lexpelement_hask .bootstrap-table #back-bar {
+  margin: 10px;
+}
+
+#lexpelement_hask .bootstrap-table input,
+#lexpelement_hask .bootstrap-table button,
+#lexpelement_hask .page-first a,
+#lexpelement_hask .page-last a,
+#lexpelement_hask span.btn,
+#lexpelement_hask .dropdown-menu {
+  border-radius: 0;
+}
+
+#lexpelement_hask .bootstrap-table input {
+  transition: all .5s;
+}
+
+#lexpelement_hask .bootstrap-table input:active,
+#lexpelement_hask .bootstrap-table input:focus {
+  border-color: black;
+  outline: none;
+  box-shadow: none;
+}
+
+#lexpelement_spxvi {
+  font-family: 'Liberation Serif', 'Times New Roman', 'serif';
+}
+
+#fleksja div:first-child {
+  padding: 0 10px;
+  position: relative;
+  font-weight: bold;
+}
+
+#flexion_swap {
+  padding: 10px;
+  font-size: 16px;
+  cursor: pointer;
+  position: absolute;
+  right: 0;
+
+  transition: .5s all;
+}
+
+#flexion_swap:hover {
+  color: #7D6C40;
+}
+
+#lexpelement_eswil {
+  width: 90%;
+  margin: 0 auto;
+  text-align: justify;
+}
+
+#lexpelement_eswil #haslo {
+  padding: 25px 0 0;
+}
+
+#lexpelement_eswil #skan {
+  padding: 30px 0;
+}
+
+#lexpelement_eswil #skanDiv {
+  text-align: center;
+}
+
+footer {
+  width: 100%;
+  padding: 10px;
+  font-size: 16px;
+  text-align: center;
+  color: #41423A;
+  background-color: #F5F5F5;
+}
+
+footer p {
+  margin: 0;
+  text-align: center;
+}
+
+@media (max-width: 767px) {
+  section#options .container-fluid {
+    width: 90%;
+  }
+  section#options .container-fluid .row div[class^="col"] {
+    padding: 5px 0;
+  }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+  section#options .container-fluid {
+    width: 80%;
+  }
+  section#options .container-fluid .row div[class^="col"] {
+    padding: 5px 0;
+  }
+  nav.navbar-main .navbar-collapse ul.navbar-nav {
+    margin-right: -4%;
+  }
+}
\ No newline at end of file
diff --git a/eswil/eswil.js b/eswil/eswil.js
new file mode 100644
index 0000000..02f8237
--- /dev/null
+++ b/eswil/eswil.js
@@ -0,0 +1,41 @@
+function Eswil(data) {
+  this.startUp();
+}
+
+Eswil.prototype.startUp = function() {
+  $('#haslo').css('width', '100%');
+  $('#skan').removeAttr('onmousedown');
+}
+
+Eswil.id = "eswil";
+
+$(function () {
+  Element.addVisualizer(Eswil.id, Eswil);
+
+  // First option - click and selection
+  /*$('#lexp_results').on('click', '#haslo', function(event) {
+    let lemma = selectWordOld().toLowerCase(),
+        lang = $('#lang').val();
+
+    $('#tooltip-test').html('<span lang="pl">Przejdź dalej - </span><span lang="en">Proceed - </span><a style="color: #337AB7" href="/lemma/' + lang + '/' + lemma + '">' + lemma + '</a>');
+    $('#tooltip-test').css('display', 'inline-block').css('left', event.originalEvent.clientX - 55).css('top', event.originalEvent.clientY - 55);
+  });*/
+
+  // Second option - only selection
+  $('#lexp_results').on('mouseup', '#haslo', function(event) {
+    let lemma = selectWord() || '',
+        lang = $('#lang').val(),
+        data = new Object();
+
+    data.lemma = lemma;
+    data.lang = lang || 'pl';
+    data.left = event.originalEvent.offsetX || 0;
+    data.top = event.originalEvent.clientY - 55 || 0;
+
+    if (lemma.length < 10) {
+      data.left = event.originalEvent.offsetX + 20 || 0;
+    }
+
+    positionTooltip(data);
+  });
+});
\ No newline at end of file
diff --git a/hask/hask.html b/hask/hask.html
new file mode 100644
index 0000000..0f4014a
--- /dev/null
+++ b/hask/hask.html
@@ -0,0 +1,16 @@
+<div id="div_table_HASK">
+  <table id="table_Hask" class="table_Hask" data-cache="true" data-pagination="true" data-search="true" data-show-columns="true" data-id-field="a" data-filter-control="true">
+    <thead>
+      <tr>
+        <th data-field="lemma" data-filter-control="select" data-sortable="true" data-formatter="Hask.lemmaFormatter"><span lang="pl">Lemat</span><span lang="en">Lemma</span></th>
+        <th data-field="pos" data-filter-control="select" data-sortable="true"  data-filter-control="select">POS</th>
+        <th data-field="a" data-sortable="true" ><span lang="pl">Częstość</span><span lang="en">Frequency</span></th>
+        <th data-field="chisq" data-sortable="true" data-formatter="Hask.realFormatter">ChiSq</th>
+        <th data-field="ttest" data-formatter="Hask.realFormatter">TTest</th>
+        <th data-field="url" data-formatter="Hask.urlFormatter">&nbsp;</th>
+        <!--<th data-field="status"  data-sortable="true" data-formatter="statusFormatter" data-filter-control="select" >Status</th>
+        <th data-field="owner"   data-sortable="true"   data-filter-control="select">Owner</th> -->
+      </tr>
+    </thead>
+  </table>
+</div>
\ No newline at end of file
diff --git a/hask/hask.js b/hask/hask.js
new file mode 100644
index 0000000..2f232c3
--- /dev/null
+++ b/hask/hask.js
@@ -0,0 +1,70 @@
+function Hask(data) {
+  this.data = data;
+  console.log(data);
+}
+
+Hask.wordClick = function(res) {
+  //Lexp.target = "hask";
+  //var target = res.target.href;
+  Lexp.go2URL(res.getAttribute("href"));
+
+  return false;
+}
+
+Hask.realFormatter = function(value) {
+  return value.toFixed(2);
+}
+
+Hask.urlFormatter = function(value) {
+  return '<a href="' + value + '" target="hask"><span data-toggle="tooltip" data-placement="top" class="source glyphicon glyphicon glyphicon-link"></span></a>';
+}
+
+Hask.lemmaFormatter = function(value) {
+  return '<a href="/lemma/pl/' + value + '" onclick="Hask.wordClick(this);return false;">' + value + '</a>';
+}
+
+Hask.prototype.showTypeList = function(tag) {
+  tag.html(Hask.htmllist);
+  var __this = this;
+  $("#table_HaskList").bootstrapTable({data: this.data}).on('click-row.bs.table', function (e, row, $element) {
+    tag.html("");
+    var nag = '<div id="back-bar" class="pull-right search"><span style="cursor:pointer;" class="glyphicon glyphicon-arrow-left"></span>&nbsp;</div>';
+    tag.html(Hask.html);
+
+    $("#table_Hask").bootstrapTable({data: row.collocations, height: 550});
+    // console.log(row.collocations);
+    tag.find(".fixed-table-toolbar").append(nag);
+    tag.find("#back-bar").click(function() {
+      __this.showTypeList(tag);
+      return false;
+    });
+  });
+}
+
+Hask.prototype.showHTML = function(tag) {
+  tag.html("");
+
+  if (this.data.length == 1) {
+    tag.html(Hask.html);
+    $("#table_Hask").bootstrapTable({data: this.data[0].collocations, height: 550});
+  } else {
+    this.showTypeList(tag);
+  }
+}
+
+Hask.id = "hask";
+
+$(function() {
+  Element.addVisualizer(Hask.id, Hask);
+  $.get("/hask/hask.html", {"_": $.now()}, function(data) {
+    // console.log("HASK DATA");
+    // console.log(data);
+    Hask.html = data;
+  });
+
+  $.get("/hask/hasklist.html", {"_": $.now()}, function(data) {
+    // console.log("HASK DATA LIST");
+    // console.log(data);
+    Hask.htmllist = data;
+  });
+});
\ No newline at end of file
diff --git a/hask/hasklist.html b/hask/hasklist.html
new file mode 100644
index 0000000..5c8daf6
--- /dev/null
+++ b/hask/hasklist.html
@@ -0,0 +1,15 @@
+<div id="div_table_HASKList">
+  <table id="table_HaskList" class="table_Hask" style="cursor:pointer;">
+    <thead>
+      <tr>
+        <th data-field="node_lemma" data-sortable="true"><span lang="pl">Lemat</span><span lang="en">Lemma</span></th>
+        <th data-field="node_pos" data-sortable="true">POS</th>
+        <th data-field="collocate_pos" data-sortable="true"><span lang="pl">POS kolokacji</span><span lang="en">POS collocation</span></th>
+        <th data-field="colls_number" data-sortable="true"><span lang="pl">Liczba</span><span lang="en">Number</span></th>
+        <!--<th data-field="url" data-formatter="Hask.urlFormatter" >&nbsp;</th> -->
+        <!--<th data-field="status"  data-sortable="true" data-formatter="statusFormatter" data-filter-control="select" >Status</th>
+        <th data-field="owner"   data-sortable="true"   data-filter-control="select">Owner</th> -->
+      </tr>
+    </thead>
+  </table>
+</div>
\ No newline at end of file
diff --git a/httpd.conf b/httpd.conf
new file mode 100644
index 0000000..c9e61c7
--- /dev/null
+++ b/httpd.conf
@@ -0,0 +1,551 @@
+#
+# This is the main Apache HTTP server configuration file.  It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
+# In particular, see 
+# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
+# for a discussion of each configuration directive.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do.  They're here only as hints or reminders.  If you are unsure
+# consult the online docs. You have been warned.  
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path.  If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/access_log"
+# with ServerRoot set to "/usr/local/apache2" will be interpreted by the
+# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log" 
+# will be interpreted as '/logs/access_log'.
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# Do not add a slash at the end of the directory path.  If you point
+# ServerRoot at a non-local disk, be sure to specify a local disk on the
+# Mutex directive, if file-based mutexes are used.  If you wish to share the
+# same ServerRoot for multiple httpd daemons, you will need to change at
+# least PidFile.
+#
+ServerRoot "/usr/local/apache2"
+
+#
+# Mutex: Allows you to set the mutex mechanism and mutex file directory
+# for individual mutexes, or change the global defaults
+#
+# Uncomment and change the directory if mutexes are file-based and the default
+# mutex file directory is not on a local disk or is not appropriate for some
+# other reason.
+#
+# Mutex default:logs
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+# Change this to Listen on specific IP addresses as shown below to 
+# prevent Apache from glomming onto all bound IP addresses.
+#
+#Listen 12.34.56.78:80
+Listen 80
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Statically compiled modules (those listed by `httpd -l') do not need
+# to be loaded here.
+#
+# Example:
+# LoadModule foo_module modules/mod_foo.so
+#
+LoadModule mpm_event_module modules/mod_mpm_event.so
+#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
+#LoadModule mpm_worker_module modules/mod_mpm_worker.so
+LoadModule authn_file_module modules/mod_authn_file.so
+#LoadModule authn_dbm_module modules/mod_authn_dbm.so
+#LoadModule authn_anon_module modules/mod_authn_anon.so
+#LoadModule authn_dbd_module modules/mod_authn_dbd.so
+#LoadModule authn_socache_module modules/mod_authn_socache.so
+LoadModule authn_core_module modules/mod_authn_core.so
+LoadModule authz_host_module modules/mod_authz_host.so
+LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
+LoadModule authz_user_module modules/mod_authz_user.so
+#LoadModule authz_dbm_module modules/mod_authz_dbm.so
+#LoadModule authz_owner_module modules/mod_authz_owner.so
+#LoadModule authz_dbd_module modules/mod_authz_dbd.so
+LoadModule authz_core_module modules/mod_authz_core.so
+#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
+#LoadModule authnz_fcgi_module modules/mod_authnz_fcgi.so
+LoadModule access_compat_module modules/mod_access_compat.so
+LoadModule auth_basic_module modules/mod_auth_basic.so
+#LoadModule auth_form_module modules/mod_auth_form.so
+#LoadModule auth_digest_module modules/mod_auth_digest.so
+#LoadModule allowmethods_module modules/mod_allowmethods.so
+#LoadModule isapi_module modules/mod_isapi.so
+#LoadModule file_cache_module modules/mod_file_cache.so
+#LoadModule cache_module modules/mod_cache.so
+#LoadModule cache_disk_module modules/mod_cache_disk.so
+#LoadModule cache_socache_module modules/mod_cache_socache.so
+#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
+#LoadModule socache_dbm_module modules/mod_socache_dbm.so
+#LoadModule socache_memcache_module modules/mod_socache_memcache.so
+#LoadModule socache_redis_module modules/mod_socache_redis.so
+#LoadModule watchdog_module modules/mod_watchdog.so
+#LoadModule macro_module modules/mod_macro.so
+#LoadModule dbd_module modules/mod_dbd.so
+#LoadModule bucketeer_module modules/mod_bucketeer.so
+#LoadModule dumpio_module modules/mod_dumpio.so
+#LoadModule echo_module modules/mod_echo.so
+#LoadModule example_hooks_module modules/mod_example_hooks.so
+#LoadModule case_filter_module modules/mod_case_filter.so
+#LoadModule case_filter_in_module modules/mod_case_filter_in.so
+#LoadModule example_ipc_module modules/mod_example_ipc.so
+#LoadModule buffer_module modules/mod_buffer.so
+#LoadModule data_module modules/mod_data.so
+#LoadModule ratelimit_module modules/mod_ratelimit.so
+LoadModule reqtimeout_module modules/mod_reqtimeout.so
+#LoadModule ext_filter_module modules/mod_ext_filter.so
+#LoadModule request_module modules/mod_request.so
+#LoadModule include_module modules/mod_include.so
+LoadModule filter_module modules/mod_filter.so
+#LoadModule reflector_module modules/mod_reflector.so
+#LoadModule substitute_module modules/mod_substitute.so
+#LoadModule sed_module modules/mod_sed.so
+#LoadModule charset_lite_module modules/mod_charset_lite.so
+#LoadModule deflate_module modules/mod_deflate.so
+#LoadModule xml2enc_module modules/mod_xml2enc.so
+#LoadModule proxy_html_module modules/mod_proxy_html.so
+#LoadModule brotli_module modules/mod_brotli.so
+LoadModule mime_module modules/mod_mime.so
+#LoadModule ldap_module modules/mod_ldap.so
+LoadModule log_config_module modules/mod_log_config.so
+#LoadModule log_debug_module modules/mod_log_debug.so
+#LoadModule log_forensic_module modules/mod_log_forensic.so
+#LoadModule logio_module modules/mod_logio.so
+#LoadModule lua_module modules/mod_lua.so
+LoadModule env_module modules/mod_env.so
+#LoadModule mime_magic_module modules/mod_mime_magic.so
+#LoadModule cern_meta_module modules/mod_cern_meta.so
+#LoadModule expires_module modules/mod_expires.so
+LoadModule headers_module modules/mod_headers.so
+#LoadModule ident_module modules/mod_ident.so
+#LoadModule usertrack_module modules/mod_usertrack.so
+#LoadModule unique_id_module modules/mod_unique_id.so
+LoadModule setenvif_module modules/mod_setenvif.so
+LoadModule version_module modules/mod_version.so
+#LoadModule remoteip_module modules/mod_remoteip.so
+#LoadModule proxy_module modules/mod_proxy.so
+#LoadModule proxy_connect_module modules/mod_proxy_connect.so
+#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
+#LoadModule proxy_http_module modules/mod_proxy_http.so
+#LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
+#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
+#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so
+#LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
+#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
+#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
+#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
+#LoadModule proxy_express_module modules/mod_proxy_express.so
+#LoadModule proxy_hcheck_module modules/mod_proxy_hcheck.so
+#LoadModule session_module modules/mod_session.so
+#LoadModule session_cookie_module modules/mod_session_cookie.so
+#LoadModule session_crypto_module modules/mod_session_crypto.so
+#LoadModule session_dbd_module modules/mod_session_dbd.so
+#LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
+#LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
+#LoadModule ssl_module modules/mod_ssl.so
+#LoadModule optional_hook_export_module modules/mod_optional_hook_export.so
+#LoadModule optional_hook_import_module modules/mod_optional_hook_import.so
+#LoadModule optional_fn_import_module modules/mod_optional_fn_import.so
+#LoadModule optional_fn_export_module modules/mod_optional_fn_export.so
+#LoadModule dialup_module modules/mod_dialup.so
+#LoadModule http2_module modules/mod_http2.so
+#LoadModule proxy_http2_module modules/mod_proxy_http2.so
+#LoadModule md_module modules/mod_md.so
+#LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
+#LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
+#LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
+#LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
+LoadModule unixd_module modules/mod_unixd.so
+#LoadModule heartbeat_module modules/mod_heartbeat.so
+#LoadModule heartmonitor_module modules/mod_heartmonitor.so
+#LoadModule dav_module modules/mod_dav.so
+LoadModule status_module modules/mod_status.so
+LoadModule autoindex_module modules/mod_autoindex.so
+#LoadModule asis_module modules/mod_asis.so
+#LoadModule info_module modules/mod_info.so
+#LoadModule suexec_module modules/mod_suexec.so
+<IfModule !mpm_prefork_module>
+	#LoadModule cgid_module modules/mod_cgid.so
+</IfModule>
+<IfModule mpm_prefork_module>
+	#LoadModule cgi_module modules/mod_cgi.so
+</IfModule>
+#LoadModule dav_fs_module modules/mod_dav_fs.so
+#LoadModule dav_lock_module modules/mod_dav_lock.so
+#LoadModule vhost_alias_module modules/mod_vhost_alias.so
+#LoadModule negotiation_module modules/mod_negotiation.so
+LoadModule dir_module modules/mod_dir.so
+#LoadModule imagemap_module modules/mod_imagemap.so
+#LoadModule actions_module modules/mod_actions.so
+#LoadModule speling_module modules/mod_speling.so
+#LoadModule userdir_module modules/mod_userdir.so
+LoadModule alias_module modules/mod_alias.so
+#LoadModule rewrite_module modules/mod_rewrite.so
+
+<IfModule unixd_module>
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.  
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+# It is usually good practice to create a dedicated user and group for
+# running httpd, as with most system services.
+#
+User daemon
+Group daemon
+
+</IfModule>
+
+# 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition.  These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed.  This address appears on some server-generated pages, such
+# as error documents.  e.g. admin@your-domain.com
+#
+ServerAdmin you@example.com
+
+#
+# ServerName gives the name and port that the server uses to identify itself.
+# This can often be determined automatically, but we recommend you specify
+# it explicitly to prevent problems during startup.
+#
+# If your host doesn't have a registered DNS name, enter its IP address here.
+#
+#ServerName www.example.com:80
+
+#
+# Deny access to the entirety of your server's filesystem. You must
+# explicitly permit access to web content directories in other 
+# <Directory> blocks below.
+#
+<Directory />
+    AllowOverride none
+    Require all denied
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/usr/local/apache2/htdocs"
+<Directory "/usr/local/apache2/htdocs">
+    #
+    # Possible values for the Options directive are "None", "All",
+    # or any combination of:
+    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
+    #
+    # Note that "MultiViews" must be named *explicitly* --- "Options All"
+    # doesn't give it to you.
+    #
+    # The Options directive is both complicated and important.  Please see
+    # http://httpd.apache.org/docs/2.4/mod/core.html#options
+    # for more information.
+    #
+    Options Indexes FollowSymLinks
+
+    #
+    # AllowOverride controls what directives may be placed in .htaccess files.
+    # It can be "All", "None", or any combination of the keywords:
+    #   AllowOverride FileInfo AuthConfig Limit
+    #
+    AllowOverride None
+
+    #
+    # Controls who can get stuff from this server.
+    #
+    Require all granted
+</Directory>
+
+#
+# DirectoryIndex: sets the file that Apache will serve if a directory
+# is requested.
+#
+<IfModule dir_module>
+    DirectoryIndex index.html
+</IfModule>
+
+#
+# The following lines prevent .htaccess and .htpasswd files from being 
+# viewed by Web clients. 
+#
+<Files ".ht*">
+    Require all denied
+</Files>
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here.  If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog /proc/self/fd/2
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+<IfModule log_config_module>
+    #
+    # The following directives define some format nicknames for use with
+    # a CustomLog directive (see below).
+    #
+    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+    LogFormat "%h %l %u %t \"%r\" %>s %b" common
+
+    <IfModule logio_module>
+      # You need to enable mod_logio.c to use %I and %O
+      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
+    </IfModule>
+
+    #
+    # The location and format of the access logfile (Common Logfile Format).
+    # If you do not define any access logfiles within a <VirtualHost>
+    # container, they will be logged here.  Contrariwise, if you *do*
+    # define per-<VirtualHost> access logfiles, transactions will be
+    # logged therein and *not* in this file.
+    #
+    CustomLog /proc/self/fd/1 common
+
+    #
+    # If you prefer a logfile with access, agent, and referer information
+    # (Combined Logfile Format) you can use the following directive.
+    #
+    #CustomLog "logs/access_log" combined
+</IfModule>
+
+<IfModule alias_module>
+    #
+    # Redirect: Allows you to tell clients about documents that used to 
+    # exist in your server's namespace, but do not anymore. The client 
+    # will make a new request for the document at its new location.
+    # Example:
+    # Redirect permanent /foo http://www.example.com/bar
+
+    #
+    # Alias: Maps web paths into filesystem paths and is used to
+    # access content that does not live under the DocumentRoot.
+    # Example:
+    # Alias /webpath /full/filesystem/path
+    #
+    # If you include a trailing / on /webpath then the server will
+    # require it to be present in the URL.  You will also likely
+    # need to provide a <Directory> section to allow access to
+    # the filesystem path.
+
+    #
+    # ScriptAlias: This controls which directories contain server scripts. 
+    # ScriptAliases are essentially the same as Aliases, except that
+    # documents in the target directory are treated as applications and
+    # run by the server when requested rather than as documents sent to the
+    # client.  The same rules about trailing "/" apply to ScriptAlias
+    # directives as to Alias.
+    #
+    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
+
+</IfModule>
+
+<IfModule cgid_module>
+    #
+    # ScriptSock: On threaded servers, designate the path to the UNIX
+    # socket used to communicate with the CGI daemon of mod_cgid.
+    #
+    #Scriptsock cgisock
+</IfModule>
+
+#
+# "/usr/local/apache2/cgi-bin" should be changed to whatever your ScriptAliased
+# CGI directory exists, if you have that configured.
+#
+<Directory "/usr/local/apache2/cgi-bin">
+    AllowOverride None
+    Options None
+    Require all granted
+</Directory>
+
+<IfModule headers_module>
+    #
+    # Avoid passing HTTP_PROXY environment to CGI's on this or any proxied
+    # backend servers which have lingering "httpoxy" defects.
+    # 'Proxy' request header is undefined by the IETF, not listed by IANA
+    #
+    RequestHeader unset Proxy early
+</IfModule>
+
+<IfModule mime_module>
+    #
+    # TypesConfig points to the file containing the list of mappings from
+    # filename extension to MIME-type.
+    #
+    TypesConfig conf/mime.types
+
+    #
+    # AddType allows you to add to or override the MIME configuration
+    # file specified in TypesConfig for specific file types.
+    #
+    #AddType application/x-gzip .tgz
+    #
+    # AddEncoding allows you to have certain browsers uncompress
+    # information on the fly. Note: Not all browsers support this.
+    #
+    #AddEncoding x-compress .Z
+    #AddEncoding x-gzip .gz .tgz
+    #
+    # If the AddEncoding directives above are commented-out, then you
+    # probably should define those extensions to indicate media types:
+    #
+    AddType application/x-compress .Z
+    AddType application/x-gzip .gz .tgz
+
+    #
+    # AddHandler allows you to map certain file extensions to "handlers":
+    # actions unrelated to filetype. These can be either built into the server
+    # or added with the Action directive (see below)
+    #
+    # To use CGI scripts outside of ScriptAliased directories:
+    # (You will also need to add "ExecCGI" to the "Options" directive.)
+    #
+    #AddHandler cgi-script .cgi
+
+    # For type maps (negotiated resources):
+    #AddHandler type-map var
+
+    #
+    # Filters allow you to process content before it is sent to the client.
+    #
+    # To parse .shtml files for server-side includes (SSI):
+    # (You will also need to add "Includes" to the "Options" directive.)
+    #
+    #AddType text/html .shtml
+    #AddOutputFilter INCLUDES .shtml
+</IfModule>
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type.  The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+#
+#MIMEMagicFile conf/magic
+
+#
+# Customizable error responses come in three flavors:
+# 1) plain text 2) local redirects 3) external redirects
+#
+# Some examples:
+#ErrorDocument 500 "The server made a boo boo."
+#ErrorDocument 404 /missing.html
+#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
+#ErrorDocument 402 http://www.example.com/subscription_info.html
+#
+
+#
+# MaxRanges: Maximum number of Ranges in a request before
+# returning the entire resource, or one of the special
+# values 'default', 'none' or 'unlimited'.
+# Default setting is to accept 200 Ranges.
+#MaxRanges unlimited
+
+#
+# EnableMMAP and EnableSendfile: On systems that support it, 
+# memory-mapping or the sendfile syscall may be used to deliver
+# files.  This usually improves server performance, but must
+# be turned off when serving from networked-mounted 
+# filesystems or if support for these functions is otherwise
+# broken on your system.
+# Defaults: EnableMMAP On, EnableSendfile Off
+#
+#EnableMMAP off
+#EnableSendfile on
+
+# Supplemental configuration
+#
+# The configuration files in the conf/extra/ directory can be 
+# included to add extra features or to modify the default configuration of 
+# the server, or you may simply copy their contents here and change as 
+# necessary.
+
+# Server-pool management (MPM specific)
+#Include conf/extra/httpd-mpm.conf
+
+# Multi-language error messages
+#Include conf/extra/httpd-multilang-errordoc.conf
+
+# Fancy directory listings
+#Include conf/extra/httpd-autoindex.conf
+
+# Language settings
+#Include conf/extra/httpd-languages.conf
+
+# User home directories
+#Include conf/extra/httpd-userdir.conf
+
+# Real-time info on requests and configuration
+#Include conf/extra/httpd-info.conf
+
+# Virtual hosts
+#Include conf/extra/httpd-vhosts.conf
+
+# Local access to the Apache HTTP Server Manual
+#Include conf/extra/httpd-manual.conf
+
+# Distributed authoring and versioning (WebDAV)
+#Include conf/extra/httpd-dav.conf
+
+# Various default settings
+#Include conf/extra/httpd-default.conf
+
+# Configure mod_proxy_html to understand HTML4/XHTML1
+<IfModule proxy_html_module>
+Include conf/extra/proxy-html.conf
+</IfModule>
+
+# Secure (SSL/TLS) connections
+#Include conf/extra/httpd-ssl.conf
+#
+# Note: The following must must be present to support
+#       starting without SSL on platforms with no /dev/random equivalent
+#       but a statically compiled-in mod_ssl.
+#
+<IfModule ssl_module>
+SSLRandomSeed startup builtin
+SSLRandomSeed connect builtin
+</IfModule>
+
diff --git a/img/ajax-loader.gif b/img/ajax-loader.gif
new file mode 100644
index 0000000000000000000000000000000000000000..3288d1035d70bb86517e2c233f1a904e41f06b29
GIT binary patch
literal 3208
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
Bt<?Yk

literal 0
HcmV?d00001

diff --git a/img/check.png b/img/check.png
new file mode 100644
index 0000000000000000000000000000000000000000..a11fffd45abb52932ef9f322c2c24d7df382a1e7
GIT binary patch
literal 1757
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

literal 0
HcmV?d00001

diff --git a/img/favicon.ico b/img/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..121fd40f27cd4139409c4428b62aada8169edf89
GIT binary patch
literal 43078
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

literal 0
HcmV?d00001

diff --git a/img/icons.gif b/img/icons.gif
new file mode 100644
index 0000000000000000000000000000000000000000..305d75bd7539f224f8c85429b7701c0c537d28c6
GIT binary patch
literal 5906
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
a7jqlG%xQyjxJ~mq*7LgC=450bmj4IAEko%5

literal 0
HcmV?d00001

diff --git a/img/lang-en-32.png b/img/lang-en-32.png
new file mode 100644
index 0000000000000000000000000000000000000000..531836ec058768fdbf91dd9909d73d4ef0fbad88
GIT binary patch
literal 1690
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

literal 0
HcmV?d00001

diff --git a/img/lang-pl-32.png b/img/lang-pl-32.png
new file mode 100644
index 0000000000000000000000000000000000000000..60cb1b47b99e319fec6dcd781a14f5b0f3ae60c9
GIT binary patch
literal 815
zcmV+~1JL}5P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80008^Nkl<ZSi|j>
zL3-Ro5QYD0Y3zxU18{?|hAnU-F2T`&Ev)bz*kuujCvJ5;7FDfo*$!sGmrdN?r)fze
zsb0N$^}69@yo@h>7-s9Qzx-U+WnpXWvjpw2zWe@%(+ZrCc>DHiTpp;*Fbpe&QVPXv
zzmM5|O`jzITmlJA*Y1wo5#xTb!tL!J0Ou80-JQ$F3vFu=+$;i@f*AoMgWCkApKA)L
z1mRKy7Pxx=$>)}J!QBDYazL64U~vdVmdYd**;@R0IO3j;&zj{o@|%DZU_1e@0O|;d
zpr#05mhbK-@!kI0hvvJsiz~qnK*}e3Spb3ocjOuwcEn~os2<^|?2jxAQ0h9dluKvG
z)k_cnT5J0&Vy1hrXM2uuMEM_|gO2a??0bIs+p^=<0N^Pi>xmyJ*Ym9<J)Sk`saLU=
zqBS1?+#8q61p!N0SeBB?FIY)Xr6jzpaj_!+*Fh8NnsVWanz!aOZ&=2h7-;PI+vEfL
z%wUGmC=V=cR^{G37$NGe1uPku0KEJ0C*FVi4f=3lF{42EKo?#aKt2UP56TfNgor$a
z?m&~Un=|iz`+Z^npl(nr3g<!QJ%LQ)p%m=NRy-ooF3oUA4|H{<oBrC3NVNtC42n%b
z(*gg35D)P!T@ei>d-g%CM<Z$onxncQGd#=S#Ee-m^Hl9WRf=xO$%9XpZOtR*&HxMs
z_I|Mx%uwH~0X@@_%78W(qMJ;uw3&fTLR&*^%N05TJC9dBJ)r{qi!rz+gUhvm&DmxK
zs+{{;p;k`B%GW8E*(2iZ8TyAO2IXSdYm@M;QfCJ0TDX(5ltNh+R!bAgYLw9nd+_cP
z`*KXDdw_IA$=IF%B&W*xxYz{X`ii^jmGkQ}c6H{otO>$~uiJ5j+&3tF4=`5i=pN0q
z$9cusYUOgd<No?I0Gw`KaeMzaXS?EcbIx|!ga2PcsfWAmp7-?w>&>fuPxuD-3V8FG
t_oIISe;Q`7FHAN*<Jf=;FXM|J{{UhoACBM%)<^&V002ovPDHLkV1jCph7$k)

literal 0
HcmV?d00001

diff --git a/img/loading.gif b/img/loading.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90f28cbdbb390b095e0d619cbe8d91208798e58f
GIT binary patch
literal 3897
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
D^>?LD

literal 0
HcmV?d00001

diff --git a/img/logo-small.png b/img/logo-small.png
new file mode 100644
index 0000000000000000000000000000000000000000..6616f1e57c945e6340c7c9b41b70e531f1177ad6
GIT binary patch
literal 10642
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

literal 0
HcmV?d00001

diff --git a/img/progressbar.gif b/img/progressbar.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fbcce6bc9abfcc7893e65ef20b3e77ee16ec37b1
GIT binary patch
literal 3323
zcmcK7eNYp38VB%=tbvu|O{=v;j+Z$Bg`>zI2IVD3Ovp-%sA$2LilR;|zMv9BB_t%-
zylmcIh`dQLinJh9P{0Ja6I28#3PquysCf3GB1bBEXgfV_qnx8-n07k#kNmNdnVrvm
zpZz`0v#~Ih7`{0em<2RA0wa|v<E6{S8~2aZrj8WFj1(;!!!9dVjo0oUD~%bcOdanj
z8o4YRyQ~|#rUL-L`z1Kl9&iD?#~m4zgw^D~#Zy9pg6(kFUxC;Uu-+B`>r`!U1uI~v
z<M3{ck78?*b4+>F&O+zyfdOBoHdq{<WQ~m07FwPMxZ|1zcctx|l1n~$CSOo@Vs*+*
zQ}cF?ogkAQRCxK$o=>xOf7$)m<JR)n6^<{?-${G;^Efw$jX#74MOi$QClD!w5~+r-
z%sq(5<MIm&j^-Da$o0y+V<%4*9!J1ar@ksHs;)e9w)PC}oYB;9-U!uQsB64<=^ss3
zsxDnMwX`-t?Oh$$>N>lwcHgLVd-HT}JxYe94Gv(X_H__aHV~b7Ud4Pvk@t?84W?#&
z+#WmNc5cUN<G_mhgeYE1%DjU&=1R#Y_Hs$VrCpD2hTn`bk}nQk2>oapyda#-P`2+n
z-sGAbb$_$TW887}6BiJKaV$E-69{23pNeG2=_;8-CM9c*OiHOp|F9Igl_JQHqf)Y3
zhR7s(mQBh5ER~A&6^|p|OQqm<r*aV(P`KRk1VK8MNe*8?74l%5ge(;!A{bKS>d+(8
zZCb1qD*K}>!|B|YVuCsS=V0!N=?-)po(^$x*kptYX9<KdaWpEBQ?)RZJHsZ0jZp?n
zp+mRx?s_eB*vgFJ8;b8G)~q)*=LdB515eJ;?lejiA20m{)p!Ft$cBveEm~-sPZgtd
zX53u7{bx(-(1^UFLY_ODdb0Q589#1J_AGK?4R{3Kd(On+GC_pF<I^An6!92RAx*53
zDI^rN9M$FPi<Is*Md_Bdc?0W0QwL_>N)B^~VJ^d7-@(M1WK;9&Liw~wO?NN(E}be}
z`e0?=)*y}@Xkgx6S$ZS(8d|ifzK_`x?=N$)pWk<iTG4I}ommwI);u#b70-38!Qqpj
zZ0>;s0Ve?`qDX{%L@X0)6guz8Adh+qh(mq90aE=iAZp(dGccGHgmlkOke19p-dfci
z@1Ni#x_B;&@l8icy*4roEXN?9&vh-w;n!Fp3;~Dn4#aOVi22tbo-KY@B1*TAgMsta
zMh~68EXdvgJe$<9yOgn~E8aiQNo1$l`FUCI52J)nHW8+@|McSTe{t30@NpO<lP2KM
z-hl+$gzUFO*6Ys`hkD;jgaBJROMk1>^cv#waY+68ew4oT={#AGoA?Je^k$f`&u}bW
z<?d|%;2c((w(X0iW2HHfUcGUd7tId83Sx5((D>OjoRA_$utq5rspZ;5HXZvqE1#D)
z5*M}9jPoq=-V*<<i^Y$ahT-~_5TNtU)%!ikqq99uj}g`isCPSFkeqYB-7bboeOzyB
zd0Mb>cQuuK%yr=$XZl2k``40P4ol60hjb({{!c5Rtn3Urk4?uRRFNQuFGPhZnTBMO
zu{W&|u4t53w>M}v(wtDAV!oHP(QY&~_X0qupII*-&GksTPf#SZ#4eaOCrG~hUblo4
zya(R){3rfyxiH2%l{iN;xS(G)OWOx8>UV9u+Vm_iN98oT20F}U!8utl4(lm=E)S6)
zN~xM^Q?U;_!Ku4seH{bquy+4OfwlV{0C?tW&XteqJmP<|V)6eK9ey(~1Sbd1rgF1{
zd@&*xkriY}MS><}4DI}o3>d2jm74@fNpg-Vf(zPY?8nj=O8o$gp_gzr3~{MEs({T(
z5+Ec<q&&=5N62lrc&lSa%BjbZ?^UJ$cUL7n#Jli%)PG<$41ruS1`(3PWRx$DP)gL{
zTH6lmsM+>MIErR!`<M%fuB}lI$cG{o=B{BpwhVBRuwCFVEW&mHshA2W$ug;qq@QWC
zG#pD?IH4hQ=!qU1HU8F7Q!+7X`heSKeI1RNc9ClI)u{3KPPpFrNUS-q6%2AqWS${j
z@KGuKdmaD$(X`}?n~z47^@_sWzuw+`eYC{;f_=0lot@34WZ|-1K$IrThEPz(qba3`
zmXfQ^m+MrzqxoMFY?@e>wwLZHp{c_?{mEhe%dlbNH8E^nm+5|owEXTR;S2+hYWR^j
zWB!qbQWumI=vg;ZQvO$8W9QeMX~YdqNb^K%y~T6@tCTOlSM-j*$OOSSZX6cRfzPb*
zP-Q}8v|6Q&$hAFfGA(f5>_XzuqhFP@h(0x@%#tsExSB}v(zy6^qc>xW*XCVMBPKf`
zF>gsuD~+eKuRP{tWLo#OoJ2?<WWy5d6v<I4q>fR@_0f5Olf}}Khc$ZhB$$3I7S9&n
z^G{G0pQnju2Md}?zmbr<w5tb84zYra-<7?NWy%Dm;oVqhT-rn|6om377TY5y-LkNy
zxRIDzumA7e68~h06EC^ypI;ct9i6!mWf_U)Pre=F4vY*E)-jtmb%{f#@4e<bBPVS-
ze`Wca#dDa)6ORw3opzr#)%<$o)DvA#WACrsfMR@j7z7y{2DY}b)(Ww+M3o|nXq8eE
zp$mT%31t0dcx$UpS5?PWG=5)+H0(kB*73b$4_ysg4%QT#nvcXCz-C`<Td!%;W#1DI
zGALU@@}AA~ykZ7&GGp?acdS8w*-_bLcm+Y;fy7uLkA|`8e8F0aMUo-n??=TH=<o`u
MR-;lzy8%o72mk46L;wH)

literal 0
HcmV?d00001

diff --git a/img/services-logo/eswil.png b/img/services-logo/eswil.png
new file mode 100644
index 0000000000000000000000000000000000000000..72d007dc38bb4fd5af39880b63ddf13fcb1ff419
GIT binary patch
literal 2114
zcmV-I2)*}-P)<h;3K|Lk000e1NJLTq000~S001%w1^@s6PpiAq00009a7bBm001s1
z001s10r8d=egFUf2XskIMF-*o6buU|KxaSo000N!Nkl<ZSi|j@dvH|M9mhZC+<W(t
z-6RWnY(gFoL>f>7jb@azJS?4Y+EVK10Cs9^t1~_d8d7xZOdU%**s)WUWYp5>IMdEp
zt)<nDqfW7)Eh0KmOQVr&fDkZ|B%23G*krShd(Y_~+0DZwl+edt{QkP<+;h(Net+lp
zyn<PzJh+{fa9!%Trc}T>t+^4nMhH<X1VSnODS{6KysR|`TYBnG0bEg3%h5BtXFONT
zG`YO6hUTt%$_r|9QR;bM72xOm5&_;7rnn{4SvRmOSVJgWe_?<rR%_Ah13b)8gy74e
zaQz$0g4+qDw3HS(d2r=|+A*;Fnr&$Qb}?W8TJzUs!R_A(h3i-z+&(kI^w*RJYbw!v
za6a}I&QyFM6s~(`R+Uy1KVT&ii2=aJe@FVI<Vu9>ZtmJWU8RXc;umQ!M+s~tv6aM8
z0<9Sz+e)IeK<m^RCp~8TT}pD4;=9dVyV<nq#{ifB)zv@eY-?vWumQj_6g$86KGCEJ
z8hS^(ym_pc+pC)yj#+q2hXcn-NIC}JyyiGwSCZkF3r7nwTsAMfe>rcp7GW6*pcZ)a
z?LYPcU;uP<93aoXY7y`-fTINmTZ?)4tM9Qm_Z(YaSjV|hH;$6ryY3@e!t;5yVHv0T
zvnZV(;l>qh)c$ET&o-1(92nsz8yaZs3vjwW3jx0T%vG<R8h)~Cs!Fw9Klx%UsThj6
z=^ysuXo(>;k+=(6NzO(+7*b;yifG(Ipz&G`K6jE=n#zzuv;K1(IBM*8rS+C+ZlMJ$
zX7Q=>J8f#xQ36LvRu=c75VZAXBZW>KPGx$zIl+*?#hRkhg1c6KjFgJ}%u(vzSjpZa
zOUD6)VBR!9AsEv7;sB-4JoWbqj)mue0Jq^_ju}ik5DZRd2u+g@Njehr7<Jo`voHhO
z5g<THjmNSvq@L+o{y9@<J1{;eHJh()#WWNyOR=${ZOZ-Gjz9y&ff24P>*ma$pIfVr
zQN6f(vJXy{7pE}1V!?Klqq~4pK$%v8{h<>6a<p_TAlL>8N1_2kYL4~HL!cRqy7}3@
zDwGB(Kx-xpWkUKw;re%{03PkE0~jpNuX!D~TLS}8_xO%GzxXjiK<A*3P}h78gi7#O
z4hct+7<K)-D}HL$Y+<?NcEI`Uj#K?v<oZWRI0oDPuok!FT&O+8g=Ei??0crW*7Cwy
zn!9#W9;~TGb9nNubX+y1n$alElNWCeh3j9MkzopqmT>($LWp}OFEXUYZ8~!T1MUii
z>t8C*yKl;*G39ng8q#_3y<GowCxIIP*Bsq)7`VTsr+&}!!rEzN#xw^@C1F~^^}iEB
zlmmO`0QQm)qN1gz{>ieeZKQKxMM>?1nyVIWTNg`;$nkKXH|{Lzggb12iqahnbPUm<
zpJ91nO__4|A+QF>1kxrPPZdvxr4+lGyX#I*|AwDt`K@?<MM;02?Z_f=d-W}P>zYPR
zgad<r{_wKy*N-lIelWi5QTTT9vs<q!-C-nSb^w7}jD@VY<+cW!Iv#TXmSlaO)^ooE
zz-K+QrYL)4$L6b#uUvh3XI?Nf>V3AM9I<WfCcW$HZ=<xpYuTLW3GmF}D`@M>e)^-%
zoIULW1+DNve9WY8<MT`MInw&r4BC9o2zZW`RxJ$QFh3*q&{wWJU3AmRlVgFyk+=-S
z69+0MVyUA9!*PoRff06YXrOP{v-M<e_MLl=ENy$G>A{!#Mtr~0Jbda%>t_S^&ZRjS
zv2U$jvhN#Pu0FANS;5)N!t4>G(8O(Hx~rraCT9rHLTEgu!<iu;uQn~Fu_HG=lC&Cy
zCZZuYFC%u<ilTnjm$$PhCqmpdaMaAjp4)V$GMu@-6pSWKax&t4Z&fp_!kw_?wT>28
zhQg8xjX)_uG+|zl8DG#Uol<!^2pD5|3tP##=T835atZJf;3dFIfd6|rZ!C3`plis7
zX(&uXljo13wIG%>@mMwhJ&_Cmf>}|9MqRiJHU4hS481O!AH2ARP<IaZ{QgTccI4x+
zY#!NHMcg)!Lep@%fLnii1L265k+?ObfSxm;%TPF4j<;l>dAF^Q6TJc2&t@WpW`0JD
zn(G_6Z|^!hmW|6)|M?xpk_Jz2d6TP(`Z;v6i0jI_d31jjes>Z_Np4(mlFRc3seN%R
zLg<SJOjiM3%cdYJ%0Jrk*}C>aZolp*r~5NG+_r#7+#+rpJbu$5^8BN-X8duZky2ww
zHDiepO_)4!^IK$l;{aTiJA~s%{GKGgxphAoE}LBcC`m^$nlyQ2<KbBujI{|0Bhyp8
z*=st6A+^^u6h4=o%JKp!AmEMTNi{EC*I2_T1Y~;?WVmen?j&Za1u&#Wrk<tHNC^W`
z4`&Ab9BM1-f32zP69KzSQzi;3i~AM_vq$bI@JDakxT1~q<sBp)NzzUi6c^TdyG)0K
zWAIv28T(sGk^@oCue*nQ&ozFU+iq*KM*yrWy`RSRiCWWV{pjYh+{oRVE0342S<)E{
zWW=p(Z#>0jQtyr+mNbaOT%3!!=p6Dz_J>M)UjAtDd%Y3Qo|v=i(0CDDvV*3M$EW@Y
zsVu&qBcDz#a(4!DGh&5Ri^40sF8g{*sLD)FqRi{jIkwGcWYp@4JI1l3BOCgLy$9d_
sB=||(@pZ$4qv;b?me$hPKJl~mUwmp;i4sgG5dZ)H07*qoM6N<$f*5rB7XSbN

literal 0
HcmV?d00001

diff --git a/img/services-logo/hask.png b/img/services-logo/hask.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8d033f72697f13937d0077dcce67d0e7d73b513
GIT binary patch
literal 9033
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

literal 0
HcmV?d00001

diff --git a/img/services-logo/morfeusz.png b/img/services-logo/morfeusz.png
new file mode 100644
index 0000000000000000000000000000000000000000..a85de227cfb46227d5bf954f87f25aa4d74463ea
GIT binary patch
literal 2450
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
QCIA2c07*qoM6N<$f)A~@`Tzg`

literal 0
HcmV?d00001

diff --git a/img/services-logo/omwn.png b/img/services-logo/omwn.png
new file mode 100644
index 0000000000000000000000000000000000000000..8102f3dc80e0af3fb2219c79827c88e449a0dbfb
GIT binary patch
literal 11160
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

literal 0
HcmV?d00001

diff --git a/img/services-logo/plwordnet.png b/img/services-logo/plwordnet.png
new file mode 100644
index 0000000000000000000000000000000000000000..cdd1b9f42f1d89618091370fd8e87d08c60c782b
GIT binary patch
literal 4134
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

literal 0
HcmV?d00001

diff --git a/img/services-logo/spxvi.png b/img/services-logo/spxvi.png
new file mode 100644
index 0000000000000000000000000000000000000000..4af55b55b4a05dc0882d85b2bc85dfe0ed64dd72
GIT binary patch
literal 4685
zcmV-T60+@yP)<h;3K|Lk000e1NJLTq0027x001%w1^@s6;wqzi00006VoOIv0RI60
z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;R_fEA31J6k^cYy5!y*a
zK~!ko?V4+_U1fR4f6seaYwg=PCnw1X355G4fd;`~Kt!k%EfuV`qK<8CZLQ->JMEYH
zp&vR^KiN;t*l}vB;{_E*t)qw{6)QRhkc)s9j2b`*#9YYb<XraN>-xS=KdhZd42T2A
z*3S6O?Afzt)~vPv>-oRW^MC%&3%^~zUH|Ww{HhmjJ!{iU+O3aFt*)u-5@QvNKy(DP
zs47M*h$0AJ0E;!2B*{2@_}~psKDlQwe;E3G(gRC;;5Qa*2GiHQ`jUm$zHuuWYs6H5
zpz4X*-p1NM)PSlIqoPqzjg)0YXawgx3kxHj*tMJc?%Mg-!9%6na{k6Q+<xcd4_vWr
zmE3jz5&ew-yK$|VzT)K<EL?m2MYv80QUeO=Q8geDi3JD<+J1{c6+}S9Ay`B#)(T}l
z$DTd=`SPuIqM_u;-3uGu{jRs~fAib^Loa>t4EH^>u;O6tuX>@$H9PaH4ga`x+Zm{-
z5F3C<R0Sds5KRF=!~qGYL-53Ch(Yi^!5TwZHMp#x*Eejv<XkpvSWlLv|8UbMZ~L8d
z&Ya$S-$M)Ey#AW=dE}=D|8F9@Zn`&p?RA$dTyyOvf>}mPi2;o9SnIGR62o{xZADdJ
zLhmGXs0NN4IYJX^R?p6GWO+!McIaeN#M)C8p2QD$-+OPu+aBM%_euG6)A;mlFI#=}
zC@jRLR*GCu4a6GiQaWp9R=<C4gCpyBpkaEt%T#AAm%nT?!U#cezCrLbRl;aFFqrNE
z6=gkSdOD@93u27ew0$X69&jeb*&d@&iL-0@;?3Lj8(;mtT)ORiyn*Sd4k8VzDPR4s
z`|sFSa?SGr>z@8&rr+Im(bg>=UUzzrG#d~j2(e8x(W69EDiDt`fu+Maw|wf`T(IR#
z)~&T@wD`1U;mDXTeD*%wzjs-traD}G&5L=_#b<J4X)jsFQ<r13F-U~OI7F2ga<a@)
zH;4HB>n@U0*01FU-`&aUU;j#)a)`A;hy(7s@4@AL`@-{zta<v6qRw^I+!Py5U(4)C
zJ*L;yOr2D*YJJ1%lLK=bBPX4ztXa3j+LLnTHW-!`_p|G#kI*y~F$S7ONZf$^`^NIX
z_vQtWcYg2#x9$AEzki<0uVc6*Serrg2)3oYC=fszlCIJlM6SH%0#ufGV)qjuf{1Ca
zjq!QY_;|3TB2E!k(a17ta-c*tN8^|fhSbdx#)1-Y2C~f4>vl+-Ahx7w8W2yGwzvNJ
z_Mg4y$-QCI&L8dl$R|E_JH5`jHe0I!ZNVanN<>XV6DlG#WxdGOZClu}V<&0SL$$3+
zE$9^hYdmdTtaHkG$mIUVN`@i9N=jL#sAd$UL)GA14^>MO#ux+EBqt<;M|Xv{J#_zL
zcYWi(AH<jhQGsJsRYAfex`sv-YZC@j1LhZ&h*(r3su5%C3W1gO!HE-6XHcuCRiafQ
zLJ%QhNINM_i0yyXgsO_DTD*6tdO~f;^W*7u#)d@p9MYG6@#b$+SH7j@u?!hdw578N
zB#C2TafmT3$QUa`q!lU}RtBsDC`Jnmy0cVOiA$6~P1;Rqq(FQ_Lro(~G&&^f7@|}d
zZzyAh5zly3<GjI`<hTbtzPD0<)oT;>?c0a5o~nt|p&>~#(!>!%O<hG|FeKf`le?B#
zKX(R3Do`a&IxH@(5ZF3Emh?HWcacQ<Sj`|h%27?M6)O&+V6;c#yX5(pCX^UAB<q%l
zC{xoN@?we56vsX2f^)h6lx3jT>(GRPEc2vk%4k$GTnc2#YBDz<gbFRzbI-lo*}UmA
zVlWdL>(i+J0!t4-$c3197!7lp#hQM921t=gsT#l-imD)S!f0vCpx4LHB~&RQHFZ@G
zVnUW3f9oBOjyYv5f4}u5n_0Vdma<*~gz>n*7*D@H%W$d0co;4jKJlTCbN1<{v1W}B
zON%&;C8-qwd%;<!aN8H|W_es;9hAj@sLL2Koa=IA;VHU(i}kY@H^gcnjyg!=pot(B
z?*-dUSX?fTd(cde>n?feng9AHZ+Qia!(Ak)Wjrnz3_3KmVgB$uYu2o1VPVXN|Lqp~
zJ>`m*Ucpp4$FSOqGd+xT#FdKdj-UMOv&XBd!;|j{SmL@rxInMI_5zByfNG8-LGtyS
zewqLa1np6cmvD(-Y~<Y2`foZoKMd!bwf?hLU2_JPUiKp0_taxDy-LYTWopo6w4CE@
zpS7zu^5Y-w=HnmxBJ0=A@kg({l1zlMSfJnOQp8EtW(8^dY^w{?J=bN!+BHPi2VKVC
zU^I)>Jy=sy8-w+Zq8xMfIqT>TPX6?!^G;#aY+!CfN{9>6pK^pyl4gcHAJXkiQw$xq
z-u5kSz2&=Hea#iT?27eN<D5Y@17=872r&_eiZv?)_N3J*`wy4Tcwq@msW6TeAwXT%
zq*k#s2mzr+n=v5@shQ#RH(W}m-=Qj(fSP<fL;x#*IGS;TPcoL49XEdPPIi267k~cN
zSF-8cIbvBelXlQ*nOFsq)MK!W>v>{h+j{&$!R|j?vU=d&wLG$?Rk0*Z1r3T%4Eb1+
z`@i!8b{~42qN(Wh6$z13*KXp5*KeVya(tp#qm<PU5zjaulcXMv2BQ{@k*EfP!HB1+
z1#6YpyzUY<o;u6+J0Ik!pPj-hUU3o5G>k@vSTnPch4~}+ZpsT#iqA~rORrjY{k5;V
zYU}h|k7BG;b&dv)a|1ekOHn^Xz>y>sPyXa7KKqe-xbSh$=FO`p@-bP~rRN5SOtG{y
zrU_$2Dx9<Uq*YdJ`N@dEQdA}DHa5I+-FaMn^;T}W@m4<i(ObFx)faQ-`tx||;G<0U
zPNvivF?P~FuMk+V9Xf;699me!Wy|=kr7CkYiOi1*#Ftnz&A3v0GRtsiXu=F3OkwO2
zWmREK&Y{EeSd*}7^$d^^Lq&{{(9~EfEHBTKW*w|oBnFb6qwzU!|C`tG?R&n@=Wo7;
zOE1ZJ(fManXhDn)V;!N6D_CcxqS7TgGZl3hq1NM_BZg(fM{FX*c!Ykh$Nc_4T`S)9
zDaMfY49@mgIPAFbgLi2@E+x&BE3SGG+b-Qq6UU@khLONv%5&(@A$-~+akDHfkLmUb
zXmVbB*(q$f=v+Q|<1Lg;;G!+(<Ea2kcmXs%A-6dXQ36$ngji8GIZB{va=JZF3=Ph9
zSy~(uLq)G=@#z?!6@*5p>WFnh)(!H*M;Bz>x>Mizi5u^H<e&fP<9mPd=n>Ekqj6yV
z&?5ao7em5$l+f#}rfEvBIleQ(_YUwE?|2ROKlCvB57b}{Q5CaNT@OG}6&MF94c2xL
zNr??O)1}NytZ9f%fj5!FDzR#)i-5)9eFvhaEG%`|?yawU?cw(<4E4O9K9O(w_(yL)
zeACCir6OItA5a$=8XeA$3A%u>797+uV4TNik+;765Bb#RKE<fa30fl(R}QS8SYujc
z5e=w8)F29i0aZj=vki@4S~mj}RYMFA8%0iZkd}Atsn;}hF8AKO6Jj4?+WvW|K`M}%
z&=@o(q-mEr<eYKtD$c)XjvYVRPn3iZSCGac27@3`5jB`&fTit0Cjv`ETR%-fC(T+6
zlh+j$d4{a{>Q|jBU-{Z&=CMciQP&0)X<bRF5or(<jTViLx>jPW8JF{H-F6lW3k}0z
zPP3AG)?m>n5T$h#j(v`rg#sez#PL@^MNljuHW-Om6L=;Od)rqZ(JL>XTa{*lN<N8Z
zXkS%yX!ICka89V}l1`^fkykjIp;1xf1u3W#BO5J*qvH#u<!>8Boq&uO6g&AClmr!v
zkuafejWH*JT{q*{{p5khN`g&?h#5|(k)WDkVv3b|lK46ld5tyGeD6EE>GqV=JDg2c
z4(xDPff!UORN}+{pS+0H=*N(N+GC1FLj(<E-AH6akQ(gqU}v3?rxqHP7wwHN*|vqK
zHO6_2Ng-OSF&G1(3M5HIJ|3bttm(4->pMC3^f^qZh;_Acbv7@Wi9J$-8dR9<)u$)1
zI5EN_=IFjd$n!{1Dp@*3-5d{gzKPm_JKynlmtS%Arqx&<i3*`^h_S}f_Nz%Ii1f+F
zHQnBT_r3SiTzKJm%&qA&Dl0mvg)*!R*rsXP1aowAoWMp!i5N5Sg9MBb1cNtg@LkUn
zj~^!SE!{5O;x2yVN6q<{UwQIPm%Z!^&cEOs#O)!H&@>gsM-nS&un3m25QqZ?eakn$
z_5+3o8?JxL25c(KA2<X)K)FJZt*hqeEv=g4Xnb_01A*4YZQq13ZCV};OPXfHU^=0!
zORl_p>W6c48#eseThE@h(&gk+d)Q=w<t6a0!AQWm)-^1H!Qk-bY|@VM<(u#4&O09F
zkKeS3+0NOBEAVMb^ZZ%-4016>#0aV~fozUNR7BhCs}Zs7XhcLXMlc4ZS9!*HO*iZC
z*YEf}(lp!L?RoN%qd#3zRU?iZiA>LA#3mvFp{x+==%hXB%1~A%pZeH#zJJf7-0<cL
zIc4>E*rq_Op~@qP>nqjpR|a_A`e}CVTYP4)F$S!$w6N@nBOy_Q*a{4^jWBI=mWPMP
zGS4_a#O&H08Us~b;5$NDI#i)IaMX<=6?osFstsw{fta#y?_NH0<8}xofBM$n<@C9;
zFlGo0DT<VSw@;B*TYK<f1!DyoZ9!OpS|I^)pyLhQ)c1GpTYST_@7cO(U41i2y~L-1
zZfmY!Py!mE$^~mOkbtv&nmS@^LkMF;z`2R%8vwN=E+a;zu6p2<ZZ}~x@_hMA4|4bR
z9c;aLn#*3YmAR=Yq&a{$o~nc-8?t8B^X`9n?WwB%uiDY50u3=nVpL)<#AvBQL`=qA
zcR$GI?%46{G>)-_B*r|e<x@9-#DTR2mk2RJXxh{zliP+6QEiAZBTZ6#VknD>qHL4e
z^lZixyB690^_}e4@i<AUyy1q+ICVph>3#?50_5lOUrR-6%e#rGZV_7PYHjQAt8L>^
z(?!+7FQ~W^`&nt{Fe1+m);ULvk){fuN>w(**uy7)7>KR*iV9hlF&q|DrLungS=5#C
z-~$hH$L%-k;RDOkO{Vl!*IXqhpVY^@KtC&}M$0&(q%MUJan7N^VMSWKj({q9RHI9~
ztwb!MLXd!13)IhTxQPhzOXk$ZctTSXqb19_Sd)>sS(caQsj7;qtZAC|Ohr{MG9K6L
z-gTG<zI_Y(p2$)Bk2Y=I*ne!#ftUZ~8!y|n@#KU-7RhWM4FMw^ylW#<HLXnb+HH?B
zU?x=pgk~}$YHPG&AzIWo2zF8>ehJv053^*Fq)uE#UXUdnj0qe%IM1zL+|Hoy8Rr$D
zsoOn|V2o!xtUteJ_tKY~gOfJQa^34LDn9X<yFY!;cORnzFYosTbh8vIBkF35C&kjC
zDU^l?RxwV|quWH|v0NhNXjCUvA_l<Vtb&Occ@7#|D~QN1b!dD24s{M?S%Y!!zxRQs
z{`SI6DZ@g@P)y=Tx?Q@Rl)3I2e(>lL00$qL=ix{0K6W4PP-_Cco?*P0(|6N^s=>Ps
zMT}UdkW|#6Kup_tDduQ-CrUl3`*G5sI4}+*LsbdC;Lx2Y7pq8?PEn0VkQ68lYRh)a
zKdHNQSz#GqV~S`y)A|07%j1n#M$cUY8zE80^3s?@W~oDsSVv8Raj`vVQ#vvkAf`=F
zBJFXb5E{T@#Djvh_E^Nn<4A9i;Qe#ZxZktXc}+D|5^FHVw4G4fhqY9X772mGgLltg
z(G)0!=BP~w3O@0aW!}n95uz$FMg+mt3C0*Of*3>Q9ZDd!O*Bz;GL=`dZilLFNYlYD
z2OA6Pe)iMD^rku-SqLa@A`8tiuvRRIaU9t{#zdZXhuKS!U3>O0Smj8hOVf<n318FT
ztZkJX()PF-KtemC1&py1O)hOzY0p|&Yw?m&g_<bOaWrUV+P=p4uv!J0V&c9ZH7Jfs
z<^Ul;DiCw?<E0qyeLi5%Shr!_I6rv(c)1R$kR`3*2hi_BZ!jRsQnD<?dnHLyI$1`y
z*Q49%l65^vYDtoWG-<C(k^~p~7%@Ebz3-+U`p@nE>&FIvyMDWVjq85^SrX}2--bXo
P00000NkvXXu0mjfKO^zd

literal 0
HcmV?d00001

diff --git a/img/services-logo/spxvii.png b/img/services-logo/spxvii.png
new file mode 100644
index 0000000000000000000000000000000000000000..72d007dc38bb4fd5af39880b63ddf13fcb1ff419
GIT binary patch
literal 2114
zcmV-I2)*}-P)<h;3K|Lk000e1NJLTq000~S001%w1^@s6PpiAq00009a7bBm001s1
z001s10r8d=egFUf2XskIMF-*o6buU|KxaSo000N!Nkl<ZSi|j@dvH|M9mhZC+<W(t
z-6RWnY(gFoL>f>7jb@azJS?4Y+EVK10Cs9^t1~_d8d7xZOdU%**s)WUWYp5>IMdEp
zt)<nDqfW7)Eh0KmOQVr&fDkZ|B%23G*krShd(Y_~+0DZwl+edt{QkP<+;h(Net+lp
zyn<PzJh+{fa9!%Trc}T>t+^4nMhH<X1VSnODS{6KysR|`TYBnG0bEg3%h5BtXFONT
zG`YO6hUTt%$_r|9QR;bM72xOm5&_;7rnn{4SvRmOSVJgWe_?<rR%_Ah13b)8gy74e
zaQz$0g4+qDw3HS(d2r=|+A*;Fnr&$Qb}?W8TJzUs!R_A(h3i-z+&(kI^w*RJYbw!v
za6a}I&QyFM6s~(`R+Uy1KVT&ii2=aJe@FVI<Vu9>ZtmJWU8RXc;umQ!M+s~tv6aM8
z0<9Sz+e)IeK<m^RCp~8TT}pD4;=9dVyV<nq#{ifB)zv@eY-?vWumQj_6g$86KGCEJ
z8hS^(ym_pc+pC)yj#+q2hXcn-NIC}JyyiGwSCZkF3r7nwTsAMfe>rcp7GW6*pcZ)a
z?LYPcU;uP<93aoXY7y`-fTINmTZ?)4tM9Qm_Z(YaSjV|hH;$6ryY3@e!t;5yVHv0T
zvnZV(;l>qh)c$ET&o-1(92nsz8yaZs3vjwW3jx0T%vG<R8h)~Cs!Fw9Klx%UsThj6
z=^ysuXo(>;k+=(6NzO(+7*b;yifG(Ipz&G`K6jE=n#zzuv;K1(IBM*8rS+C+ZlMJ$
zX7Q=>J8f#xQ36LvRu=c75VZAXBZW>KPGx$zIl+*?#hRkhg1c6KjFgJ}%u(vzSjpZa
zOUD6)VBR!9AsEv7;sB-4JoWbqj)mue0Jq^_ju}ik5DZRd2u+g@Njehr7<Jo`voHhO
z5g<THjmNSvq@L+o{y9@<J1{;eHJh()#WWNyOR=${ZOZ-Gjz9y&ff24P>*ma$pIfVr
zQN6f(vJXy{7pE}1V!?Klqq~4pK$%v8{h<>6a<p_TAlL>8N1_2kYL4~HL!cRqy7}3@
zDwGB(Kx-xpWkUKw;re%{03PkE0~jpNuX!D~TLS}8_xO%GzxXjiK<A*3P}h78gi7#O
z4hct+7<K)-D}HL$Y+<?NcEI`Uj#K?v<oZWRI0oDPuok!FT&O+8g=Ei??0crW*7Cwy
zn!9#W9;~TGb9nNubX+y1n$alElNWCeh3j9MkzopqmT>($LWp}OFEXUYZ8~!T1MUii
z>t8C*yKl;*G39ng8q#_3y<GowCxIIP*Bsq)7`VTsr+&}!!rEzN#xw^@C1F~^^}iEB
zlmmO`0QQm)qN1gz{>ieeZKQKxMM>?1nyVIWTNg`;$nkKXH|{Lzggb12iqahnbPUm<
zpJ91nO__4|A+QF>1kxrPPZdvxr4+lGyX#I*|AwDt`K@?<MM;02?Z_f=d-W}P>zYPR
zgad<r{_wKy*N-lIelWi5QTTT9vs<q!-C-nSb^w7}jD@VY<+cW!Iv#TXmSlaO)^ooE
zz-K+QrYL)4$L6b#uUvh3XI?Nf>V3AM9I<WfCcW$HZ=<xpYuTLW3GmF}D`@M>e)^-%
zoIULW1+DNve9WY8<MT`MInw&r4BC9o2zZW`RxJ$QFh3*q&{wWJU3AmRlVgFyk+=-S
z69+0MVyUA9!*PoRff06YXrOP{v-M<e_MLl=ENy$G>A{!#Mtr~0Jbda%>t_S^&ZRjS
zv2U$jvhN#Pu0FANS;5)N!t4>G(8O(Hx~rraCT9rHLTEgu!<iu;uQn~Fu_HG=lC&Cy
zCZZuYFC%u<ilTnjm$$PhCqmpdaMaAjp4)V$GMu@-6pSWKax&t4Z&fp_!kw_?wT>28
zhQg8xjX)_uG+|zl8DG#Uol<!^2pD5|3tP##=T835atZJf;3dFIfd6|rZ!C3`plis7
zX(&uXljo13wIG%>@mMwhJ&_Cmf>}|9MqRiJHU4hS481O!AH2ARP<IaZ{QgTccI4x+
zY#!NHMcg)!Lep@%fLnii1L265k+?ObfSxm;%TPF4j<;l>dAF^Q6TJc2&t@WpW`0JD
zn(G_6Z|^!hmW|6)|M?xpk_Jz2d6TP(`Z;v6i0jI_d31jjes>Z_Np4(mlFRc3seN%R
zLg<SJOjiM3%cdYJ%0Jrk*}C>aZolp*r~5NG+_r#7+#+rpJbu$5^8BN-X8duZky2ww
zHDiepO_)4!^IK$l;{aTiJA~s%{GKGgxphAoE}LBcC`m^$nlyQ2<KbBujI{|0Bhyp8
z*=st6A+^^u6h4=o%JKp!AmEMTNi{EC*I2_T1Y~;?WVmen?j&Za1u&#Wrk<tHNC^W`
z4`&Ab9BM1-f32zP69KzSQzi;3i~AM_vq$bI@JDakxT1~q<sBp)NzzUi6c^TdyG)0K
zWAIv28T(sGk^@oCue*nQ&ozFU+iq*KM*yrWy`RSRiCWWV{pjYh+{oRVE0342S<)E{
zWW=p(Z#>0jQtyr+mNbaOT%3!!=p6Dz_J>M)UjAtDd%Y3Qo|v=i(0CDDvV*3M$EW@Y
zsVu&qBcDz#a(4!DGh&5Ri^40sF8g{*sLD)FqRi{jIkwGcWYp@4JI1l3BOCgLy$9d_
sB=||(@pZ$4qv;b?me$hPKJl~mUwmp;i4sgG5dZ)H07*qoM6N<$f*5rB7XSbN

literal 0
HcmV?d00001

diff --git a/img/services-logo/walenty.png b/img/services-logo/walenty.png
new file mode 100644
index 0000000000000000000000000000000000000000..44259c2383169e58a53df6492b747ee65f20061a
GIT binary patch
literal 3447
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
Z{|7yQInbbwDA51_002ovPDHLkV1j~TofiNA

literal 0
HcmV?d00001

diff --git a/img/services-logo/word2vec.png b/img/services-logo/word2vec.png
new file mode 100644
index 0000000000000000000000000000000000000000..29f9e75a49c518abb9a93010dbc606653ce34db5
GIT binary patch
literal 5163
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
Z{{!vCnGa)bQ0f2x002ovPDHLkV1nlqGUxyR

literal 0
HcmV?d00001

diff --git a/index.shtml b/index.shtml
new file mode 100644
index 0000000..77c9730
--- /dev/null
+++ b/index.shtml
@@ -0,0 +1,239 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8" />
+  <link rel="shortcut icon" href="/img/favicon.ico" />
+
+  <title>Platforma leksykalna</title>
+
+  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
+  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
+  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.11/handlebars.min.js"></script>
+  <script src="/js/table/bootstrap-table.min.js"></script>
+  <script src="https://d3js.org/d3.v4.min.js"></script>
+
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
+  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.11.1/bootstrap-table.min.css" />
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
+  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
+
+  <link rel="stylesheet" href="/word2vec/jqcloud.css">
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Saira+Semi+Condensed:400,700&amp;subset=latin-ext">
+  <link rel="stylesheet" href="/css/modal.css">
+  <link rel="stylesheet" href="/css/graph-creator.css">
+  <link rel="stylesheet" href="/css/style.css">
+  <link rel="stylesheet" href="/plwordnet/plwordnet.css">
+  <link rel="stylesheet" href="/spxvii/spxvii.css">
+  <link rel="stylesheet" href="/walenty/walenty.css">
+  <link rel="stylesheet" href="/morfeusz/morfeusz.css">
+  <link rel="stylesheet" href="/css/nav.css" />
+  <link rel="stylesheet" href="/css/selectmenu-nav.css" />
+  <link rel="stylesheet" href="/css/languages.css" />
+  <link rel="stylesheet" 
+          href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" 
+          integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" 
+          crossorigin="anonymous">
+
+</head>
+<body class="pl" lang="pl">
+
+  <div id="about-us-modal" class="modal fade"></div>
+  <div id="about-app-modal" class="modal fade"></div>
+
+  <!-- MENU -->
+  <nav id="nav" class="navbar navbar-inverse navbar-static-top navbar-main" role="navigation">
+    <div class="navbar-header">
+      <button id="hamburger" class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target="#navbar-collapse-1" >
+        <span class="sr-only">Toggle navigation</span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+    </div>
+
+    <div id="navbar-collapse-1" id="app_head" class="collapse navbar-collapse">
+        <a class="logo" href="http://clarin-pl.eu" title="Clarin">
+          <img src="/img/logo-small.png" alt="Clarin logo" />
+        </a>
+        <ul class="nav navbar-nav">
+          <!-- <li class="li-animation">
+            <a lang="pl" target="_blank" href="http://ws.clarin-pl.eu"><span>Indeks usług</span></a>
+            <a lang="en" target="_blank" href="http://ws.clarin-pl.eu/?en"><span>Service index</span></a>
+          </li> -->
+          <li id="about-app" class="li-animation" data-toggle="modal" data-target="#about-app-modal"><a href="#"><span lang="pl">O aplikacji</span><span lang="en">About app</span></a></li>
+          <li id="about-info" class="li-animation" data-toggle="modal" data-target="#about-us-modal"><a href="#"><span lang="pl">O nas</span><span lang="en">About</span></a></li>
+          <li class="li-animation">
+            <select id="languages" name="languages">
+              <option value="lang-pl" data-class="pl">PL</option>
+              <option value="lang-en" data-class="en">EN</option>
+            </select>
+          </li>
+        </ul>
+    </div>
+  </nav>
+
+  <!-- MODAL -->
+  <div class="modal fade" id="infoModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+    <div class="modal-dialog">
+      <div class="modal-content">
+        <div class="modal-header">
+          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+          <h4 class="modal-title" id="info_modal_title">
+            <span lang="pl">Lista</span>
+            <span lang="en">List</span>
+          </h4>
+        </div>
+        <div id="info_modal_body" class="modal-body">
+          loading...
+        </div>
+      </div>
+    </div>
+  </div>
+
+  <!-- OPTIONS -->
+  <section id="options">
+    <div id="add-margin-on-nav-expand" class="container-fluid container-fluid-nav-adjust">
+      <div class="row">
+        <form>
+          <h1 lang="pl">Opcje</h1>
+          <h1 lang="en">Options</h1>
+          <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12 options-box">
+            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
+              <p lang="pl">Rodzaj elementu</p>
+              <p lang="en">Type of element</p>
+            </div>
+            <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
+              <div class="select-wrapper">
+                <select id="type" class="form-control"></select>
+              </div>
+            </div>
+          </div>
+
+          <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12 options-box">
+            <div id="lang-box">
+              <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
+                <p lang="pl">Język</p>
+                <p lang="en">Language</p>
+              </div>
+              <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
+                <div class="select-wrapper">
+                  <select id="lang" class="form-control"></select>
+                </div>
+              </div>
+            </div>
+            <div id="synset-box">
+              <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
+                <p lang="pl">Rodzaj synsetu</p>
+                <p lang="en">Type of synset</p>
+              </div>
+              <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
+                <div class="select-wrapper">
+                  <select id="type-of-synset" class="form-control"></select>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12 options-box">
+            <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
+              <p>Element</p>
+            </div>
+            <div class="col-lg-8 col-md-8 col-sm-8 col-xs-8">
+              <input id="phrase" class="form-control" value="dom" placeholder="" type="text" size="18" autocomplete="off">
+            </div>
+          </div>
+
+          <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 options-box">
+            <button id="startlex" class="btn btn-success" type="submit">
+              <span lang="pl">Wyszukaj</span>
+              <span lang="en">Search</span>
+            </button>
+          </div>
+        </form>
+      </div>
+    </div>
+  </section>
+
+  <div class="decoration"></div>
+
+  <!-- <div class="my-tooltip">Hover over tooltip
+    <span class="my-tooltiptext">Tooltip text</span>
+  </div> -->
+
+  <div id="tooltip-test">Some content</div>
+
+  <div id="lexp_results"></div>
+
+  <div id="debug"></div>
+
+  <!-- CONTENT -->
+  <div id="handlebars_resource_index" class="invisible" type="text/x-handlebars-template">
+    <div id="lexpresource_{{pl.idn}}" class="expand-content">
+      <div lang="pl" class="copyright img-container" rel='tooltip' data-delay='{"show":"0", "hide":"2000"}' data-original-title='{{pl.copyright}}'>
+        <img class="img-responsive" src="/img/services-logo/{{pl.imgSrc}}" alt="{{pl.imgSrc}}" />
+      </div>
+      <div lang="en" class="copyright img-container" rel='tooltip' data-delay='{"show":"0", "hide":"2000"}' data-original-title='{{en.copyright}}'>
+        <img class="img-responsive" src="/img/services-logo/{{en.imgSrc}}" alt="{{en.imgSrc}}" />
+      </div>
+      <span id="arrow-change-lexpresources_{{pl.idn}}" class="arrow glyphicon glyphicon-chevron-down"></span>
+      <h1 lang="pl" title="{{pl.fullName}}" data-toggle="tooltip" data-placement="top">{{pl.name}}</h1>
+      <h1 lang="en" title="{{en.fullName}}" data-toggle="tooltip" data-placement="top">{{en.name}}</h1>
+      <span lang="pl" class="help glyphicon glyphicon-question-sign" style="cursor: pointer;" title="Informacje o zasobie" type="button" data-toggle="modal" data-target="#infoModal" onclick="Lexp.lexpResources['{{pl.idn}}'].showInfo()"></span>
+      <span lang="en" class="help glyphicon glyphicon-question-sign" style="cursor: pointer;" title="Information about a resource" type="button" data-toggle="modal" data-target="#infoModal" onclick="Lexp.lexpResources['{{pl.idn}}'].showInfo()"></span>
+      <a lang="pl" target="{{pl.idn}}" href="{{pl.url}}" style="color: inherit;">
+        <span data-toggle="tooltip" data-placement="top" title="Bezpośredni link do zasobu" class="source glyphicon glyphicon glyphicon-link"></span>
+      </a>
+      <a lang="en" target="{{pl.idn}}" href="{{en.url}}" style="color: inherit;">
+        <span data-toggle="tooltip" data-placement="top" title="Direct link for resource" class="source glyphicon glyphicon glyphicon-link"></span>
+      </a>
+    </div>
+
+    <!-- MAIN CONTENT -->
+    <div id="lexpelement_{{pl.idn}}"></div>
+
+    <div class="decoration-box">
+      <div class="decoration"></div>
+    </div>
+  </div>
+
+  <footer>
+    <p lang="pl">webserwisy&#64;clarin-pl.eu</p>
+    <p lang="en">webservices&#64;clarin-pl.eu</p>
+  </footer>
+
+  <script src="/js/ace/ace.js"></script>
+  <script src="/js/d3.v4.min.js"></script>
+  <script src="/js/graph-creator.js"></script>
+
+  <script src="/js/languageSettings.js"></script>
+  <script src="/js/populate-selects.js"></script>
+  <script src="/js/selects/basic-options.js"></script>
+  <script src="/js/nav-expand.js"></script>
+  <script src="/js/about-app-modal.js"></script>
+  <script src="/js/about-us-modal.js"></script>
+
+  <script src="/js/element.js"></script>
+  <script src="/js/resource.js"></script>
+  <script src="/js/lexp.js"></script>
+  <script src="/js/options.js"></script>
+
+  <script src="/omwn/omwn.js"></script>
+  <script src="/hask/hask.js"></script>
+  <script src="/plwordnet/plwordnet.js"></script>
+  <script src="/morfeusz/morfeusz.js"></script>
+  <script src="/eswil/eswil.js"></script>
+  <script src="/spxvi/js/spxvi.js"></script>
+  <script src="/spxvii/spxvii.js"></script>
+  <script src="/walenty/walenty.js"></script>
+  <script src="/word2vec/word2vec.js"></script>
+  <script src="/word2vec/jqcloud-1.0.4.js"></script>
+
+  <script>
+    createAboutUsModal();
+    createAboutAppModal();
+    Lexp.init("#lexp_results");
+  </script>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/js/about-app-modal.js b/js/about-app-modal.js
new file mode 100644
index 0000000..4759f17
--- /dev/null
+++ b/js/about-app-modal.js
@@ -0,0 +1,36 @@
+var aboutAppHeaderPL = "Opis aplikacji";
+var aboutAppHeaderEN = "Description of application";
+
+
+var aboutAppCitation = "Dodać opis"; 
+
+var aboutAppDescriptionPL = "Usługa powstała w ramach projektu <a href='https://clarin-pl.eu' target='_blank'>CLARIN-PL</a>.";
+var aboutAppDescriptionEN = "Service developed with a framework of <a href='https://clarin-pl.eu'  target='_blank'>CLARIN-PL</a> project.";
+
+var aboutAppCitation = "<span id='extra_citation'></span>"+
+"Piasecki, M., Walkowiak, T., Rudnicka, E., & Bond, F. <a href='https://doi.org/10.11649/cs.1811'  target='_blank'>Lexical platform – the first step towards user-centred integration of lexical resources</a>. Cognitive Studies | Études cognitives, 2018(18)<br\>";
+
+var aboutAppFooterPL = "Kontakt: webserwisy&#64;clarin-pl.eu";
+var aboutAppFooterEN = "Contact: webservices&#64;clarin-pl.eu";
+
+function createAboutAppModal() {
+  $('#about-app-modal').append(
+    '<div class="modal-content modal-content-nav">' +
+      '<div class="modal-header">' +
+        '<span data-dismiss="modal" class="close" id="aboutAppClose">&times;</span>' +
+        '<h2 lang="pl">' + aboutAppHeaderPL + '</h2>' +
+        '<h2 lang="en">' + aboutAppHeaderEN + '</h2>' +
+      '</div>' +
+      '<div class="modal-body">' +
+        '<p lang="pl" class="description">' + aboutAppDescriptionPL + '</p>' +
+        '<p lang="en" class="description">' + aboutAppDescriptionEN + '</p><br>' +
+        '<p lang="pl" class="author"><strong>Publikacje:<br></strong>' + aboutAppCitation + '</p>' +
+        '<p lang="en" class="author"><strong>Publication:<br></strong>' + aboutAppCitation + '</p>' +
+      '</div>' +
+  '<div class="modal-footer">' +
+        '<p lang="pl">' + aboutAppFooterPL+ '</p>' +
+        '<p lang="en">' + aboutAppFooterEN + '</p>' +
+      '</div>' +
+    '</div>'
+  );
+}
\ No newline at end of file
diff --git a/js/about-us-modal.js b/js/about-us-modal.js
new file mode 100644
index 0000000..d3ffbbe
--- /dev/null
+++ b/js/about-us-modal.js
@@ -0,0 +1,37 @@
+var aboutUsHeaderPL = "Autorzy usługi";
+var aboutUsHeaderEN = "Authors of service";
+var aboutUsprogrammers = "";
+var aboutUsdescription = "<br/>Koordynator projektu CLARIN-PL: <i>Maciej Piasecki</i> <br/>"+
+"Koordynator serwisu lexp.clarin-pl.eu: <i>Tomasz Walkowiak</i> <br/>"+
+"Programiści: <i>Tomasz Walkowiak, Łukasz Królak</i>";
+var aboutUsdescriptionEN =  "<br/>CLARIN-PL co-ordinator: <i>Maciej Piasecki</i> <br/>"+
+"Service co-ordinator: <i>Tomasz Walkowiak</i> <br/>"+
+"Concept: <i>Maciej Piasecki, Tomasz Walkowiak, Ewa Rudnicka, Francis Bond</i> <br/>"+
+"Coders: <i>Tomasz Walkowiak, Łukasz Królak</i>";
+
+var aboutUsCitation = "Dodać opis";
+
+var aboutUsFooterPL = "Kontakt: webserwisy&#64;clarin-pl.eu";
+var aboutUsFooterEN = "Contact: webservices&#64;clarin-pl.eu";
+
+function createAboutUsModal() {
+  $('#about-us-modal').append(
+    '<div class="modal-content modal-content-nav">' +
+      '<div class="modal-header">' +
+        '<span data-dismiss="modal" class="close" id="close">&times;</span>' +
+        '<h2 lang="pl">' + aboutUsHeaderPL + '</h2>' +
+        '<h2 lang="en">' + aboutUsHeaderEN + '</h2>' +
+      '</div>' +
+      '<div class="modal-body">' +
+        '<p lang="pl" class="author">' + aboutUsdescription + '</p>' +
+        '<p lang="en" class="description">' + aboutUsdescriptionEN + '</p><br>' +
+        //'<p lang="pl" class="author"><strong>Publikacje:<br></strong>' + aboutUsCitation + '</p>' +
+        //'<p lang="en" class="author"><strong>Publication:<br></strong>' + aboutUsCitation + '</p>' +
+      '</div>' +
+  '<div class="modal-footer">' +
+        '<p lang="pl">' + aboutUsFooterPL+ '</p>' +
+        '<p lang="en">' + aboutUsFooterEN + '</p>' +
+      '</div>' +
+    '</div>'
+  );
+}
\ No newline at end of file
diff --git a/js/ace/ace.js b/js/ace/ace.js
new file mode 100644
index 0000000..65ffc16
--- /dev/null
+++ b/js/ace/ace.js
@@ -0,0 +1,11 @@
+(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE = "ace",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u<a;++u){var f=s(e,t[u]);if(f==undefined&&r.original)return;o.push(f)}return n&&n.apply(null,o)||!0}},r=function(e,t){var i=n("",e,t);return i==undefined&&r.original?r.original.apply(this,arguments):i},i=function(e,t){if(t.indexOf("!")!==-1){var n=t.split("!");return i(e,n[0])+"!"+i(e,n[1])}if(t.charAt(0)=="."){var r=e.split("/").slice(0,-1).join("/");t=r+"/"+t;while(t.indexOf(".")!==-1&&s!=t){var s=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},s=function(e,r){r=i(e,r);var s=t.modules[r];if(!s){s=t.payloads[r];if(typeof s=="function"){var o={},u={id:r,uri:"",exports:o,packaged:!0},a=function(e,t){return n(r,e,t)},f=s(a,o,u);o=f||u.exports,t.modules[r]=o,delete t.payloads[r]}s=t.modules[r]=o||s}return s};o(ACE_NAMESPACE)})(),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,n){"use strict";function o(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,"")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,""),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e=="string"&&t){!i&&t.length>1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){"use strict";e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){"use strict";var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=(e.className||"").split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n<r.length)if(r[n++].owningElement.id===e)return!0}else if(r=t.getElementsByTagName("style"))while(n<r.length)if(r[n++].id===e)return!0;return!1},t.importCssString=function(n,i,s){s=s||document;if(i&&t.hasCssString(i,s))return null;var o;s.createStyleSheet?(o=s.createStyleSheet(),o.cssText=n,i&&(o.owningElement.id=i)):(o=s.createElementNS?s.createElementNS(r,"style"):s.createElement("style"),o.appendChild(s.createTextNode(n)),i&&(o.id=i),t.getDocumentHead(s).appendChild(o))},t.importCssStylsheet=function(e,n){if(n.createStyleSheet)n.createStyleSheet(e);else{var r=t.createElement("link");r.rel="stylesheet",r.href=e,t.getDocumentHead(n).appendChild(r)}},t.getInnerWidth=function(e){return parseInt(t.computedStyle(e,"paddingLeft"),10)+parseInt(t.computedStyle(e,"paddingRight"),10)+e.clientWidth},t.getInnerHeight=function(e){return parseInt(t.computedStyle(e,"paddingTop"),10)+parseInt(t.computedStyle(e,"paddingBottom"),10)+e.clientHeight};if(typeof document=="undefined")return;window.pageYOffset!==undefined?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?t.computedStyle=function(e,t){return t?(window.getComputedStyle(e,"")||{})[t]||"":window.getComputedStyle(e,"")||{}}:t.computedStyle=function(e,t){return t?e.currentStyle[t]:e.currentStyle},t.scrollbarWidth=function(e){var n=t.createElement("ace_inner");n.style.width="100%",n.style.minWidth="0px",n.style.height="200px",n.style.display="block";var r=t.createElement("ace_outer"),i=r.style;i.position="absolute",i.left="-10000px",i.overflow="hidden",i.width="200px",i.minWidth="0px",i.height="150px",i.display="block",r.appendChild(n);var s=e.documentElement;s.appendChild(r);var o=n.offsetWidth;i.overflow="scroll";var u=n.offsetWidth;return o==u&&(u=r.clientWidth),s.removeChild(r),o-u},t.setInnerHtml=function(e,t){var n=e.cloneNode(!1);return n.innerHTML=t,e.parentNode.replaceChild(n,e),n},"textContent"in document.documentElement?(t.setInnerText=function(e,t){e.textContent=t},t.getInnerText=function(e){return e.textContent}):(t.setInnerText=function(e,t){e.innerText=t},t.getInnerText=function(e){return e.innerText}),t.getParentWindow=function(e){return e.defaultView||e.parentWindow}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop"],function(e,t,n){"use strict";e("./fixoldbrowsers");var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){"use strict";t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)u[n]==1&&(a=t.timeStamp);else if(n===18&&o===3&&f===2){var l=t.timestamp-a;l<50&&(u.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,o,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}var r=e("./keys"),i=e("./useragent");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=(u[e.keyCode]||0)+1;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=i.isIE,f=function(e,t){function b(e){if(h)return;h=!0;if(k)t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}h=!1}function w(){if(h)return;n.value=f,i.isWebKit&&y.schedule()}function R(){clearTimeout(q),q=setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},i.isOldIE?200:0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",i.isOldIE&&(n.style.top="-1000px"),e.insertBefore(n,e.firstChild);var f="",l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(e){t.onBlur(e),v=!1}),r.addListener(n,"focus",function(e){v=!0,t.onFocus(e),b()}),this.focus=function(){n.style.position="fixed",n.style.top="-1000px",n.focus(),setTimeout(function(){n.style.position=""},0)},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=f,v&&b())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart("character",e),n.moveEnd("character",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==f)return;if(e&&t==f[0])return T.schedule();A(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,"propertychange",x);var N={13:1,27:1};r.addListener(n,"keyup",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(F,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?j():B()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){l?l=!1:E(n)?(t.selectAll(),b()):k&&b(t.selection.isEmpty())},k=null;this.setInputHandler=function(e){k=e},this.getInputHandler=function(){return k};var L=!1,A=function(e){k&&(e=k(e),k=null),c?(b(),e&&t.onPaste(e),c=!1):e==f.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==f?e=e.substr(2):e.charAt(0)==f.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==f.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),L&&(L=!1)},O=function(e){if(h)return;var t=n.value;A(t),w()},M=function(e,t){var n=e.clipboardData||window.clipboardData;if(!n||u)return;var r=a?"Text":"text/plain";return t?n.setData(r,t)!==!1:n.getData(r)},_=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);M(e,s)?(i?t.onCut():t.onCopy(),r.preventDefault(e)):(l=!0,n.value=s,n.select(),setTimeout(function(){l=!1,w(),b(),i?t.onCut():t.onCopy()}))},D=function(e){_(e,!0)},P=function(e){_(e,!1)},H=function(e){var s=M(e);typeof s=="string"?(s&&t.onPaste(s),i.isIE&&setTimeout(b),r.preventDefault(e)):(n.value="",c=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",C),r.addListener(n,"input",O),r.addListener(n,"cut",D),r.addListener(n,"copy",P),r.addListener(n,"paste",H),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:P(e);break;case 86:H(e);break;case 88:D(e)}});var B=function(e){if(h||!t.onCompositionStart||t.$readOnly)return;h={},t.onCompositionStart(),setTimeout(j,0),t.on("mousedown",F),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},j=function(){if(!h||!t.onCompositionUpdate||t.$readOnly)return;var e=n.value.replace(/\x01/g,"");if(h.lastValue===e)return;t.onCompositionUpdate(e),h.lastValue&&t.undo(),h.lastValue=e;if(h.lastValue){var r=t.selection.getRange();t.insert(h.lastValue),t.session.markUndoGroup(),h.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},F=function(e){if(!t.onCompositionEnd||t.$readOnly)return;var r=h;h=!1;var i=setTimeout(function(){i=null;var e=n.value.replace(/\x01/g,"");if(h)return;e==r.lastValue?w():!r.lastValue&&e&&(w(),A(e))});k=function(n){return i&&clearTimeout(i),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&i&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",F),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},I=o.delayedCall(j,50);r.addListener(n,"compositionstart",B),i.isGecko?r.addListener(n,"text",function(){I.schedule()}):(r.addListener(n,"keyup",function(){I.schedule()}),r.addListener(n,"keydown",function(){I.schedule()})),r.addListener(n,"compositionend",F),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){if(!o&&i.isOldIE)return;p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&!i.isOldIE&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(n,"contextmenu",U)};t.TextInput=f}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();r.$blockScrolling++,o&&r.selection.moveToPosition(n),r.$blockScrolling--,r.textInput.onContextMenu(e.domEvent);return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("<br/>"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left<a.x.right?-3:2),l/i<=1&&(c.row+=a.y.top<a.y.bottom?-1:1);var h=e.row!=c.row,v=e.column!=c.column,m=!n||e.row!=n.row;h||v&&!m?E?r-E>=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"no use strict";function o(e){typeof console!="undefined"&&console.warn&&console.warn.apply(console,arguments)}function u(e,t){var n=new Error(e);n.data=t,typeof console=="object"&&console.error&&console.error(n),setTimeout(function(){throw n})}var r=e("./oop"),i=e("./event_emitter").EventEmitter,s={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return o('misspelled option "'+e+'"');if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:o('misspelled option "'+e+'"')}},a=function(){this.$defaultOptions={}};(function(){r.implement(this,i),this.defineOptions=function(e,t,n){return e.$options||(this.$defaultOptions[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),r.implement(e,s),this},this.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},this.setDefaultValue=function(e,t,n){var r=this.$defaultOptions[e]||(this.$defaultOptions[e]={});r[t]&&(r.forwardTo?this.setDefaultValue(r.forwardTo,t,n):r[t].value=n)},this.setDefaultValues=function(e,t){Object.keys(t).forEach(function(n){this.setDefaultValue(e,n,t[n])},this)},this.warn=o,this.reportError=u}).call(a.prototype),t.AppConfig=a}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"],function(e,t,n){"no use strict";function f(r){a.packaged=r||e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var i={},s="",o=document.currentScript||document._currentScript,f=o&&o.ownerDocument||document,c=f.getElementsByTagName("script");for(var h=0;h<c.length;h++){var p=c[h],d=p.src||p.getAttribute("src");if(!d)continue;var v=p.attributes;for(var m=0,g=v.length;m<g;m++){var y=v[m];y.name.indexOf("data-ace-")===0&&(i[l(y.name.replace(/^data-ace-/,""))]=y.value)}var b=d.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);b&&(s=b[1])}s&&(i.base=i.base||s,i.packaged=!0),i.basePath=i.base,i.workerPath=i.workerPath||i.base,i.modePath=i.modePath||i.base,i.themePath=i.themePath||i.base,delete i.base;for(var w in i)typeof i[w]!="undefined"&&t.set(w,i[w])}function l(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./lib/net"),o=e("./lib/app_config").AppConfig;n.exports=t=new o;var u=function(){return this}(),a={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return a[e]},t.set=function(e,t){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);a[e]=t},t.all=function(){return r.copyObject(a)},t.moduleUrl=function(e,t){if(a.$moduleUrls[e])return a.$moduleUrls[e];var n=e.split("/");t=t||n[n.length-2]||"";var r=t=="snippets"?"/":"-",i=n[n.length-1];if(t=="worker"&&r=="-"){var s=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");i=i.replace(s,"")}(!i||i==t)&&n.length>1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){(!document.hasFocus||!document.hasFocus())&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(e){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var n=this.session.getTabSize(),e=this.lead;this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column,e.column+n).split(" ").length-1==n?this.moveCursorBy(0,n):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var e=this.lead.row,t=this.lead.column,n=this.session.documentToScreenRow(e,t),r=this.session.screenToDocumentPosition(n,0),i=this.session.getDisplayLine(e,null,r.row,r.column),s=i.match(/^\s*/);s[0].length!=t&&!this.session.$useEmacsStyleLineStart&&(r.column+=s[0].length),this.moveCursorToPosition(r)},this.moveCursorLineEnd=function(){var e=this.lead,t=this.session.getDocumentLastRowColumnPosition(e.row,e.column);if(this.lead.column==t.column){var n=this.session.getLine(t.row);if(t.column==n.length){var r=n.search(/\s+$/);r>0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e<this.doc.getLength()-1&&this.moveCursorWordRight();return}if(i=this.session.tokenRe.exec(r))t+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.moveCursorLongWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1)){this.moveCursorTo(n.start.row,n.start.column);return}var r=this.session.getFoldStringAt(e,t,-1);r==null&&(r=this.doc.getLine(e).substring(0,t));var s=i.stringReverse(r),o;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;if(o=this.session.nonTokenRe.exec(s))t-=this.session.nonTokenRe.lastIndex,s=s.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0;if(t<=0){this.moveCursorTo(e,0),this.moveCursorLeft(),e>0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e<s&&/^\s*$/.test(r));/^\s+/.test(r)||(r=""),t=0}var o=this.$shortWordEndIndex(r);this.moveCursorTo(e,t+o)},this.moveCursorShortWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1))return this.moveCursorTo(n.start.row,n.start.column);var r=this.session.getLine(e).substring(0,t);if(t===0){do e--,r=this.doc.getLine(e);while(e>0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e.isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a<n.length;a++){var f=n[a];f.defaultToken&&(s.defaultToken=f.defaultToken),f.caseInsensitive&&(o="gi");if(f.regex==null)continue;f.regex instanceof RegExp&&(f.regex=f.regex.toString().slice(1,-1));var l=f.regex,c=(new RegExp("(?:("+l+")|(.))")).exec("a").length-2;Array.isArray(f.token)?f.token.length==1||c==1?f.token=f.token[0]:c-1!=f.token.length?(this.reportError("number of classes and regexp groups doesn't match",{rule:f,groupCount:c-1}),f.token=f.token[0]):(f.tokenArray=f.token,f.token=null,f.onMatch=this.$arrayTokens):typeof f.token=="function"&&!f.onMatch&&(c>1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;i<s;i++)t[i]&&(r[r.length]={type:n[i],value:t[i]});return r},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";var n=[],r=this.tokenArray;for(var i=0,s=r.length;i<s;i++)t[i+1]&&(n[n.length]={type:r[i],value:t[i+1]});return n},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(e.indexOf("(?=")!=-1){var n=0,r=!1,i={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,s,o,u,a){return r?r=u!="]":u?r=!0:o?(n==i.stack&&(i.end=a+1,i.stack=-1),n--):s&&(n++,s.length!=1&&(i.stack=n,i.start=a)),e}),i.end!=null&&/^\)*$/.test(e.substr(i.end))&&(e=e.substring(0,i.start)+e.substr(i.end))}return new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&typeof t!="string"){var n=t.slice(0);t=n[0],t==="#tmp"&&(n.shift(),t=n.shift())}else var n=[];var r=t||"start",s=this.states[r];s||(r="start",s=this.states[r]);var o=this.matchMappings[r],u=this.regExps[r];u.lastIndex=0;var a,f=[],l=0,c=0,h={type:null,value:""};while(a=u.exec(e)){var p=o.defaultToken,d=null,v=a[0],m=u.lastIndex;if(m-v.length>l){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;y<a.length-2;y++){if(a[y+1]===undefined)continue;d=s[o[y]],d.onMatch?p=d.onMatch(v,r,n):p=d.token,d.next&&(typeof d.next=="string"?r=d.next:r=d.next(r,n),s=this.states[r],s||(this.reportError("state doesn't exist",r),r="start",s=this.states[r]),o=this.matchMappings[r],l=m,u=this.regExps[r],u.lastIndex=m);break}if(v)if(typeof p=="string")!!d&&d.merge===!1||h.type!==p?(h.type&&f.push(h),h={type:p,value:v}):h.value+=v;else if(p){h.type&&f.push(h),h={type:null,value:""};for(var y=0;y<p.length;y++)f.push(p[y])}if(l==e.length)break;l=m;if(c++>i){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l<e.length)h.type&&f.push(h),h={value:e.substring(l,l+=2e3),type:"overflow"};r="start",n=[];break}}return h.type&&f.push(h),n.length>1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i<r.length;i++){var s=r[i];if(s.next||s.onMatch)typeof s.next!="string"?s.nextState&&s.nextState.indexOf(t)!==0&&(s.nextState=t+s.nextState):s.next.indexOf(t)!==0&&(s.next=t+s.next)}this.$rules[t+n]=r}},this.getRules=function(){return this.$rules},this.embedRules=function(e,t,n,i,s){var o=typeof e=="function"?(new e).getRules():e;if(i)for(var u=0;u<i.length;u++)i[u]=t+i[u];else{i=[];for(var a in o)i.push(t+a)}this.addRules(o,t);if(n){var f=Array.prototype[s?"push":"unshift"];for(var u=0;u<i.length;u++)f.apply(this.$rules[i[u]],r.deepCopy(n))}this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var e=function(e,t){return(e!="start"||t.length)&&t.unshift(this.nextState,e),this.nextState},t=function(e,t){return t.shift(),t.shift()||"start"};this.normalizeRules=function(){function i(s){var o=r[s];o.processed=!0;for(var u=0;u<o.length;u++){var a=o[u];!a.regex&&a.start&&(a.regex=a.start,a.next||(a.next=[]),a.next.push({defaultToken:a.token},{token:a.token+".end",regex:a.end||a.start,next:"pop"}),a.token=a.token+".start",a.push=!0);var f=a.next||a.push;if(f&&Array.isArray(f)){var l=a.stateName;l||(l=a.token,typeof l!="string"&&(l=l[0]||""),r[l]&&(l+=n++)),r[l]=f,a.next=l,i(l)}else f=="pop"&&(a.next=t);a.push&&(a.nextState=a.next||a.push,a.next=e,delete a.push);if(a.rules)for(var c in a.rules)r[c]?r[c].push&&r[c].push.apply(r[c],a.rules[c]):r[c]=a.rules[c];if(a.include||typeof a=="string")var h=a.include||a,p=r[h];else Array.isArray(a)&&(p=a);if(p){var d=[u,1].concat(p);a.noEscape&&(d=d.filter(function(e){return!e.next})),o.splice.apply(o,d),u--,p=null}a.keywordMap&&(a.token=this.createKeywordMapper(a.keywordMap,a.defaultToken||"text",a.caseInsensitive),delete a.defaultToken)}}var n=0,r=this.$rules;Object.keys(r).forEach(i,this)},this.createKeywordMapper=function(e,t,n,r){var i=Object.create(null);return Object.keys(e).forEach(function(t){var s=e[t];n&&(s=s.toLowerCase());var o=s.split(r||"|");for(var u=o.length;u--;)i[o[u]]=t}),Object.getPrototypeOf(i)&&(i.__proto__=null),this.$keywordList=Object.keys(i),e=null,n?function(e){return i[e.toLowerCase()]||t}:function(e){return i[e]||t}},this.getKeywords=function(){return this.$keywords}}).call(i.prototype),t.TextHighlightRules=i}),ace.define("ace/mode/behaviour",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.$behaviours={}};(function(){this.add=function(e,t,n){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][t]=n},this.addBehaviours=function(e){for(var t in e)for(var n in e[t])this.add(t,n,e[t][n])},this.remove=function(e){this.$behaviours&&this.$behaviours[e]&&delete this.$behaviours[e]},this.inherit=function(e,t){if(typeof e=="function")var n=(new e).getBehaviours(t);else var n=e.getBehaviours(t);this.addBehaviours(n)},this.getBehaviours=function(e){if(!e)return this.$behaviours;var t={};for(var n=0;n<e.length;n++)this.$behaviours[e[n]]&&(t[e[n]]=this.$behaviours[e[n]]);return t}}).call(r.prototype),t.Behaviour=r}),ace.define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/token_iterator",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getTokens(t);var r=e.getTokenAt(t,n);this.$tokenIndex=r?r.index:-1};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;var e;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i<r.length;i++)if(r[i].type==="comment")return!0}}else{if(Array.isArray(this.lineCommentStart))var p=this.lineCommentStart.map(u.escapeRegExp).join("|"),c=this.lineCommentStart[0];else var p=u.escapeRegExp(this.lineCommentStart),c=this.lineCommentStart;p=new RegExp("^(\\s*)(?:"+p+") ?"),l=t.getUseSoftTabs();var m=function(e,t){var n=e.match(p);if(!n)return;var r=n[1].length,s=n[0].length;!b(e,r,s)&&n[0][s-1]==" "&&s--,i.removeInLine(t,r,s)},y=c+" ",v=function(e,t){if(!s||/\S/.test(e))b(e,a,a)?i.insertInLine({row:t,column:a},y):i.insertInLine({row:t,column:a},c)},g=function(e,t){return p.test(e)},b=function(e,t,n){var r=0;while(t--&&e.charAt(t)==" ")r++;if(r%f!=0)return!1;var r=0;while(e.charAt(n++)==" ")r++;return f>2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(n<a&&(a=n),o&&!g(e,t)&&(o=!1)):E>e.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t<n.length;t++)(function(e){var r=n[t],i=e[r];e[n[t]]=function(){return this.$delegator(r,arguments,i)}})(this)},this.$delegator=function(e,t,n){var r=t[0];typeof r!="string"&&(r=r[0]);for(var i=0;i<this.$embeds.length;i++){if(!this.$modes[this.$embeds[i]])continue;var s=r.split(this.$embeds[i]);if(!s[0]&&s[1]){t[0]=s[1];var o=this.$modes[this.$embeds[i]];return o[e].apply(o,t)}}var u=n.apply(this,t);return n?u:undefined},this.transformAction=function(e,t,n,r,i){if(this.$behaviour){var s=this.$behaviour.getBehaviours();for(var o in s)if(s[o][t]){var u=s[o][t].apply(this,arguments);if(u)return u}}},this.getKeywords=function(e){if(!this.completionKeywords){var t=this.$tokenizer.rules,n=[];for(var r in t){var i=t[r];for(var s=0,o=i.length;s<o;s++)if(typeof i[s].token=="string")/keyword|support|storage/.test(i[s].token)&&n.push(i[s].regex);else if(typeof i[s].token=="object")for(var u=0,a=i[s].token.length;u<a;u++)if(/keyword|support|storage/.test(i[s].token[u])){var r=i[s].regex.match(/\(.+?\)/g)[u];n.push(r.substr(1,r.length-2))}}this.completionKeywords=n}return e?n.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,n,r){var i=this.$keywordList||this.$createKeywordList();return i.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(l.prototype),t.Mode=l}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=-1,i=n.doc;while(n.lines[t])t++;var s=t,o=i.getLength(),u=0;n.running=!1;while(t<o){n.$tokenizeRow(t),r=t;do t++;while(n.lines[t]);u++;if(u%5===0&&new Date-e>20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.row<this.startRow||e.endRow>this.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f<i.length;f++){s=i[f],o=s.range.compareStart(t,n);if(o==-1){e(null,t,n,r,a);return}u=e(null,s.start.row,s.start.column,r,a),u=!u&&e(s.placeholder,s.start.row,s.start.column,r);if(u||o===0)return;a=!s.sameRow,r=s.end.column}e(null,t,n,r,a)},this.getNextFoldTo=function(e,t){var n,r;for(var i=0;i<this.folds.length;i++){n=this.folds[i],r=n.range.compareEnd(e,t);if(r==-1)return{fold:n,kind:"after"};if(r===0)return{fold:n,kind:"inside"}}return null},this.addRemoveChars=function(e,t,n){var r=this.getNextFoldTo(e,t),i,s;if(r){i=r.fold;if(r.kind=="inside"&&i.start.column!=t&&i.start.row!=e)window.console&&window.console.log(e,t,i);else if(i.start.row==e){s=this.folds;var o=s.indexOf(i);o===0&&(this.start.column+=n);for(o;o<s.length;o++){i=s[o],i.start.column+=n;if(!i.sameRow)return;i.end.column+=n}this.end.column+=n}}},this.split=function(e,t){var n=this.getNextFoldTo(e,t);if(!n||n.kind=="inside")return null;var r=n.fold,s=this.folds,o=this.foldData,u=s.indexOf(r),a=s[u-1];this.end.row=a.end.row,this.end.column=a.end.column,s=s.splice(u,s.length-u);var f=new i(o,s);return o.splice(o.indexOf(this)+1,0,f),f},this.merge=function(e){var t=e.folds;for(var n=0;n<t.length;n++)this.addFold(t[n]);var r=this.foldData;r.splice(r.indexOf(e),1)},this.toString=function(){var e=[this.range.toString()+": ["];return this.folds.forEach(function(t){e.push("  "+t.toString())}),e.push("]"),e.join("\n")},this.idxToPosition=function(e){var t=0;for(var n=0;n<this.folds.length;n++){var r=this.folds[n];e-=r.start.column-t;if(e<0)return{row:r.start.row,column:r.start.column+e};e-=r.placeholder.length;if(e<0)return r.start;t=r.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("./range").Range,i=r.comparePoints,s=function(){this.ranges=[]};(function(){this.comparePoints=i,this.pointIndex=function(e,t,n){var r=this.ranges;for(var s=n||0;s<r.length;s++){var o=r[s],u=i(e,o.end);if(u>0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s<t.length;s++){r=n,n=t[s];var o=i(r.end,n.start);if(o<0)continue;if(o==0&&!r.isEmpty()&&!n.isEmpty())continue;i(r.end,n.end)<0&&(r.end.row=n.end.row,r.end.column=n.end.column),t.splice(s,1),e.push(n),n=r,s--}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row<e)return[];var r=this.pointIndex({row:e,column:0});r<0&&(r=-r-1);var i=this.pointIndex({row:t,column:0},r);i<0&&(i=-i-1);var s=[];for(var o=r;o<i;o++)s.push(n[o]);return s},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){if(!this.session)return;this.session.removeListener("change",this.onChange),this.session=null},this.$onChange=function(e){var t=e.data.range;if(e.data.action[0]=="i")var n=t.start,r=t.end;else var r=t.start,n=t.end;var i=n.row,s=r.row,o=s-i,u=-n.column+r.column,a=this.ranges;for(var f=0,l=a.length;f<l;f++){var c=a[f];if(c.end.row<i)continue;if(c.start.row>i)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&f<l-1&&c.end.column>c.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f<l)for(;f<l;f++){var c=a[f];c.start.row+=o,c.end.row+=o}}}).call(s.prototype),t.RangeList=s}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){"use strict";function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}function a(e,t){u(e.start,t),u(e.end,t)}function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}function l(e,t){f(e.start,t),f(e.end,t)}var r=e("../range").Range,i=e("../range_list").RangeList,s=e("../lib/oop"),o=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};s.inherits(o,i),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new o(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(this.range.isEqual(e))return;if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);a(e,this.start);var t=e.start.row,n=e.start.column;for(var r=0,i=-1;r<this.subFolds.length;r++){i=this.subFolds[r].range.compare(t,n);if(i!=1)break}var s=this.subFolds[r];if(i==0)return s.addSubFold(e);var t=e.range.end.row,n=e.range.end.column;for(var o=r,i=-1;o<this.subFolds.length;o++){i=this.subFolds[o].range.compare(t,n);if(i!=1)break}var u=this.subFolds[o];if(i==0)throw new Error("A fold can't intersect already existing fold"+e.range+this.range);var f=this.subFolds.splice(r,o-r,e);return e.setFoldLine(this.foldLine),e},this.restoreRange=function(e){return l(e,this.start)}}.call(o.prototype)}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){"use strict";function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s<i.length;s++){var o=i[s];if(o.range.contains(e,t)){if(n==1&&o.range.isEnd(e,t))continue;if(n==-1&&o.range.isStart(e,t))continue;return o}}},this.getFoldsInRange=function(e){var t=e.start,n=e.end,r=this.$foldData,i=[];t.column+=1,n.column-=1;for(var s=0;s<r.length;s++){var o=r[s].range.compareRange(e);if(o==2)continue;if(o==-2)break;var u=r[s].folds;for(var a=0;a<u.length;a++){var f=u[a];o=f.range.compareRange(e);if(o==-2)break;if(o==2)continue;if(o==42)break;i.push(f)}}return t.column-=1,n.column+=1,i},this.getFoldsInRangeList=function(e){if(Array.isArray(e)){var t=[];e.forEach(function(e){t=t.concat(this.getFoldsInRange(e))},this)}else var t=this.getFoldsInRange(e);return t},this.getAllFolds=function(){var e=[],t=this.$foldData;for(var n=0;n<t.length;n++)for(var r=0;r<t[n].folds.length;r++)e.push(t[n].folds[r]);return e},this.getFoldStringAt=function(e,t,n,r){r=r||this.getFoldLine(e);if(!r)return null;var i={end:{column:0}},s,o;for(var u=0;u<r.folds.length;u++){o=r.folds[u];var a=o.range.compareEnd(e,t);if(a==-1){s=this.getLine(o.start.row).substring(i.end.column,o.start.column);break}if(a===0)return null;i=o}return s||(s=this.getLine(o.start.row).substring(i.end.column)),n==-1?s.substring(0,t-i.end.column):n==1?s.substring(t-i.end.column):s},this.getFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.start.row<=e&&i.end.row>=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.end.row>=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i<n.length;i++){var s=n[i],o=s.end.row,u=s.start.row;if(o>=t){u<t&&(u>=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u<f||u==f&&a<=l-2){var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);c&&!c.range.isStart(u,a)&&this.removeFold(c),h&&!h.range.isEnd(f,l)&&this.removeFold(h);var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d<n.length;d++){var v=n[d];if(f==v.start.row){v.addFold(o),r=!0;break}if(u==v.end.row){v.addFold(o),r=!0;if(!o.sameRow){var m=n[d+1];if(m&&m.start.row==f){v.merge(m);break}}break}if(f<=v.start.row)break}return r||(v=this.$addFoldLine(new i(this.$foldData,o))),this.$useWrapMode?this.$updateWrapData(v.start.row,v.start.row):this.$updateRowLengthCache(v.start.row,v.start.row),this.$modified=!0,this._emit("changeFold",{data:o,action:"add"}),o}throw new Error("The range has to be at least 2 characters width")},this.addFolds=function(e){e.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(e){var t=e.foldLine,n=t.start.row,r=t.end.row,i=this.$foldData,s=t.folds;if(s.length==1)i.splice(i.indexOf(t),1);else if(t.range.isEnd(e.end.row,e.end.column))s.pop(),t.end.row=s[s.length-1].end.row,t.end.column=s[s.length-1].end.column;else if(t.range.isStart(e.start.row,e.start.column))s.shift(),t.start.row=s[0].start.row,t.start.column=s[0].start.column;else if(e.sameRow)s.splice(s.indexOf(e),1);else{var o=t.split(e.start.row,e.start.column);s=o.folds,s.shift(),o.start.row=s[0].start.row,o.start.column=s[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(n,r):this.$updateRowLengthCache(n,r)),this.$modified=!0,this._emit("changeFold",{data:e,action:"remove"})},this.removeFolds=function(e){var t=[];for(var n=0;n<e.length;n++)t.push(e[n]);t.forEach(function(e){this.removeFold(e)},this),this.$modified=!0},this.expandFold=function(e){this.removeFold(e),e.subFolds.forEach(function(t){e.restoreRange(t),this.addFold(t)},this),e.collapseChildren>0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t<r)return;if(t==r){if(n<i)return;u=Math.max(i,u)}e!=null?o+=e:o+=s.getLine(t).substring(u,n)},t,n),o},this.getDisplayLine=function(e,t,n,r){var i=this.getFoldLine(e);if(!i){var s;return s=this.doc.getLine(e),s.substring(r||0,t||s.length)}return this.getFoldDisplayLine(i,e,t,n,r)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var n=t.folds.map(function(e){return e.clone()});return new i(e,n)}),e},this.toggleFold=function(e){var t=this.selection,n=t.getRange(),r,i;if(n.isEmpty()){var s=n.start;r=this.getFoldAt(s.row,s.column);if(r){this.expandFold(r);return}(i=this.findMatchingBracket(s))?n.comparePoint(i)==1?n.end=i:(n.start=i,n.start.column++,n.end.column--):(i=this.findMatchingBracket({row:s.row,column:s.column+1}))?(n.comparePoint(i)==1?n.end=i:n.start=i,n.start.column++):n=this.getCommentFoldRange(s.row,s.column)||n}else{var o=this.getFoldsInRange(n);if(e&&o.length){this.expandFolds(o);return}o.length==1&&(r=o[0])}r||(r=this.getFoldAt(n.start.row,n.start.column));if(r&&r.range.toString()==n.toString()){this.expandFold(r);return}var u="...";if(!n.isMultiLine()){u=this.getTextRange(n);if(u.length<4)return;u=u.trim().substring(0,2)+".."}this.addFold(u,n)},this.getCommentFoldRange=function(e,t,n){var i=new o(this,e,t),s=i.getCurrentToken();if(s&&/^comment|string/.test(s.type)){var u=new r,a=new RegExp(s.type.replace(/\..*/,"\\."));if(n!=1){do s=i.stepBackward();while(s&&a.test(s.type));i.stepForward()}u.start.row=i.getCurrentTokenRow(),u.start.column=i.getCurrentTokenColumn()+2,i=new o(this,e,t);if(n!=-1){do s=i.stepForward();while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return u.end.row=i.getCurrentTokenRow(),u.end.column=i.getCurrentTokenColumn()+s.value.length-2,u}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i<t;i++){r[i]==null&&(r[i]=this.getFoldWidget(i));if(r[i]!="start")continue;var s=this.getFoldWidgetRange(i);if(s&&s.isMultiLine()&&s.end.row<=t&&s.start.row>=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end|start|begin)\b/,"")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:end|start|begin)\b/,"")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a<l){var c=f.charAt(a);if(c==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else c==e&&(s+=1);a+=1}do u=o.stepForward();while(u&&!n.test(u.type));if(u==null)break;a=0}return null}}var r=e("../token_iterator").TokenIterator,i=e("../range").Range;t.BracketMatch=s}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./config"),o=e("./lib/event_emitter").EventEmitter,u=e("./selection").Selection,a=e("./mode/text").Mode,f=e("./range").Range,l=e("./document").Document,c=e("./background_tokenizer").BackgroundTokenizer,h=e("./search_highlight").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new l(e);this.setDocument(e),this.selection=new u(this),s.resetOptions(this),this.setMode(t),s._signal("session",this)};(function(){function m(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t<s))return i;r=i-1}}return n-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){var t=e.data;this.$modified=!0,this.$resetRowCache(t.range.start.row);var n=this.$updateInternalDataOnChange(e);!this.$fromUndo&&this.$undoManager&&!t.ignore&&(this.$deltasDoc.push(t),n&&n.length!=0&&this.$deltasFold.push({action:"removeFolds",folds:n}),this.$informUndoManager.schedule()),this.bgTokenizer&&this.bgTokenizer.$updateOnChange(t),this._signal("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveTo(0,0),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.setUndoManager(this.$undoManager),this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var n=this.bgTokenizer.getTokens(e),r,i=0;if(t==null)s=n.length-1,i=this.getLine(e).length;else for(var s=0;s<n.length;s++){i+=n[s].value.length;if(i>=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):"	"},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t<e.length;t++)this.$breakpoints[e[t]]="ace_breakpoint";this._signal("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._signal("changeBreakpoint",{})},this.setBreakpoint=function(e,t){t===undefined&&(t="ace_breakpoint"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._signal("changeBreakpoint",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._signal("changeBreakpoint",{})},this.addMarker=function(e,t,n,r){var i=this.$markerId++,s={range:e,type:n||"line",renderer:typeof n=="function"?n:null,clazz:t,inFront:!!r,id:i};return r?(this.$frontMarkers[i]=s,this._signal("changeFrontMarker")):(this.$backMarkers[i]=s,this._signal("changeBackMarker")),i},this.addDynamicMarker=function(e,t){if(!e.update)return;var n=this.$markerId++;return e.id=n,e.inFront=!!t,t?(this.$frontMarkers[n]=e,this._signal("changeFrontMarker")):(this.$backMarkers[n]=e,this._signal("changeBackMarker")),e},this.removeMarker=function(e){var t=this.$frontMarkers[e]||this.$backMarkers[e];if(!t)return;var n=t.inFront?this.$frontMarkers:this.$backMarkers;t&&(delete n[e],this._signal(t.inFront?"changeFrontMarker":"changeBackMarker"))},this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers},this.highlight=function(e){if(!this.$searchHighlight){var t=new h(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(e)},this.highlightLines=function(e,t,n,r){typeof t!="number"&&(n=t,t=e),n||(n="ace_step");var i=new f(e,0,t,Infinity);return i.id=this.addMarker(i,n,"fullLine",r),i},this.setAnnotations=function(e){this.$annotations=e,this._signal("changeAnnotation",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r?\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine="\n"},this.getWordRange=function(e,t){var n=this.getLine(e),r=!1;t>0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(o<n.length&&n.charAt(o).match(i))o++;return new f(e,s,e,o)},this.getAWordRange=function(e,t){var n=this.getWordRange(e,t),r=this.getLine(n.end.row);while(r.charAt(n.end.column).match(/[ \t]/))n.end.column+=1;return n},this.setNewLineMode=function(e){this.doc.setNewLineMode(e)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(e){this.setOption("useWorker",e)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var t=e.data;this.bgTokenizer.start(t.first),this._signal("tokenizerUpdate",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(e,t){if(e&&typeof e=="object"){if(e.getTokenizer)return this.$onChangeMode(e);var n=e,r=n.path}else r=e||"ace/mode/text";this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=new a);if(this.$modes[r]&&!n){this.$onChangeMode(this.$modes[r]),t&&t();return}this.$modeId=r,s.loadModule(["mode",r],function(e){if(this.$modeId!==r)return t&&t();this.$modes[r]&&!n?this.$onChangeMode(this.$modes[r]):e&&e.Mode&&(e=new e.Mode(n),n||(this.$modes[r]=e,e.$id=r),this.$onChangeMode(e)),t&&t()}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0)},this.$onChangeMode=function(e,t){t||(this.$modeId=e.$id);if(this.$mode===e)return;this.$mode=e,this.$stopWorker(),this.$useWorker&&this.$startWorker();var n=e.getTokenizer();if(n.addEventListener!==undefined){var r=this.onReloadTokenizer.bind(this);n.addEventListener("update",r)}if(!this.bgTokenizer){this.bgTokenizer=new c(n);var i=this;this.bgTokenizer.addEventListener("update",function(e){i._signal("tokenizerUpdate",e)})}else this.bgTokenizer.setTokenizer(n);this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(e.attachToSession&&e.attachToSession(this),this.$options.wrapMethod.set.call(this,this.$wrapMethod),this.$setFolding(e.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode"))},this.$stopWorker=function(){this.$worker&&(this.$worker.terminate(),this.$worker=null)},this.$startWorker=function(){try{this.$worker=this.$mode.createWorker(this)}catch(e){s.warn("Could not load worker",e),this.$worker=null}},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(e){if(this.$scrollTop===e||isNaN(e))return;this.$scrollTop=e,this._signal("changeScrollTop",e)},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(e){if(this.$scrollLeft===e||isNaN(e))return;this.$scrollLeft=e,this._signal("changeScrollLeft",e)},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null)return this.lineWidgetsWidth;var e=0;return this.lineWidgets.forEach(function(t){t&&t.screenWidth>e&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;a<u;a++){if(a>o){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;r<e.length;r++){var i=e[r];i.group=="doc"&&(this.doc.applyDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!1,n))}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.setUndoSelect=function(e){this.$undoSelect=e},this.$getUndoSelection=function(e,t,n){function r(e){var n=e.action==="insertText"||e.action==="insertLines";return t?!n:n}var i=e[0],s,o,u=!1;r(i)?(s=f.fromPoints(i.range.start,i.range.end),u=!0):(s=f.fromPoints(i.range.start,i.range.start),u=!1);for(var a=1;a<e.length;a++)i=e[a],r(i)?(o=i.range.start,s.compare(o.row,o.column)==-1&&s.setStart(i.range.start),o=i.range.end,s.compare(o.row,o.column)==1&&s.setEnd(i.range.end),u=!0):(o=i.range.start,s.compare(o.row,o.column)==-1&&(s=f.fromPoints(i.range.start,i.range.start)),u=!1);if(n!=null){f.comparePoints(n.start,s.start)===0&&(n.start.column+=s.end.column-s.start.column,n.end.column+=s.end.column-s.start.column);var l=n.compareRange(s);l==1?s.setStart(n.start):l==-1&&s.setEnd(n.end)}return s},this.replace=function(e,t){return this.doc.replace(e,t)},this.moveText=function(e,t,n){var r=this.getTextRange(e),i=this.getFoldsInRange(e),s=f.fromPoints(t,t);if(!n){this.remove(e);var o=e.start.row-e.end.row,u=o?-e.end.column:e.start.column-e.end.column;u&&(s.start.row==e.end.row&&s.start.column>e.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o<r;++o)if(s.charAt(o)!=" ")break;o<r&&s.charAt(o)=="	"?(n.start.column=o,n.end.column=o+1):(n.start.column=0,n.end.column=o),this.remove(n)}},this.$moveLines=function(e,t,n){e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t);if(n<0){var r=this.getRowFoldStart(e+n);if(r<0)return 0;var i=r-e}else if(n>0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=u.row&&l.shiftRow(-n)}s=i}else{var p=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l&&(l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column))):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;f<o.length;f++)o[f]=u}else o=this.$getDisplayTokens(r[t].substring(s,i),a.length);a=a.concat(o)}.bind(this),f.end.row,r[f.end.row].length+1),s[f.start.row]=this.$computeWrapSplits(a,o,i),l=f.end.row+1):(a=this.$getDisplayTokens(r[l]),s[l]=this.$computeWrapSplits(a,o,i),l++)};var e=1,t=2,n=3,u=4,l=9,p=10,d=11,v=12;this.$computeWrapSplits=function(e,r){function c(t){var n=e.slice(o,t),r=n.length;n.join("").replace(/12/g,function(){r-=1}).replace(/2/g,function(){r-=1}),a+=r,i.push(a),o=t}if(e.length==0)return[];var i=[],s=e.length,o=0,a=0,f=this.$wrapAsCode;while(s-o>r){var h=o+r;if(e[h-1]>=p&&e[h]>=p){c(h);continue}if(e[h]==n||e[h]==u){for(h;h!=o-1;h--)if(e[h]==n)break;if(h>o){c(h);continue}h=o+r;for(h;h<e.length;h++)if(e[h]!=u)break;if(h==e.length)break;c(h);continue}var d=Math.max(h-(f?10:r-(r>>2)),o-1);while(h>d&&e[h]<n)h--;if(f){while(h>d&&e[h]<n)h--;while(h>d&&e[h]==l)h--}else while(h>d&&e[h]<p)h--;if(h>d){c(++h);continue}h=o+r,e[h]==t&&h--,c(h)}return i},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o<n.length;o++){var u=n.charCodeAt(o);if(u==9){s=this.getScreenTabSize(i.length+r),i.push(d);for(var a=1;a<s;a++)i.push(v)}else u==32?i.push(p):u>39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i<e.length;i++){r=e.charCodeAt(i),r==9?n+=this.getScreenTabSize(n):r>=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];if(v){var m=Math.floor(e-o);s=v[m],m>0&&v.length&&(i=v[m-1]||v[v.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u<e){if(u>=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i];if(v){var m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;r<n.length;r++)t=n[r],e-=t.end.row-t.start.row}else{var i=this.$wrapData.length,s=0,r=0,t=this.$foldData[r++],o=t?t.start.row:Infinity;while(s<i){var u=this.$wrapData[s];e+=u?u.length+1:1,s++,s>o&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;h<a;h++)if(i[c+h].search(u[h])==-1)continue e;var p=i[c],d=i[c+a-1],v=p.length-p.match(u[0])[0].length,m=d.match(u[a-1])[0].length;if(l&&l.end.row===c&&l.end.column>v)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;g<i.length;g++){var y=r.getMatchOffsets(i[g],u);for(var h=0;h<y.length;h++){var b=y[h];o.push(new s(g,b.offset,g,b.offset+b.length))}}if(n){var w=n.start.column,E=n.start.column,g=0,h=o.length-1;while(g<h&&o[g].start.column<w&&o[g].start.row==n.start.row)g++;while(g<h&&o[h].end.column>E&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g<h;g++)o[g].start.row+=n.start.row,o[g].end.row+=n.start.row}return o},this.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=r.exec(e);if(!i||i[0].length!=e.length)return null;t=e.replace(r,t);if(n.preserveCase){t=t.split("");for(var s=Math.min(e.length,e.length);s--;){var o=e[s];o&&o.toLowerCase()!=o?t[s]=t[s].toUpperCase():t[s]=t[s].toLowerCase()}t=t.join("")}return t},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i;if(t.$isMultiLine)var o=n.length,u=function(t,r,u){var a=t.search(n[0]);if(a==-1)return;for(var f=1;f<o;f++){t=e.getLine(r+f);if(t.search(n[f])==-1)return}var l=t.match(n[o-1])[0].length,c=new s(r,a,r+o-1,l);n.offset==1?(c.start.row--,c.start.column=Number.MAX_VALUE):u&&(c.start.column+=u);if(i(c))return!0};else if(t.backwards)var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=o.length-1;u>=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u<o.length;u++)if(i(o[u],t,s))return!0};var a=this.$lineIterator(e,t);return{forEach:function(e){i=e,a.forEach(u)}}},this.$assembleRegExp=function(e,t){if(e.needle instanceof RegExp)return e.re=e.needle;var n=e.needle;if(!e.needle)return e.re=!1;e.regExp||(n=r.escapeRegExp(n)),e.wholeWord&&(n="\\b"+n+"\\b");var i=e.caseSensitive?"gm":"gmi";e.$isMultiLine=!t&&/[\n\r]/.test(n);if(e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(n,i);try{var s=new RegExp(n,i)}catch(o){s=!1}return e.re=s},this.$assembleMultilineRegExp=function(e,t){var n=e.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),r=[];for(var i=0;i<n.length;i++)try{r.push(new RegExp(n[i],t))}catch(s){return!1}return n[0]==""?(r.shift(),r.offset=1):r.offset=0,r},this.$lineIterator=function(e,t){var n=t.backwards==1,r=t.skipCurrent!=0,i=t.range,s=t.start;s||(s=i?i[n?"end":"start"]:e.selection.getRange()),s.start&&(s=s[r!=n?"end":"start"]);var o=i?i.start.row:0,u=i?i.end.row:e.getLength()-1,a=n?function(n){var r=s.row,i=e.getLine(r).substring(0,s.column);if(n(i,r))return;for(r--;r>=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&(e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(e,t,n){var r=this.commandKeyBinding,i;t?!r[e]||this.$singleCommand?r[e]=t:(Array.isArray(r[e])?(i=r[e].indexOf(t))!=-1&&r[e].splice(i,1):r[e]=[r[e]],n||t.isDefault?r[e].unshift(t):r[e].push(t)):delete r[e]},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};return e.$keyChain&&r>0&&(e.$keyChain=""),{command:o}}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+1<e.session.doc.getLength()-1&&(f+=e.session.doc.getNewLineCharacter()),e.clearSelection(),e.session.doc.replace(new s(n.row,0,i.row+2,0),f),a>0?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o<r.length;o++)o==r.length-1&&(r[o].end.row!==t||r[o].end.column!==n)&&i.push(new s(r[o].end.row,r[o].end.column,t,n)),o===0?(r[o].start.row!==0||r[o].start.column!==0)&&i.push(new s(0,0,r[o].start.row,r[o].start.column)):i.push(new s(r[o-1].end.row,r[o-1].end.column,r[o].start.row,r[o].start.column));e.exitMultiSelectMode(),e.clearSelection();for(var o=0;o<i.length;o++)e.selection.addRange(i[o],!1)},readOnly:!0,scrollIntoView:"none"}]}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=e("./token_iterator").TokenIterator,b=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session&&this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new c("")),g.resetOptions(this),g._signal("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop},this.curOp.command.name&&this.$blockScrolling++},this.endOperation=function(e){if(this.curOp){if(e&&e.returnValue===!1)return this.curOp=null;this._signal("beforeEndOperation");var t=this.curOp.command;t.name&&this.$blockScrolling&&this.$blockScrolling--;if(t&&t.scrollIntoView){switch(t.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var n=this.selection.getRange(),r=this.renderer.layerConfig;(n.start.row>=r.lastRow||n.end.row<=r.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}t.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="</"&&o--);while(i&&o>=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="</"&&o--);while(u&&o<=0);r.stepForward()}if(!i){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}var a=r.getCurrentTokenRow(),f=r.getCurrentTokenColumn(),l=new p(a,f,a,f+i.value.length);t.$tagHighlight&&l.compareRange(t.$backMarkers[t.$tagHighlight].range)!==0&&(t.removeMarker(t.$tagHighlight),t.$tagHighlight=null),l&&!t.$tagHighlight&&(t.$tagHighlight=t.addMarker(l,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(e){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",e)},this.onBlur=function(e){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",e)},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r,this.session.$useWrapMode),this._signal("change",e),this.$cursorChange(),this.$updateHighlightActiveLine()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||(g.warn("Automatically scrolling cursor into view after selection change","this will be disabled in the next version","set editor.$blockScrolling = Infinity to disable this message"),this.renderer.scrollCursorIntoView()),this.$highlightBrackets(),this.$highlightTags(),this.$updateHighlightActiveLine(),this._signal("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;var t={text:e};this._signal("paste",t),e=t.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(e);else{var n=e.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}this.renderer.scrollCursorIntoView()},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e=="	"&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;t<n.length?(r=n.charAt(t)+n.charAt(t-1),i=new p(e.row,t-1,e.row,t+1)):(r=n.charAt(t-1)+n.charAt(t-2),i=new p(e.row,t-2,e.row,t)),this.session.replace(i,r)},this.toLowerCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toLowerCase()),this.selection.setSelectionRange(e)},this.toUpperCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toUpperCase()),this.selection.setSelectionRange(e)},this.indent=function(){var e=this.session,t=this.getSelectionRange();if(t.start.row<t.end.row){var n=this.$getSelectedRows();e.indentRows(n.first,n.last,"	");return}if(t.start.column<t.end.column){var r=e.getTextRange(t);if(!/^\s+$/.test(r)){var n=this.$getSelectedRows();e.indentRows(n.first,n.last,"	");return}}var i=e.getLine(t.start.row),o=t.start,u=e.getTabSize(),a=e.documentToScreenColumn(o.row,o.column);if(this.session.getUseSoftTabs())var f=u-a%u,l=s.stringRepeat(" ",f);else{var f=a%u;while(i[t.start.column]==" "&&f)t.start.column--,f--;this.selection.setSelectionRange(t),l="	"}return this.insert(l)},this.blockIndent=function(){var e=this.$getSelectedRows();this.session.indentRows(e.first,e.last,"	")},this.blockOutdent=function(){var e=this.session.getSelection();this.session.outdentRows(e.getRange())},this.sortLines=function(){var e=this.$getSelectedRows(),t=this.session,n=[];for(i=e.first;i<=e.last;i++)n.push(t.getLine(i));n.sort(function(e,t){return e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex<t){var i=n.exec(r);if(i.index<=t&&i.index+i[0].length>=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n<o?e*=Math.pow(10,s.end-n-1):e*=Math.pow(10,s.end-n),a+=e,a/=Math.pow(10,u);var f=a.toFixed(u),l=new p(t,s.start,t,s.end);this.session.replace(l,f),this.moveCursorTo(t,Math.max(s.start+1,n+f.length-s.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows(),t;e.first===0||e.last+1<this.session.getLength()?t=new p(e.first,0,e.last+1,0):t=new p(e.first-1,this.session.getLine(e.first-1).length,e.last,this.session.getLine(e.last).length),this.session.remove(t),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),r=e.isBackwards();if(n.isEmpty()){var i=n.start.row;t.duplicateLines(i,i)}else{var s=r?n.start:n.end,o=t.insert(s,t.getTextRange(n),!1);n.start=s,n.end=o,e.setSelectionRange(n,r)}},this.moveLinesDown=function(){this.$moveLines(1,!1)},this.moveLinesUp=function(){this.$moveLines(-1,!1)},this.moveText=function(e,t,n){return this.session.moveText(e,t,n)},this.copyLinesUp=function(){this.$moveLines(-1,!0)},this.copyLinesDown=function(){this.$moveLines(1,!0)},this.$moveLines=function(e,t){var n,r,i=this.selection;if(!i.inMultiSelectMode||this.inVirtualSelectionMode){var s=i.toOrientedRange();n=this.$getSelectedRows(s),r=this.session.$moveLines(n.first,n.last,t?0:e),t&&e==-1&&(r=0),s.moveBy(r,0),i.fromOrientedRange(s)}else{var o=i.rangeList.ranges;i.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;var u=0,a=0,f=o.length;for(var l=0;l<f;l++){var c=l;o[l].moveBy(u,0),n=this.$getSelectedRows(o[l]);var h=n.first,p=n.last;while(++l<f){a&&o[l].moveBy(a,0);var d=this.$getSelectedRows(o[l]);if(t&&d.first!=p)break;if(!t&&d.first>p+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f<s.value.length&&!u;f++){if(!c[s.value[f]])continue;l=c[s.value[f]]+"."+s.type.replace("rparen","lparen"),isNaN(a[l])&&(a[l]=0);switch(s.value[f]){case"(":case"[":case"{":a[l]++;break;case")":case"]":case"}":a[l]--,a[l]===-1&&(o="bracket",u=!0)}}else s&&s.type.indexOf("tag-name")!==-1&&(isNaN(a[s.value])&&(a[s.value]=0),i.value==="<"?a[s.value]++:i.value==="</"&&a[s.value]--,a[s.value]===-1&&(o="tag",u=!0));u||(i=s,s=r.stepForward(),f=0)}while(s&&!u);if(!o)return;var h,d;if(o==="bracket"){h=this.session.getBracketRange(n);if(!h){h=new p(r.getCurrentTokenRow(),r.getCurrentTokenColumn()+f-1,r.getCurrentTokenRow(),r.getCurrentTokenColumn()+f-1),d=h.start;if(t||d.row===n.row&&Math.abs(d.column-n.column)<2)h=this.session.getBracketRange(d)}}else if(o==="tag"){if(!s||s.type.indexOf("tag-name")===-1)return;var v=s.value;h=new p(r.getCurrentTokenRow(),r.getCurrentTokenColumn()-2,r.getCurrentTokenRow(),r.getCurrentTokenColumn()-2);if(h.compare(n.row,n.column)===0){u=!1;do s=i,i=r.stepBackward(),i&&(i.type.indexOf("tag-close")!==-1&&h.setEnd(r.getCurrentTokenRow(),r.getCurrentTokenColumn()+1),s.value===v&&s.type.indexOf("tag-name")!==-1&&(i.value==="<"?a[v]++:i.value==="</"&&a[v]--,a[v]===0&&(u=!0)));while(i&&!u)}s&&s.type.indexOf("tag-name")&&(d=h.start,d.row==n.row&&Math.abs(d.column-n.column)<2&&(d=h.end))}d=h&&h.cursor||d,d&&(e?h&&t?this.selection.setRange(h):h&&h.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(d.row,d.column):this.selection.moveTo(d.row,d.column))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.selection.moveTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(-e||-1,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),this.selection.moveCursorBy(e||1,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.selection.moveTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.top<o.height&&s.top+t.top+o.lineHeight>window.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;t<e.length;t++){var n=e[t],r=n.row,i=this.$annotations[r];i||(i=this.$annotations[r]={text:[]});var o=n.text;o=o?s.escapeHTML(o):n.html||"",i.text.indexOf(o)===-1&&i.text.push(o);var u=n.type;u=="error"?i.className=" ace_error":u=="warning"&&i.className!=" ace_error"?i.className=" ace_warning":u=="info"&&!i.className&&(i.className=" ace_info")}},this.$updateAnnotations=function(e){if(!this.$annotations.length)return;var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i!==0)if(t.action=="removeText"||t.action=="removeLines")this.$annotations.splice(r,i+1,null);else{var s=new Array(i+1);s.unshift(r,1),this.$annotations.splice.apply(this.$annotations,s)}},this.update=function(e){var t=this.session,n=e.firstRow,i=Math.min(e.lastRow+e.gutterOffset,t.getLength()-1),s=t.getNextFoldLine(n),o=s?s.start.row:Infinity,u=this.$showFoldWidgets&&t.foldWidgets,a=t.$breakpoints,f=t.$decorations,l=t.$firstLineNumber,c=0,h=t.gutterRenderer||this.$renderer,p=null,d=-1,v=n;for(;;){v>o&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&v<s.end.row?m+=" ace_closed":m+=" ace_open",p.foldWidget.className!=m&&(p.foldWidget.className=m);var g=e.lineHeight+"px";p.foldWidget.style.height!=g&&(p.foldWidget.style.height=g)}else p.foldWidget&&(p.element.removeChild(p.foldWidget),p.foldWidget=null);var b=c=h?h.getText(t,v):v+l;b!=p.textNode.data&&(p.textNode.data=b),v++}this.element.style.height=e.minHeight+"px";if(this.$fixedWidth||t.$useWrapMode)c=t.getLength()+l;var w=h?h.getWidth(t,c,e):c.toString().length*e.characterWidth,E=this.$padding||this.$computePadding();w+=E.left+E.right,w!==this.gutterWidth&&!isNaN(w)&&(this.gutterWidth=w,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",w))},this.$fixedWidth=!1,this.$showLineNumbers=!0,this.$renderer="",this.setShowLineNumbers=function(e){this.$renderer=!e&&{getWidth:function(){return""},getText:function(){return""}}},this.getShowLineNumbers=function(){return this.$showLineNumbers},this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1||0,this.$padding.right=parseInt(e.paddingRight)||0,this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.x<t.left+n.left)return"markers";if(this.$showFoldWidgets&&e.x>n.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o<t.end.row;o++)u.start.row=o,u.end.row=o,u.end.column=this.session.getScreenLastRowColumn(o),this.drawSingleLineMarker(e,u,n,i,1,s)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("<div class='",n," ace_start' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",a,"px;",i,"'></div>"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",f,"px;","top:",u,"px;","left:",s,"px;",i,"'></div>"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("<div class='",n,"' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",s,"px;",i,"'></div>")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",u,"px;","top:",a,"px;","left:",f,"px;",s||"","'></div>")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n<e+1;n++)this.showInvisibles?t.push("<span class='ace_invisible ace_invisible_tab'>"+this.TAB_CHAR+s.stringRepeat("\u00a0",n-1)+"</span>"):t.push(s.stringRepeat("\u00a0",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=this.TAB_CHAR+s.stringRepeat("\u00a0",this.tabSize-1)}else var u=s.stringRepeat("\u00a0",this.tabSize),a=u;this.$tabStrings[" "]="<span class='"+r+i+"'>"+u+"</span>",this.$tabStrings["	"]="<span class='"+r+o+"'>"+a+"</span>"}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;u<r;u++){var a=this.session.getFoldLine(u);if(a){if(a.containsRow(r)){r=a.start.row;break}u=a.end.row}o++}var u=r,a=this.session.getNextFoldLine(u),f=a?a.start.row:Infinity;for(;;){u>f&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow<e.firstRow)return this.update(e);if(e.lastRow<t.firstRow)return this.update(e);var n=this.element;if(t.firstRow<e.firstRow)for(var r=this.session.getFoldedRowCount(t.firstRow,e.firstRow-1);r>0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRow<t.firstRow){var i=this.$renderLinesFragment(e,e.firstRow,t.firstRow-1);n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)}if(e.lastRow>t.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("<div class='ace_line_group' style='height:",e.lineHeight*this.session.getRowLength(i),"px'>"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("</div>"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?"<span class='ace_invisible ace_invisible_space'>"+s.stringRepeat(i.SPACE_CHAR,e.length)+"</span>":s.stringRepeat("\u00a0",e.length);if(e=="&")return"&#38;";if(e=="<")return"&#60;";if(e=="	"){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,"<span class='"+f+"' style='width:"+i.config.characterWidth*2+"px'>"+l+"</span>"}return r?"<span class='ace_invisible ace_invisible_space ace_invalid'>"+i.SPACE_CHAR+"</span>":(t+=1,"<span class='ace_cjk' style='width:"+i.config.characterWidth*2+"px'>"+e+"</span>")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("<span class='",f,"'",l,">",a,"</span>")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]=="	"?(e.push(s.stringRepeat(this.$tabStrings["	"],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a<t.length;a++){var f=t[a],l=f.value;if(a==0&&this.displayIndentGuides){i=l.length,l=this.renderIndentGuide(e,l,o);if(!l)continue;i-=l.length}if(i+l.length<o)u=this.$renderToken(e,u,f,l),i+=l.length;else{while(i+l.length>=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("</div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s<t.length;s++)r=t[s],i=r.value,n=this.$renderToken(e,n,r,i)},this.$renderLine=function(e,t,n,r){!r&&r!=0&&(r=this.session.getFoldLine(t));if(r)var i=this.$getFoldLineTokens(t,r);else var i=this.session.getTokens(t);n||e.push("<div class='ace_line' style='height:",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(t)),"px'>");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("<span class='ace_invisible ace_invisible_eol'>",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"</span>")),n||e.push("</div>")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value.length,i++;if(i==e.length)return}if(s!=t){var o=e[i].value.substring(t-s);o.length>n-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(s<n&&i<e.length){var o=e[i].value;o.length+s>n?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;n<i;n++){var s=this.getPixelPosition(t[n].cursor,!0);if((s.top>e.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block;   }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}';i.importCssString(m,"ace_editor");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:e,lastRow:t};if(this.$changedLines.lastRow<this.layerConfig.firstRow){if(!n)return;this.$changedLines.lastRow=this.layerConfig.lastRow}if(this.$changedLines.firstRow>this.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a));var l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l,this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var c=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop),h=this.$vScroll!==c;h&&(this.$vScroll=c,this.scrollBarV.setVisible(c));var p=Math.ceil(o/this.lineHeight)-1,d=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),v=d+p,m,g,y=this.lineHeight;d=e.screenToDocumentRow(d,0);var b=e.getFoldLine(d);b&&(d=b.start.row),m=e.documentToScreenRow(d,0),g=e.getRowLength(d)*y,v=Math.min(e.screenToDocumentRow(v,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(v)*y+g,s=this.scrollTop-m*y;var w=0;this.layerConfig.width!=u&&(w=this.CHANGE_H_SCROLL);if(f||h)w=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),h&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:d,firstRowScreen:m,lastRow:v,lineHeight:y,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/y)),height:this.$size.scrollerHeight},w},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(t<n.firstRow)return;if(t===Infinity){this.$showGutter&&this.$gutterLayer.update(n),this.$textLayer.update(n);return}return this.$textLayer.updateLines(n,e,t),!0},this.$getLongestLine=function(){var e=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(e+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-u<s+this.lineHeight&&(t&&(s+=t*this.$size.scrollerHeight),this.session.setScrollTop(s+this.lineHeight-this.$size.scrollerHeight));var f=this.scrollLeft;f>i?(i<this.$padding+2*this.layerConfig.characterWidth&&(i=-this.scrollMargin.left),this.session.setScrollLeft(i)):f+this.$size.scrollerWidth<i+this.characterWidth?this.session.setScrollLeft(Math.round(i+this.characterWidth-this.$size.scrollerWidth)):f<=this.$padding&&i-f<this.characterWidth&&this.session.setScrollLeft(0)},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(e){this.session.setScrollTop(e*this.lineHeight)},this.alignCursor=function(e,t){typeof e=="number"&&(e={row:e,column:0});var n=this.$cursorLayer.getPixelPosition(e),r=this.$size.scrollerHeight-this.lineHeight,i=n.top-r*(t||0);return this.session.setScrollTop(i),i},this.STEPS=8,this.$calcSteps=function(e,t){var n=0,r=this.STEPS,i=[],s=function(e,t,n){return n*(Math.pow(e-1,3)+1)+t};for(n=0;n<r;++n)i.push(s(n/this.STEPS,e,t-e));return i},this.scrollToLine=function(e,t,n,r){var i=this.$cursorLayer.getPixelPosition({row:e,column:0}),s=i.top;t&&(s-=this.$size.scrollerHeight/2);var o=this.scrollTop;this.session.setScrollTop(s),n!==!1&&this.animateScrolling(o,r)},this.animateScrolling=function(e,t){var n=this.scrollTop;if(!this.$animatedScroll)return;var r=this;if(e==n)return;if(this.$scrollAnimation){var i=this.$scrollAnimation.steps;if(i.length){e=i[0];if(e==n)return}}var s=r.$calcSteps(e,n);this.$scrollAnimation={from:e,to:n,steps:s},clearInterval(this.$timer),r.session.setScrollTop(s.shift()),r.session.$scrollTop=n,this.$timer=setInterval(function(){s.length?(r.session.setScrollTop(s.shift()),r.session.$scrollTop=n):n!=null?(r.session.$scrollTop=-1,r.session.setScrollTop(n),n=null):(r.$timer=clearInterval(r.$timer),r.$scrollAnimation=null,t&&t())},10)},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){if(t<0&&this.session.getScrollTop()>=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e<this.others.length;e++)this.session.removeMarker(this.others[e].markerId)},this.onUpdate=function(e){var t=e.data,n=t.range;if(n.start.row!==n.end.row)return;if(n.start.row!==this.pos.row)return;if(this.$updating)return;this.$updating=!0;var i=t.action==="insertText"?n.end.column-n.start.column:n.start.column-n.end.column;if(n.start.column>=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.insert(a,t.text)}else if(t.action==="removeText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.remove(new r(a.row,a.column,a.row,a.column-i))}n.start.column===this.pos.column&&t.action==="insertText"?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-i);for(var e=0;e<this.others.length;e++){var t=this.others[e],r={row:t.row,column:t.column-i};t.row===n.start.row&&n.start.column<t.column&&(r.column+=i),t.setPosition(r.row,r.column)}}.bind(this),0):n.start.column===this.pos.column&&t.action==="removeText"&&setTimeout(function(){for(var e=0;e<this.others.length;e++){var t=this.others[e];t.row===n.start.row&&n.start.column<t.column&&t.setPosition(t.row,t.column-i)}}.bind(this),0)}this.pos._emit("change",{value:this.pos});for(var o=0;o<this.others.length;o++)this.others[o]._emit("change",{value:this.others[o]})}this.$updating=!1},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e<this.others.length;e++)this.others[e].detach();this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)throw Error("Canceling placeholders only supported with undo manager attached to session.");var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n<t;n++)e.undo(!0);this.selectionBefore&&this.session.selection.fromJSON(this.selectionBefore)}}).call(o.prototype),t.PlaceHolder=o}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){function s(e,t){return e.row==t.row&&e.column==t.column}function o(e){var t=e.domEvent,n=t.altKey,o=t.shiftKey,u=t.ctrlKey,a=e.getAccelKey(),f=e.getButton();u&&i.isMac&&(f=t.button);if(e.editor.inMultiSelectMode&&f==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!u&&!n&&!a){f===0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}if(f!==0)return;var l=e.editor,c=l.selection,h=l.inMultiSelectMode,p=e.getDocumentPosition(),d=c.getCursor(),v=e.inSelection()||c.isEmpty()&&s(p,d),m=e.x,g=e.y,y=function(e){m=e.clientX,g=e.clientY},b=l.session,w=l.renderer.pixelToScreenCoordinates(m,g),E=w,S;if(l.$mouseHandler.$enableJumpToDef)u&&n||a&&n?S="add":n&&(S="block");else if(a&&!n){S="add";if(!h&&o)return}else n&&(S="block");S&&i.isMac&&t.ctrlKey&&l.$mouseHandler.cancelContextMenu();if(S=="add"){if(!h&&v)return;if(!h){var x=c.toOrientedRange();l.addSelectionMarker(x)}var T=c.rangeList.rangeAtPoint(p);l.$blockScrolling++,l.inVirtualSelectionMode=!0,o&&(T=null,x=c.ranges[0],l.removeSelectionMarker(x)),l.once("mouseup",function(){var e=c.toOrientedRange();T&&e.isEmpty()&&s(T.cursor,e.cursor)?c.substractPoint(e.cursor):(o?c.substractPoint(x.cursor):x&&(l.removeSelectionMarker(x),c.addRange(x)),c.addRange(e)),l.$blockScrolling--,l.inVirtualSelectionMode=!1})}else if(S=="block"){e.stop(),l.inVirtualSelectionMode=!0;var N,C=[],k=function(){var e=l.renderer.pixelToScreenCoordinates(m,g),t=b.screenToDocumentPosition(e.row,e.column);if(s(E,e)&&s(t,c.lead))return;E=e,l.$blockScrolling++,l.selection.moveToPosition(t),l.renderer.scrollCursorIntoView(),l.removeSelectionMarkers(C),C=c.rectangularRangeBlock(E,w),l.$mouseHandler.$clickSelection&&C.length==1&&C[0].isEmpty()&&(C[0]=l.$mouseHandler.$clickSelection.clone()),C.forEach(l.addSelectionMarker,l),l.updateSelectionMarkers(),l.$blockScrolling--};l.$blockScrolling++,h&&!a?c.toSingleRange():!h&&a&&(N=c.toOrientedRange(),l.addSelectionMarker(N)),o?w=b.documentToScreenPosition(c.lead):c.moveToPosition(p),l.$blockScrolling--,E={row:-1,column:-1};var L=function(e){clearInterval(O),l.removeSelectionMarkers(C),C.length||(C=[c.toOrientedRange()]),l.$blockScrolling++,N&&(l.removeSelectionMarker(N),c.toSingleRange(N));for(var t=0;t<C.length;t++)c.addRange(C[t]);l.inVirtualSelectionMode=!1,l.$mouseHandler.$clickSelection=null,l.$blockScrolling--},A=k;r.capture(l.container,y,L);var O=setInterval(function(){A()},20);return e.preventDefault()}}var r=e("../lib/event"),i=e("../lib/useragent");t.onMouseDown=o}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){t.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},scrollIntoView:"cursor",readonly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},scrollIntoView:"cursor",readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},scrollIntoView:"cursor",readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},scrollIntoView:"cursor",readonly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},scrollIntoView:"cursor",readonly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},scrollIntoView:"cursor",readonly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},scrollIntoView:"cursor",readonly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},scrollIntoView:"cursor",readonly:!0},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readonly:!0},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readonly:!0}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey)?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()}),u.addListener(t,"keyup",r),u.addListener(t,"blur",r)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount===0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c<o;c++)f.push(this.getLineRange(c,!0));l=this.getLineRange(o,!0),l.end.column=n.end.column,f.push(l),f.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column<t.column;if(s)var o=e.column,u=t.column;else var o=t.column,u=e.column;var a=e.row<t.row;if(a)var f=e.row,l=t.row;else var f=t.row,l=e.row;o<0&&(o=0),f<0&&(f=0),f==l&&(n=!0);for(var c=f;c<=l;c++){var h=i.fromPoints(this.session.screenToDocumentPosition(c,o),this.session.screenToDocumentPosition(c,u));if(h.isEmpty()){if(p&&v(h.end,p))break;var p=h.end}h.cursor=s?h.start:h.end,r.push(h)}a&&r.reverse();if(!n){var d=r.length-1;while(r[d].isEmpty()&&d>0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r<t.length;r++)n.push(this.session.getTextRange(t[r]));var i=this.session.getDocument().getNewLineCharacter();e=n.join(i),e.length==(n.length-1)*i.length&&(e="")}else this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange()));return e},this.$checkMultiselectChange=function(e,t){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var n=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&t==this.multiSelect.anchor)return;var r=t==this.multiSelect.anchor?n.cursor==n.start?n.end:n.start:n.cursor;(r.row!=t.row||this.session.$clipPositionToDocument(r.row,r.column).column!=t.column)&&this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange())}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle;if(t.needle==undefined){var r=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(r)}this.$search.set(t);var i=this.$search.findAll(this.session);if(!i.length)return 0;this.$blockScrolling+=1;var s=this.multiSelect;n||s.toSingleRange(i[0]);for(var o=i.length;o--;)s.addRange(i[o],!0);return r&&s.rangeList.rangeAtPoint(r.start)&&s.addRange(r,!0),this.$blockScrolling-=1,i.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t,n){var r=this.session,i=r.multiSelect,s=i.toOrientedRange();if(s.isEmpty()){s=r.getWordRange(s.start.row,s.start.column),s.cursor=e==-1?s.start:s.end,this.multiSelect.addRange(s);if(n)return}var o=r.getTextRange(s),u=h(r,o,e);u&&(u.cursor=e==-1?u.start:u.end,this.$blockScrolling+=1,this.session.unfold(u),this.multiSelect.addRange(u),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(s.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges,r=-1,s=n.filter(function(e){if(e.cursor.row==r)return!0;r=e.cursor.row});if(!n.length||s.length==n.length-1){var o=this.selection.getRange(),u=o.start.row,f=o.end.row,l=u==f;if(l){var c=this.session.getLength(),h;do h=this.session.getLine(f);while(/[=:]/.test(h)&&++f<c);do h=this.session.getLine(u);while(/[=:]/.test(h)&&--u>0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.doc.removeLines(u,f);p=this.$reAlignText(p,l),this.session.doc.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),i<v&&(v=i),i});n.forEach(function(t,n){var r=t.cursor,s=d-r.column,o=m[n]-v;s>o?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),s<t[2].length&&(s=t[2].length),o>t[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++t<a){var c=e.getLine(t).search(i);if(c==-1)continue;if(c<=o)break;l=t}if(l>f){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s<n.length;s++){var o=n[s];o._inDocument||(o._inDocument=!0,t.container.appendChild(o.el)),o.h=o.el.offsetHeight,o.fixedWidth||(o.w=o.el.offsetWidth,o.screenWidth=Math.ceil(o.w/r.characterWidth));var u=o.h/r.lineHeight;o.coverLine&&(u-=this.session.getRowLineCount(o.row),u<0&&(u=0)),o.rowCount!=u&&(o.rowCount=u,o.row<i&&(i=o.row))}i!=Infinity&&(this.session._emit("changeFold",{data:{start:{row:i}}}),this.session.lineWidgetWidth=null),this.session._changedWidgets=[]},this.renderWidgets=function(e,t){var n=t.layerConfig,r=this.session.lineWidgets;if(!r)return;var i=Math.min(this.firstRow,n.firstRow),s=Math.max(this.lastRow,n.lastRow,r.length);while(i>0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("<br>"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString("    .error_widget_wrapper {        background: inherit;        color: inherit;        border:none    }    .error_widget {        border-top: solid 2px;        border-bottom: solid 2px;        margin: 5px 0;        padding: 10px 40px;        white-space: pre-wrap;    }    .error_widget.ace_error, .error_widget_arrow.ace_error{        border-color: #ff5a5a    }    .error_widget.ace_warning, .error_widget_arrow.ace_warning{        border-color: #F1D817    }    .error_widget.ace_info, .error_widget_arrow.ace_info{        border-color: #5a5a5a    }    .error_widget.ace_ok, .error_widget_arrow.ace_ok{        border-color: #5aaa5a    }    .error_widget_arrow {        position: absolute;        border: solid 5px;        border-top-color: transparent!important;        border-right-color: transparent!important;        border-left-color: transparent!important;        top: -5px;    }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else o=r.getInnerText(e),e.innerHTML="";var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u});
+            (function() {
+                ace.require(["ace/ace"], function(a) {
+                    a && a.config.init(true);
+                    if (!window.ace)
+                        window.ace = a;
+                    for (var key in a) if (a.hasOwnProperty(key))
+                        window.ace[key] = a[key];
+                });
+            })();
+        
\ No newline at end of file
diff --git a/js/ace/ext-beautify.js b/js/ace/ext-beautify.js
new file mode 100644
index 0000000..659262c
--- /dev/null
+++ b/js/ace/ext-beautify.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator;t.newLines=[{type:"support.php_tag",value:"<?php"},{type:"support.php_tag",value:"<?"},{type:"support.php_tag",value:"?>"},{type:"paren.lparen",value:"{",indent:!0},{type:"paren.rparen",breakBefore:!0,value:"}",indent:!1},{type:"paren.rparen",breakBefore:!0,value:"})",indent:!1,dontBreak:!0},{type:"comment"},{type:"text",value:";"},{type:"text",value:":",context:"php"},{type:"keyword",value:"case",indent:!0,dontBreak:!0},{type:"keyword",value:"default",indent:!0,dontBreak:!0},{type:"keyword",value:"break",indent:!1,dontBreak:!0},{type:"punctuation.doctype.end",value:">"},{type:"meta.tag.punctuation.end",value:">"},{type:"meta.tag.punctuation.begin",value:"<",blockTag:!0,indent:!0,dontBreak:!0},{type:"meta.tag.punctuation.begin",value:"</",indent:!1,breakBefore:!0,dontBreak:!0},{type:"punctuation.operator",value:";"}],t.spaces=[{type:"xml-pe",prepend:!0},{type:"entity.other.attribute-name",prepend:!0},{type:"storage.type",value:"var",append:!0},{type:"storage.type",value:"function",append:!0},{type:"keyword.operator",value:"="},{type:"keyword",value:"as",prepend:!0,append:!0},{type:"keyword",value:"function",append:!0},{type:"support.function",next:/[^\(]/,append:!0},{type:"keyword",value:"or",append:!0,prepend:!0},{type:"keyword",value:"and",append:!0,prepend:!0},{type:"keyword",value:"case",append:!0},{type:"keyword.operator",value:"||",append:!0,prepend:!0},{type:"keyword.operator",value:"&&",append:!0,prepend:!0}],t.singleTags=["!doctype","area","base","br","hr","input","img","link","meta"],t.transform=function(e,n,r){var i=e.getCurrentToken(),s=t.newLines,o=t.spaces,u=t.singleTags,a="",f=0,l=!1,c,h,p={},d,v={},m=!1,g="";while(i!==null){console.log(i);if(!i){i=e.stepForward();continue}i.type=="support.php_tag"&&i.value!="?>"?r="php":i.type=="support.php_tag"&&i.value=="?>"?r="html":i.type=="meta.tag.name.style"&&r!="css"?r="css":i.type=="meta.tag.name.style"&&r=="css"?r="html":i.type=="meta.tag.name.script"&&r!="js"?r="js":i.type=="meta.tag.name.script"&&r=="js"&&(r="html"),v=e.stepForward(),v&&v.type.indexOf("meta.tag.name")==0&&(d=v.value),p.type=="support.php_tag"&&p.value=="<?="&&(l=!0),i.type=="meta.tag.name"&&(i.value=i.value.toLowerCase()),i.type=="text"&&(i.value=i.value.trim());if(!i.value){i=v;continue}g=i.value;for(var y in o)i.type==o[y].type&&(!o[y].value||i.value==o[y].value)&&v&&(!o[y].next||o[y].next.test(v.value))&&(o[y].prepend&&(g=" "+i.value),o[y].append&&(g+=" "));i.type.indexOf("meta.tag.name")==0&&(c=i.value),m=!1;for(y in s)if(i.type==s[y].type&&(!s[y].value||i.value==s[y].value)&&(!s[y].blockTag||u.indexOf(d)===-1)&&(!s[y].context||s[y].context===r)){s[y].indent===!1&&f--;if(s[y].breakBefore&&(!s[y].prev||s[y].prev.test(p.value))){a+="\n",m=!0;for(y=0;y<f;y++)a+="	"}break}if(l===!1)for(y in s)if(p.type==s[y].type&&(!s[y].value||p.value==s[y].value)&&(!s[y].blockTag||u.indexOf(c)===-1)&&(!s[y].context||s[y].context===r)){s[y].indent===!0&&f++;if(!s[y].dontBreak&&!m){a+="\n";for(y=0;y<f;y++)a+="	"}break}a+=g,p.type=="support.php_tag"&&p.value=="?>"&&(l=!1),h=c,p=i,i=v;if(i===null)break}return a}}),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator,i=e("./beautify/php_rules").transform;t.beautify=function(e){var t=new r(e,0,0),n=t.getCurrentToken(),s=e.$modeId.split("/").pop(),o=i(t,s);e.doc.setValue(o)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]});
+                (function() {
+                    ace.require(["ace/ext/beautify"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-chromevox.js b/js/ace/ext-chromevox.js
new file mode 100644
index 0000000..2101484
--- /dev/null
+++ b/js/ace/ext-chromevox.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/chromevox",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function gt(){return typeof cvox!="undefined"&&cvox&&cvox.Api}function wt(e){if(gt())mt(e);else{yt++;if(yt>=bt)return;window.setTimeout(wt,500,e)}}var r={};r.SpeechProperty,r.Cursor,r.Token,r.Annotation;var i={rate:.8,pitch:.4,volume:.9},s={rate:1,pitch:.5,volume:.9},o={rate:.8,pitch:.8,volume:.9},u={rate:.8,pitch:.3,volume:.9},a={rate:.8,pitch:.7,volume:.9},f={rate:.8,pitch:.8,volume:.9},l={punctuationEcho:"none",relativePitch:-0.6},c="ALERT_NONMODAL",h="ALERT_MODAL",p="INVALID_KEYPRESS",d="insertMode",v="start",m=[{substr:";",newSubstr:" semicolon "},{substr:":",newSubstr:" colon "}],g={SPEAK_ANNOT:"annots",SPEAK_ALL_ANNOTS:"all_annots",TOGGLE_LOCATION:"toggle_location",SPEAK_MODE:"mode",SPEAK_ROW_COL:"row_col",TOGGLE_DISPLACEMENT:"toggle_displacement",FOCUS_TEXT:"focus_text"},y="CONTROL + SHIFT ";r.editor=null;var b=null,w={},E=!1,S=!1,x=!1,T=null,N={},C={},k=function(e){return y+String.fromCharCode(e)},L=function(){var e=r.editor.keyBinding.getKeyboardHandler();return e.$id==="ace/keyboard/vim"},A=function(e){return r.editor.getSession().getTokenAt(e.row,e.column+1)},O=function(e){return r.editor.getSession().getLine(e.row)},M=function(e){w[e.row]&&cvox.Api.playEarcon(c),E?(cvox.Api.stop(),W(e),R(A(e)),I(e.row,1)):I(e.row,0)},_=function(e){var t=O(e),n=t.substr(e.column-1);e.column===0&&(n=" "+t);var r=/^\W(\w+)/,i=r.exec(n);return i!==null},D={constant:{prop:i},entity:{prop:o},keyword:{prop:u},storage:{prop:a},variable:{prop:f},meta:{prop:s,replace:[{substr:"</",newSubstr:" closing tag "},{substr:"/>",newSubstr:" close tag "},{substr:"<",newSubstr:" tag start "},{substr:">",newSubstr:" tag end "}]}},P={prop:P},H=function(e,t){var n=e;for(var r=0;r<t.length;r++){var i=t[r],s=new RegExp(i.substr,"g");n=n.replace(s,i.newSubstr)}return n},B=function(e,t,n){var r={};r.value="",r.type=e[t].type;for(var i=t;i<n;i++)r.value+=e[i].value;return r},j=function(e){if(e.length<=1)return e;var t=[],n=0;for(var r=1;r<e.length;r++){var i=e[n],s=e[r];U(i)!==U(s)&&(t.push(B(e,n,r)),n=r)}return t.push(B(e,n,e.length)),t},F=function(e){var t=r.editor.getSession().getLine(e),n=/^\s*$/;return n.exec(t)!==null},I=function(e,t){var n=r.editor.getSession().getTokens(e);if(n.length===0||F(e)){cvox.Api.playEarcon("EDITABLE_TEXT");return}n=j(n);var i=n[0];n=n.filter(function(e){return e!==i}),z(i,t),n.forEach(R)},q=function(e){z(e,0)},R=function(e){z(e,1)},U=function(e){if(!e||!e.type)return;var t=e.type.split(".");if(t.length===0)return;var n=t[0],r=D[n];return r?r:P},z=function(e,t){var n=U(e),r=H(e.value,m);n.replace&&(r=H(r,n.replace)),cvox.Api.speak(r,t,n.prop)},W=function(e){var t=O(e);cvox.Api.speak(t[e.column],1)},X=function(e,t){var n=O(t),r=n.substring(e.column,t.column);r=r.replace(/ /g," space "),cvox.Api.speak(r)},V=function(e,t){if(Math.abs(e.column-t.column)!==1){var n=O(t).length;if(t.column===0||t.column===n){I(t.row,0);return}if(_(t)){cvox.Api.stop(),R(A(t));return}}W(t)},$=function(e,t){r.editor.selection.isEmpty()?S?X(e,t):V(e,t):(X(e,t),cvox.Api.speak("selected",1))},J=function(e){if(x){x=!1;return}var t=r.editor.selection.getCursor();t.row!==b.row?M(t):$(b,t),b=t},K=function(e){r.editor.selection.isEmpty()&&cvox.Api.speak("unselected")},Q=function(e){var t=e.data;switch(t.action){case"removeText":cvox.Api.speak(t.text,0,l),x=!0;break;case"insertText":cvox.Api.speak(t.text,0),x=!0}},G=function(e){var t=e.row,n=e.column;return!w[t]||!w[t][n]},Y=function(e){w={};for(var t=0;t<e.length;t++){var n=e[t],r=n.row,i=n.column;w[r]||(w[r]={}),w[r][i]=n}},Z=function(e){var t=r.editor.getSession().getAnnotations(),n=t.filter(G);n.length>0&&cvox.Api.playEarcon(c),Y(t)},et=function(e){var t=e.type+" "+e.text+" on "+nt(e.row,e.column);t=t.replace(";","semicolon"),cvox.Api.speak(t,1)},tt=function(e){var t=w[e];for(var n in t)et(t[n])},nt=function(e,t){return"row "+(e+1)+" column "+(t+1)},rt=function(){cvox.Api.speak(nt(b.row,b.column))},it=function(){for(var e in w)tt(e)},st=function(){if(!L())return;switch(r.editor.keyBinding.$data.state){case d:cvox.Api.speak("Insert mode");break;case v:cvox.Api.speak("Command mode")}},ot=function(){E=!E,E?cvox.Api.speak("Speak location on row change enabled."):cvox.Api.speak("Speak location on row change disabled.")},ut=function(){S=!S,S?cvox.Api.speak("Speak displacement on column changes."):cvox.Api.speak("Speak current character or word on column changes.")},at=function(e){if(e.ctrlKey&&e.shiftKey){var t=N[e.keyCode];t&&t.func()}},ft=function(e,t){if(!L())return;var n=t.keyBinding.$data.state;if(n===T)return;switch(n){case d:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!0);break;case v:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!1)}T=n},lt=function(e){var t=e.detail.customCommand,n=C[t];n&&(n.func(),r.editor.focus())},ct=function(){var e=dt.map(function(e){return{desc:e.desc+k(e.keyCode),cmd:e.cmd}}),t=document.querySelector("body");t.setAttribute("contextMenuActions",JSON.stringify(e)),t.addEventListener("ATCustomEvent",lt,!0)},ht=function(e){e.match?I(b.row,0):cvox.Api.playEarcon(p)},pt=function(){r.editor.focus()},dt=[{keyCode:49,func:function(){tt(b.row)},cmd:g.SPEAK_ANNOT,desc:"Speak annotations on line"},{keyCode:50,func:it,cmd:g.SPEAK_ALL_ANNOTS,desc:"Speak all annotations"},{keyCode:51,func:st,cmd:g.SPEAK_MODE,desc:"Speak Vim mode"},{keyCode:52,func:ot,cmd:g.TOGGLE_LOCATION,desc:"Toggle speak row location"},{keyCode:53,func:rt,cmd:g.SPEAK_ROW_COL,desc:"Speak row and column"},{keyCode:54,func:ut,cmd:g.TOGGLE_DISPLACEMENT,desc:"Toggle speak displacement"},{keyCode:55,func:pt,cmd:g.FOCUS_TEXT,desc:"Focus text"}],vt=function(){r.editor=editor,editor.getSession().selection.on("changeCursor",J),editor.getSession().selection.on("changeSelection",K),editor.getSession().on("change",Q),editor.getSession().on("changeAnnotation",Z),editor.on("changeStatus",ft),editor.on("findSearchBox",ht),editor.container.addEventListener("keydown",at),b=editor.selection.getCursor()},mt=function(e){vt(),dt.forEach(function(e){N[e.keyCode]=e,C[e.cmd]=e}),e.on("focus",vt),L()&&cvox.Api.setKeyEcho(!1),ct()},yt=0,bt=15,Et=e("../editor").Editor;e("../config").defineOptions(Et.prototype,"editor",{enableChromevoxEnhancements:{set:function(e){e&&wt(this)},value:!0}})});
+                (function() {
+                    ace.require(["ace/ext/chromevox"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-elastic_tabstops_lite.js b/js/ace/ext-elastic_tabstops_lite.js
new file mode 100644
index 0000000..2d475d2
--- /dev/null
+++ b/js/ace/ext-elastic_tabstops_lite.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){var t=e.data.range;r&&(n.indexOf(t.start.row)==-1&&n.push(t.start.row),t.end.row!=t.start.row&&n.push(t.end.row))}};(function(){this.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n<r;n++){var i=e[n];if(t.indexOf(i)>-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a<f;a++){var l=o[a];t.push(u),this.$adjustRow(u,l),u++}}this.$inChange=!1},this.$findCellWidthsForBlock=function(e){var t=[],n,r=e;while(r>=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r<s-1){r++,n=this.$cellWidthsForRow(r);if(n.length==0)break;t.push(n)}return{cellWidths:t,firstRow:i}},this.$cellWidthsForRow=function(e){var t=this.$selectionColumnsForRow(e),n=[-1].concat(this.$tabsForRow(e)),r=n.map(function(e){return 0}).slice(1),i=this.$editor.session.getLine(e);for(var s=0,o=n.length-1;s<o;s++){var u=n[s]+1,a=n[s+1],f=this.$rightmostSelectionInCell(t,a),l=i.substring(u,a);r[s]=Math.max(l.replace(/\s+$/g,"").length,f-u)}return r},this.$selectionColumnsForRow=function(e){var t=[],n=this.$editor.getCursorPosition();return this.$editor.session.getSelection().isEmpty()&&e==n.row&&t.push(n.column),t},this.$setBlockCellWidthsToMax=function(e){var t=!0,n,r,i,s=this.$izip_longest(e);for(var o=0,u=s.length;o<u;o++){var a=s[o];if(!a.push){console.error(a);continue}a.push(NaN);for(var f=0,l=a.length;f<l;f++){var c=a[f];t&&(n=f,i=0,t=!1);if(isNaN(c)){r=f;for(var h=n;h<r;h++)e[h][o]=i;t=!0}i=Math.max(i,c)}}return e},this.$rightmostSelectionInCell=function(e,t){var n=0;if(e.length){var r=[];for(var i=0,s=e.length;i<s;i++)e[i]<=t?r.push(i):r.push(0);n=Math.max.apply(Math,r)}return n},this.$tabsForRow=function(e){var t=[],n=this.$editor.session.getLine(e),r=/\t/g,i;while((i=r.exec(n))!=null)t.push(i.index);return t},this.$adjustRow=function(e,t){var n=this.$tabsForRow(e);if(n.length==0)return;var r=0,i=-1,s=this.$izip(t,n);for(var o=0,u=s.length;o<u;o++){var a=s[o][0],f=s[o][1];i+=1+a,f+=r;var l=i-f;if(l==0)continue;var c=this.$editor.session.getLine(e).substr(0,f),h=c.replace(/\s*$/g,""),p=c.length-h.length;l>0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+"	"),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;r<n;r++){var i=e[r].length;i>t&&(t=i)}var s=[];for(var o=0;o<t;o++){var u=[];for(var r=0;r<n;r++)e[r][o]===""?u.push(NaN):u.push(e[r][o]);s.push(u)}return s},this.$izip=function(e,t){var n=e.length>=t.length?t.length:e.length,r=[];for(var i=0;i<n;i++){var s=[e[i],t[i]];r.push(s)}return r}}).call(r.prototype),t.ElasticTabstopsLite=r;var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{useElasticTabstops:{set:function(e){e?(this.elasticTabstops||(this.elasticTabstops=new r(this)),this.commands.on("afterExec",this.elasticTabstops.onAfterExec),this.commands.on("exec",this.elasticTabstops.onExec),this.on("change",this.elasticTabstops.onChange)):this.elasticTabstops&&(this.commands.removeListener("afterExec",this.elasticTabstops.onAfterExec),this.commands.removeListener("exec",this.elasticTabstops.onExec),this.removeListener("change",this.elasticTabstops.onChange))}}})});
+                (function() {
+                    ace.require(["ace/ext/elastic_tabstops_lite"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-emmet.js b/js/ace/ext-emmet.js
new file mode 100644
index 0000000..ded0318
--- /dev/null
+++ b/js/ace/ext-emmet.js
@@ -0,0 +1,5 @@
+ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="object"){e[r]="";if(i.changeCase&&i.local){var u=e[r+1];u&&typeof u=="string"&&(i.changeCase=="u"?e[r]=u[0].toUpperCase():e[r]=u[0].toLowerCase(),e[r+1]=u.substr(1))}else i.changeCase&&(t=i.changeCase)}else t=="U"?e[r]=i.toUpperCase():t=="L"&&(e[r]=i.toLowerCase())}return e.join("")});return this.variables.__=null,u},this.resolveVariables=function(e,t){function o(t){var n=e.indexOf(t,r+1);n!=-1&&(r=n)}var n=[];for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="string")n.push(i);else{if(typeof i!="object")continue;if(i.skip)o(i);else{if(i.processed<r)continue;if(i.text){var s=this.getVariableValue(t,i.text);s&&i.fmtString&&(s=this.tmStrFormat(s,i)),i.processed=r,i.expectIf==null?s&&(n.push(s),o(i)):s?i.skip=i.elseBranch:o(i)}else i.tabstopId!=null?n.push(i):i.changeCase!=null&&n.push(i)}}}return n},this.insertSnippetForSelection=function(e,t){function f(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof r=="object"){if(a[r.tabstopId])continue;var i=e.lastIndexOf(r,n-1);r=t[i]||{tabstopId:r.tabstopId}}t[n]=r}return t}var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=e.session.getTabString(),s=r.match(/^\s*/)[0];n.column<s.length&&(s=s.slice(0,n.column));var o=this.tokenizeTmSnippet(t);o=this.resolveVariables(o,e),o=o.map(function(e){return e=="\n"?e+s:typeof e=="string"?e.replace(/\t/g,i):e});var u=[];o.forEach(function(e,t){if(typeof e!="object")return;var n=e.tabstopId,r=u[n];r||(r=u[n]=[],r.index=n,r.value="");if(r.indexOf(e)!==-1)return;r.push(e);var i=o.indexOf(e,t+1);if(i===-1)return;var s=o.slice(t+1,i),a=s.some(function(e){return typeof e=="object"});a&&!r.value?r.value=s:s.length&&(!r.value||typeof r.value!="string")&&(r.value=s.join(""))}),u.forEach(function(e){e.length=0});var a={};for(var l=0;l<o.length;l++){var c=o[l];if(typeof c!="object")continue;var p=c.tabstopId,d=o.indexOf(c,l+1);if(a[p]){a[p]===c&&(a[p]=null);continue}var v=u[p],m=typeof v.value=="string"?[v.value]:f(v.value);m.unshift(l+1,Math.max(0,d-l)),m.push(c),a[p]=c,o.splice.apply(o,m),v.indexOf(c)===-1&&v.push(c)}var g=0,y=0,b="";o.forEach(function(e){typeof e=="string"?(e[0]==="\n"?(y=e.length-1,g++):y+=e.length,b+=e):e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger)),e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e.data.range,n=e.data.action[0]=="r",r=t.start,i=t.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p<h.length;p++){var d=h[p];if(d.end.row<r.row)continue;if(n&&l(r,d.start)<0&&l(i,d.end)>0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker {    -moz-box-sizing: border-box;    box-sizing: border-box;    background: rgba(194, 193, 208, 0.09);    border: 1px dotted rgba(211, 208, 235, 0.62);    position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"],function(e,t,n){"use strict";function f(){}var r=e("ace/keyboard/hash_handler").HashHandler,i=e("ace/editor").Editor,s=e("ace/snippets").snippetManager,o=e("ace/range").Range,u,a;f.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),u||(u=window.emmet),u.require("resources").setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var n=this.ace.session.doc;this.ace.selection.setRange({start:n.indexToPosition(e),end:n.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,n=e.session.getLine(t).length,r=e.session.doc.positionToIndex({row:t,column:0});return{start:r,end:r+n}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,n,r){n==null&&(n=t==null?this.getContent().length:t),t==null&&(t=0);var i=this.ace,u=i.session.doc,a=o.fromPoints(u.indexToPosition(t),u.indexToPosition(n));i.session.remove(a),a.end=a.start,e=this.$updateTabstops(e),s.insertSnippet(i,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if(e=="html"||e=="php"){var t=this.ace.getCursorPosition(),n=this.ace.session.getState(t.row);typeof n!="string"&&(n=n[0]),n&&(n=n.split("-"),n.length>1?e=n[0]:e=="php"&&(e="html"))}return e},getProfileName:function(){switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var e=u.require("resources").getVariable("profile");return e||(e=this.ace.session.getLines(0,2).join("").search(/<!DOCTYPE[^>]+XHTML/i)!=-1?"xhtml":"html"),e}return"xhtml"},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=1e3,n=0,r=null,i=u.require("range"),s=u.require("tabStops"),o=u.require("resources").getVocabulary("user"),a={tabstop:function(e){var o=parseInt(e.group,10),u=o===0;u?o=++n:o+=t;var f=e.placeholder;f&&(f=s.processText(f,a));var l="${"+o+(f?":"+f:"")+"}";return u&&(r=i.create(e.start,l)),l},escape:function(e){return e=="$"?"\\$":e=="\\"?"\\\\":e}};return e=s.processText(e,a),o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e)?e+="${0}":r&&(e=u.require("utils").replaceSubstring(e,"${0}",r)),e}};var l={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},c=new f;t.commands=new r,t.runEmmetCommand=function(e){try{c.setupContext(e);if(c.getSyntax()=="php")return!1;var t=u.require("actions");if(this.action=="expand_abbreviation_with_tab"&&!e.selection.isEmpty())return!1;if(this.action=="wrap_with_abbreviation")return setTimeout(function(){t.run("wrap_with_abbreviation",c)},0);var n=e.selection.lead,r=e.session.getTokenAt(n.row,n.column);if(r&&/\btag\b/.test(r.type))return!1;var i=t.run(this.action,c)}catch(s){e._signal("changeStatus",typeof s=="string"?s:s.message),console.log(s),i=!1}return i};for(var h in l)t.commands.addCommand({name:"emmet:"+h,action:h,bindKey:l[h],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,n){n?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){return e&&/css|less|scss|sass|stylus|html|php|twig|ejs/.test(e)};var p=function(n,r){var i=r;if(!i)return;var s=t.isSupportedMode(i.session.$modeId);n.enableEmmet===!1&&(s=!1),s&&typeof a=="string"&&e("ace/config").loadModule(a,function(){a=null}),t.updateCommands(i,s)};t.AceEmmetEditor=f,e("ace/config").defineOptions(i.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",p),p({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){typeof e=="string"?a=e:u=e}});
+                (function() {
+                    ace.require(["ace/ext/emmet"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-error_marker.js b/js/ace/ext-error_marker.js
new file mode 100644
index 0000000..dfefa20
--- /dev/null
+++ b/js/ace/ext-error_marker.js
@@ -0,0 +1,5 @@
+;
+                (function() {
+                    ace.require(["ace/ext/error_marker"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-keybinding_menu.js b/js/ace/ext-keybinding_menu.js
new file mode 100644
index 0000000..f73cf44
--- /dev/null
+++ b/js/ace/ext-keybinding_menu.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),ace.define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'<div class="ace_optionsMenuEntry"><span class="ace_optionsMenuCommand">'+t.command+"</span> : "+'<span class="ace_optionsMenuKey">'+t.key+"</span></div>"},"");s.id="kbshortcutmenu",s.innerHTML="<h1>Keyboard Shortcuts</h1>"+o+"</div>",n(t,s,"0","0","0",null)}}var r=e("ace/editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}});
+                (function() {
+                    ace.require(["ace/ext/keybinding_menu"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-language_tools.js b/js/ace/ext-language_tools.js
new file mode 100644
index 0000000..27f59d2
--- /dev/null
+++ b/js/ace/ext-language_tools.js
@@ -0,0 +1,5 @@
+ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="object"){e[r]="";if(i.changeCase&&i.local){var u=e[r+1];u&&typeof u=="string"&&(i.changeCase=="u"?e[r]=u[0].toUpperCase():e[r]=u[0].toLowerCase(),e[r+1]=u.substr(1))}else i.changeCase&&(t=i.changeCase)}else t=="U"?e[r]=i.toUpperCase():t=="L"&&(e[r]=i.toLowerCase())}return e.join("")});return this.variables.__=null,u},this.resolveVariables=function(e,t){function o(t){var n=e.indexOf(t,r+1);n!=-1&&(r=n)}var n=[];for(var r=0;r<e.length;r++){var i=e[r];if(typeof i=="string")n.push(i);else{if(typeof i!="object")continue;if(i.skip)o(i);else{if(i.processed<r)continue;if(i.text){var s=this.getVariableValue(t,i.text);s&&i.fmtString&&(s=this.tmStrFormat(s,i)),i.processed=r,i.expectIf==null?s&&(n.push(s),o(i)):s?i.skip=i.elseBranch:o(i)}else i.tabstopId!=null?n.push(i):i.changeCase!=null&&n.push(i)}}}return n},this.insertSnippetForSelection=function(e,t){function f(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof r=="object"){if(a[r.tabstopId])continue;var i=e.lastIndexOf(r,n-1);r=t[i]||{tabstopId:r.tabstopId}}t[n]=r}return t}var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=e.session.getTabString(),s=r.match(/^\s*/)[0];n.column<s.length&&(s=s.slice(0,n.column));var o=this.tokenizeTmSnippet(t);o=this.resolveVariables(o,e),o=o.map(function(e){return e=="\n"?e+s:typeof e=="string"?e.replace(/\t/g,i):e});var u=[];o.forEach(function(e,t){if(typeof e!="object")return;var n=e.tabstopId,r=u[n];r||(r=u[n]=[],r.index=n,r.value="");if(r.indexOf(e)!==-1)return;r.push(e);var i=o.indexOf(e,t+1);if(i===-1)return;var s=o.slice(t+1,i),a=s.some(function(e){return typeof e=="object"});a&&!r.value?r.value=s:s.length&&(!r.value||typeof r.value!="string")&&(r.value=s.join(""))}),u.forEach(function(e){e.length=0});var a={};for(var l=0;l<o.length;l++){var c=o[l];if(typeof c!="object")continue;var p=c.tabstopId,d=o.indexOf(c,l+1);if(a[p]){a[p]===c&&(a[p]=null);continue}var v=u[p],m=typeof v.value=="string"?[v.value]:f(v.value);m.unshift(l+1,Math.max(0,d-l)),m.push(c),a[p]=c,o.splice.apply(o,m),v.indexOf(c)===-1&&v.push(c)}var g=0,y=0,b="";o.forEach(function(e){typeof e=="string"?(e[0]==="\n"?(y=e.length-1,g++):y+=e.length,b+=e):e.start?e.end={row:g,column:y}:e.start={row:g,column:y}});var w=e.getSelectionRange(),E=e.session.replace(w,b),S=new h(e),x=e.inVirtualSelectionMode&&e.selection.index;S.addTabstops(u,w.start,E,x)},this.insertSnippet=function(e,t){var n=this;if(e.inVirtualSelectionMode)return n.insertSnippetForSelection(e,t);e.forEachSelection(function(){n.insertSnippetForSelection(e,t)},null,{keepOrder:!0}),e.tabstopManager&&e.tabstopManager.tabNext()},this.$getScope=function(e){var t=e.session.$mode.$id||"";t=t.split("/").pop();if(t==="html"||t==="php"){t==="php"&&!e.session.$mode.inlinePhp&&(t="html");var n=e.getCursorPosition(),r=e.session.getState(n.row);typeof r=="object"&&(r=r[0]),r.substring&&(r.substring(0,3)=="js-"?t="javascript":r.substring(0,4)=="css-"?t="css":r.substring(0,4)=="php-"&&(t="php"))}return t},this.getActiveScopes=function(e){var t=this.$getScope(e),n=[t],r=this.snippetMap;return r[t]&&r[t].includeScopes&&n.push.apply(n,r[t].includeScopes),n.push("_"),n},this.expandWithTab=function(e,t){var n=this,r=e.forEachSelection(function(){return n.expandSnippetForSelection(e,t)},null,{keepOrder:!0});return r&&e.tabstopManager&&e.tabstopManager.tabNext(),r},this.expandSnippetForSelection=function(e,t){var n=e.getCursorPosition(),r=e.session.getLine(n.row),i=r.substring(0,n.column),s=r.substr(n.column),o=this.snippetMap,u;return this.getActiveScopes(e).some(function(e){var t=o[e];return t&&(u=this.findMatchingSnippet(t,i,s)),!!u},this),u?t&&t.dryRun?!0:(e.session.doc.removeInLine(n.row,n.column-u.replaceBefore.length,n.column+u.replaceAfter.length),this.variables.M__=u.matchBefore,this.variables.T__=u.matchAfter,this.insertSnippetForSelection(e,u.content),this.variables.M__=this.variables.T__=null,!0):!1},this.findMatchingSnippet=function(e,t,n){for(var r=e.length;r--;){var i=e[r];if(i.startRe&&!i.startRe.test(t))continue;if(i.endRe&&!i.endRe.test(n))continue;if(!i.startRe&&!i.endRe)continue;return i.matchBefore=i.startRe?i.startRe.exec(t):[""],i.matchAfter=i.endRe?i.endRe.exec(n):[""],i.replaceBefore=i.triggerRe?i.triggerRe.exec(t)[0]:"",i.replaceAfter=i.endTriggerRe?i.endTriggerRe.exec(n)[0]:"",i}},this.snippetMap={},this.snippetNameMap={},this.register=function(e,t){function o(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")"),e||""}function u(e,t,n){return e=o(e),t=o(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(e+="$")):(e+=t,e&&e[0]!="^"&&(e="^"+e)),new RegExp(e)}function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={});var o=r[t];if(e.name){var a=o[e.name];a&&i.unregister(a),o[e.name]=e}n[t].push(e),e.tabTrigger&&!e.trigger&&(!e.guard&&/^\w/.test(e.tabTrigger)&&(e.guard="\\b"),e.trigger=s.escapeRegExp(e.tabTrigger)),e.startRe=u(e.trigger,e.guard,!0),e.triggerRe=new RegExp(e.trigger,"",!0),e.endRe=u(e.endTrigger,e.endGuard,!0),e.endTriggerRe=new RegExp(e.endTrigger,"",!0)}var n=this.snippetMap,r=this.snippetNameMap,i=this;e||(e=[]),e&&e.content?a(e):Array.isArray(e)&&e.forEach(a),this._signal("registerSnippets",{scope:t})},this.unregister=function(e,t){function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var s=n[e.scope||t],o=s&&s.indexOf(e);o>=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e.data.range,n=e.data.action[0]=="r",r=t.start,i=t.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p<h.length;p++){var d=h[p];if(d.end.row<r.row)continue;if(n&&l(r,d.start)<0&&l(i,d.end)>0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker {    -moz-box-sizing: border-box;    box-sizing: border-box;    background: rgba(194, 193, 208, 0.09);    border: 1px dotted rgba(211, 208, 235, 0.62);    position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/edit_session","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../edit_session").EditSession,i=e("../virtual_renderer").VirtualRenderer,s=e("../editor").Editor,o=e("../range").Range,u=e("../lib/event"),a=e("../lib/lang"),f=e("../lib/dom"),l=function(e){var t=new i(e);t.$maxLines=4;var n=new s(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusWaitTimout=0,n.$highlightTagPending=!0,n},c=function(e){var t=f.createElement("div"),n=new l(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,s=new o(-1,0,-1,Infinity),c=new o(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?s.id&&(n.session.removeMarker(s.id),s.id=null):s.id=n.session.addMarker(s,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;s.start.row!=t&&(s.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&s.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;s.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];if(r==t.selectedNode)return;t.selectedNode&&f.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&f.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==s.start.row&&(s.start.row=s.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return s.start.row},u.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t}),t.caption||(t.caption=t.value||t.name);var i=-1,s,o;for(var u=0;u<t.caption.length;u++)o=t.caption[u],s=t.matchMask&1<<u?1:0,i!==s?(r.push({type:t.className||""+(s?"completion-highlight":""),value:o}),i=s):r[r.length-1].value+=o;if(t.meta){var a=n.renderer.$size.scrollerWidth/n.renderer.layerConfig.characterWidth;t.meta.length+t.caption.length<a-2&&r.push({type:"rightAlignedText",value:t.meta})}return r},d.$updateOnChange=r,d.start=r,n.session.$computeWidth=function(){return this.screenWidth=0},n.$blockScrolling=Infinity,n.isOpen=!1,n.isTopdown=!1,n.data=[],n.setData=function(e){n.data=e||[],n.setValue(a.stringRepeat("\n",e.length),-1),n.setRow(0)},n.getData=function(e){return n.data[e]},n.getRow=function(){return c.start.row},n.setRow=function(e){e=Math.max(-1,Math.min(this.data.length,e)),c.start.row!=e&&(n.selection.clearSelection(),c.start.row=c.end.row=e||0,n.session._emit("changeBackMarker"),n.moveCursorTo(e||0,0),n.isOpen&&n._signal("select"))},n.on("changeSelection",function(){n.isOpen&&n.setRow(n.selection.lead.row),n.renderer.scrollCursorIntoView()}),n.hide=function(){this.container.style.display="none",this._signal("hide"),n.isOpen=!1},n.show=function(e,t,r){var s=this.container,o=window.innerHeight,u=window.innerWidth,a=this.renderer,f=a.$maxLines*t*1.4,l=e.top+this.$borderSize;l+f>o-t&&!r?(s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var c=e.left;c+s.offsetWidth>u&&(c=u-s.offsetWidth),s.style.left=c+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};f.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {    background-color: #CAD6FA;    z-index: 1;}.ace_editor.ace_autocomplete .ace_line-hover {    border: 1px solid #abbffe;    margin-top: -1px;    background: rgba(233,233,253,0.4);}.ace_editor.ace_autocomplete .ace_line-hover {    position: absolute;    z-index: 2;}.ace_editor.ace_autocomplete .ace_scroller {   background: none;   border: none;   box-shadow: none;}.ace_rightAlignedText {    color: gray;    display: inline-block;    position: absolute;    right: 4px;    text-align: right;    z-index: -1;}.ace_editor.ace_autocomplete .ace_completion-highlight{    color: #000;    text-shadow: 0 0 0.01em;}.ace_editor.ace_autocomplete {    width: 280px;    z-index: 200000;    background: #fbfbfb;    color: #444;    border: 1px lightgray solid;    position: fixed;    box-shadow: 2px 3px 5px rgba(0,0,0,.2);    line-height: 1.4;}"),t.AcePopup=c}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s<i;s++)t(e[s],function(e,t){r++,r===i&&n(e,t)})};var r=/[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/;t.retrievePrecedingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t-1;s>=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s<e.length;s++){if(!n.test(e[s]))break;i.push(e[s])}return i}}),ace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"],function(e,t,n){"use strict";var r=e("./keyboard/hash_handler").HashHandler,i=e("./autocomplete/popup").AcePopup,s=e("./autocomplete/util"),o=e("./lib/event"),u=e("./lib/lang"),a=e("./lib/dom"),f=e("./snippets").snippetManager,l=function(){this.autoInsert=!1,this.autoSelect=!0,this.exactMatch=!1,this.gatherCompletionsId=0,this.keyboardHandler=new r,this.keyboardHandler.bindKeys(this.commands),this.blurListener=this.blurListener.bind(this),this.changeListener=this.changeListener.bind(this),this.mousedownListener=this.mousedownListener.bind(this),this.mousewheelListener=this.mousewheelListener.bind(this),this.changeTimer=u.delayedCall(function(){this.updateCompletions(!0)}.bind(this)),this.tooltipTimer=u.delayedCall(this.updateDocTooltip.bind(this),50)};(function(){this.$init=function(){return this.popup=new i(document.body||document.documentElement),this.popup.on("click",function(e){this.insertMatch(),e.stop()}.bind(this)),this.popup.focus=this.editor.focus.bind(this.editor),this.popup.on("show",this.tooltipTimer.bind(null,null)),this.popup.on("select",this.tooltipTimer.bind(null,null)),this.popup.on("changeHoverMarker",this.tooltipTimer.bind(null,null)),this.popup},this.getPopup=function(){return this.popup||this.$init()},this.openPopup=function(e,t,n){this.popup||this.$init(),this.popup.setData(this.completions.filtered),e.keyBinding.addKeyboardHandler(this.keyboardHandler);var r=e.renderer;this.popup.setRow(this.autoSelect?0:-1);if(!n){this.popup.setTheme(e.getTheme()),this.popup.setFontSize(e.getFontSize());var i=r.layerConfig.lineHeight,s=r.$cursorLayer.getPixelPosition(this.base,!0);s.left-=this.popup.getTextLeftOffset();var o=e.container.getBoundingClientRect();s.top+=o.top-r.layerConfig.offset,s.left+=o.left-e.renderer.scrollLeft,s.left+=r.$gutterLayer.gutterWidth,this.popup.show(s,i)}else n&&!t&&this.detach()},this.detach=function(){this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.off("changeSelection",this.changeListener),this.editor.off("blur",this.blurListener),this.editor.off("mousedown",this.mousedownListener),this.editor.off("mousewheel",this.mousewheelListener),this.changeTimer.cancel(),this.hideDocTooltip(),this.gatherCompletionsId+=1,this.popup&&this.popup.isOpen&&this.popup.hide(),this.base&&this.base.detach(),this.activated=!1,this.completions=this.base=null},this.changeListener=function(e){var t=this.editor.selection.lead;(t.row!=this.base.row||t.column<this.base.column)&&this.detach(),this.activated?this.changeTimer.schedule():this.detach()},this.blurListener=function(e){var t=document.activeElement,n=this.editor.textInput.getElement();t!=n&&t.parentNode!=this.popup.container&&t!=this.tooltipNode&&e.relatedTarget!=this.tooltipNode&&e.relatedTarget!=n&&this.detach()},this.mousedownListener=function(e){this.detach()},this.mousewheelListener=function(e){this.detach()},this.goTo=function(e){var t=this.popup.getRow(),n=this.popup.session.getLength()-1;switch(e){case"up":t=t<=0?n:t-1;break;case"down":t=t>=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var t=this.editor.selection.getAllRanges();for(var n=0,r;r=t[n];n++)r.start.column-=this.completions.filterText.length,this.editor.session.remove(r)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Space:function(e){e.completer.detach(),e.insert(" ")},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(!0)},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=n.getLine(r.row),o=s.retrievePrecedingIdentifier(i,r.column);this.base=n.doc.createAnchor(r.row,r.column-o.length),this.base.$insertRight=!0;var u=[],a=e.completers.length;return e.completers.forEach(function(i,f){i.getCompletions(e,n,r,o,function(r,i){r||(u=u.concat(i));var o=e.getCursorPosition(),f=n.getLine(o.row);t(null,{prefix:s.retrievePrecedingIdentifier(f,o.column,i[0]&&i[0].identifierRegex),matches:u,finished:--a===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,window.innerWidth-r.right<320?(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right=""),t.style.display="block"},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t,n){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else for(var p=0;p<t.length;p++){var d=u.indexOf(i[p],a+1),v=u.indexOf(r[p],a+1);c=d>=0?v<0||d<v?d:v:v;if(c<0)continue e;h=c-a-1,h>0&&(a===-1&&(l+=10),l+=h),f|=1<<c,a=c}o.matchMask=f,o.exactMatch=l?0:1,o.score=(o.score||0)-l,n.push(o)}return n}}).call(c.prototype),t.Autocomplete=l,t.FilteredList=c}),ace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"],function(e,t,n){function s(e,t){var n=e.getTextRange(r.fromPoints({row:0,column:0},t));return n.split(i).length-1}function o(e,t){var n=s(e,t),r=e.getValue().split(i),o=Object.create(null),u=r[n];return r.forEach(function(e,t){if(!e||e===u)return;var i=Math.abs(n-t),s=r.length-i;o[e]?o[e]=Math.max(s,o[e]):o[e]=s}),o}var r=e("../range").Range,i=/[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/;t.getCompletions=function(e,t,n,r,i){var s=o(t,n,r),u=Object.keys(s);i(null,u.map(function(e){return{caption:e,value:e,score:s[e],meta:"local"}}))}}),ace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"],function(e,t,n){"use strict";function m(e){var t=e.getCursorPosition(),n=e.session.getLine(t.row),r;return e.completers.forEach(function(e){e.identifierRegexps&&e.identifierRegexps.forEach(function(e){!r&&e&&(r=u.retrievePrecedingIdentifier(n,t.column,e))})}),r||u.retrievePrecedingIdentifier(n,t.column)}var r=e("../snippets").snippetManager,i=e("../autocomplete").Autocomplete,s=e("../config"),o=e("../lib/lang"),u=e("../autocomplete/util"),a=e("../autocomplete/text_completer"),f={getCompletions:function(e,t,n,r,i){if(t.$mode.completer)return t.$mode.completer.getCompletions(e,t,n,r,i);var s=e.session.getState(n.row),o=t.$mode.getCompletions(s,t,n,r);i(null,o)}},l={getCompletions:function(e,t,n,i,s){var o=r.snippetMap,u=[];r.getActiveScopes(e).forEach(function(e){var t=o[e]||[];for(var n=t.length;n--;){var r=t[n],i=r.name||r.tabTrigger;if(!i)continue;u.push({caption:i,snippet:r.content,meta:r.tabTrigger&&!r.name?r.tabTrigger+"\u21e5 ":"snippet",type:"snippet"})}},this),s(null,u)},getDocTooltip:function(e){e.type=="snippet"&&!e.docHTML&&(e.docHTML=["<b>",o.escapeHTML(e.caption),"</b>","<hr></hr>",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c=e||[]},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},g=function(e){var t=e.editor,n=e.args||"",r=t.completer&&t.completer.activated;if(e.command.name==="backspace")r&&!m(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var s=m(t);s&&!r&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},y=e("../editor").Editor;e("../config").defineOptions(y.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",g)):this.commands.removeListener("afterExec",g)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})});
+                (function() {
+                    ace.require(["ace/ext/language_tools"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-linking.js b/js/ace/ext-linking.js
new file mode 100644
index 0000000..69f8791
--- /dev/null
+++ b/js/ace/ext-linking.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e.getDocumentPosition(),i=t.session,s=i.getTokenAt(r.row,r.column);t._emit("linkHover",{position:r,token:s})}}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}})});
+                (function() {
+                    ace.require(["ace/ext/linking"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-modelist.js b/js/ace/ext-modelist.js
new file mode 100644
index 0000000..9cd0955
--- /dev/null
+++ b/js/ace/ext-modelist.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.length;i++)if(r[i].supportsFile(n)){t=r[i];break}return t}var r=[],s=function(e,t,n){this.name=e,this.caption=t,this.mode="ace/mode/"+e,this.extensions=n;if(/\^/.test(n))var r=n.replace(/\|(\^)?/g,function(e,t){return"$|"+(t?"^":"^.*\\.")})+"$";else var r="^.*\\.("+n+")$";this.extRe=new RegExp(r,"gi")};s.prototype.supportsFile=function(e){return e.match(this.extRe)};var o={ABAP:["abap"],ABC:["abc"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc"],Assembly_x86:["asm"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],C9Search:["c9search_results"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp"],Cirru:["cirru|cr"],Clojure:["clj|cljs"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Dummy:["dummy"],DummySyntax:["dummy"],Eiffel:["e"],EJS:["ejs"],Elixir:["ex|exs"],Elm:["elm"],Erlang:["erl|hrl"],Forth:["frt|fs|ldr"],FTL:["ftl"],Gcode:["gcode"],Gherkin:["feature"],Gitignore:["^.gitignore"],Glsl:["glsl|frag|vert"],golang:["go"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],haXe:["hx"],HTML:["html|htm|xhtml"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Io:["io"],Jack:["jack"],Jade:["jade"],Java:["java"],JavaScript:["js|jsm"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSX:["jsx"],Julia:["jl"],LaTeX:["tex|latex|ltx|bib"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],Markdown:["md|markdown"],Mask:["mask"],MATLAB:["matlab"],MEL:["mel"],MUSHCode:["mc|mush"],MySQL:["mysql"],Nix:["nix"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml"],Powershell:["ps1"],Praat:["praat|praatscript|psc|proc"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],RDoc:["Rd"],RHTML:["Rhtml"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Scheme:["scm|rkt"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Smarty:["smarty|tpl"],snippets:["snippets"],Soy_Template:["soy"],Space:["space"],SQL:["sql"],Stylus:["styl|stylus"],SVG:["svg"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],Twig:["twig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs|vb"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],VHDL:["vhd|vhdl"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],XQuery:["xq"],YAML:["yaml|yml"],Django:["html"]},u={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C and C++",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",FTL:"FreeMarker"},a={};for(var f in o){var l=o[f],c=(u[f]||f).replace(/_/g," "),h=f.toLowerCase(),p=new s(h,c,l[0]);a[h]=p,r.push(p)}n.exports={getModeForPath:i,modes:r,modesByName:a}});
+                (function() {
+                    ace.require(["ace/ext/modelist"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-old_ie.js b/js/ace/ext-old_ie.js
new file mode 100644
index 0000000..6db9b37
--- /dev/null
+++ b/js/ace/ext-old_ie.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o=".ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 325px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;float: left;height: 22px;margin: 0;padding: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=);    }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=);    }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;float: right;font: 16px/16px Arial;height: 14px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing:    border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f='<div class="ace_search right">    <button type="button" action="hide" class="ace_searchbtn_close"></button>    <div class="ace_search_form">        <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input>        <button type="button" action="findNext" class="ace_searchbtn next"></button>        <button type="button" action="findPrev" class="ace_searchbtn prev"></button>        <button type="button" action="findAll" class="ace_searchbtn" title="Alt-Enter">All</button>    </div>    <div class="ace_replace_form">        <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input>        <button type="button" action="replaceAndFindNext" class="ace_replacebtn">Replace</button>        <button type="button" action="replaceAll" class="ace_replacebtn">All</button>    </div>    <div class="ace_search_options">        <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span>        <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span>        <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span>    </div></div>'.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),ace.define("ace/ext/old_ie",["require","exports","module","ace/lib/useragent","ace/tokenizer","ace/ext/searchbox","ace/mode/text"],function(require,exports,module){"use strict";function patch(obj,name,regexp,replacement){eval("obj['"+name+"']="+obj[name].toString().replace(regexp,replacement))}var MAX_TOKEN_COUNT=1e3,useragent=require("../lib/useragent"),TokenizerModule=require("../tokenizer");useragent.isIE&&useragent.isIE<10&&window.top.document.compatMode==="BackCompat"&&(useragent.isOldIE=!0);if(typeof document!="undefined"&&!document.documentElement.querySelector){useragent.isOldIE=!0;var qs=function(e,t){if(t.charAt(0)==".")var n=t.slice(1);else var r=t.match(/(\w+)=(\w+)/),i=r&&r[1],s=r&&r[2];for(var o=0;o<e.all.length;o++){var u=e.all[o];if(n){if(u.className.indexOf(n)!=-1)return u}else if(i&&u.getAttribute(i)==s)return u}},sb=require("./searchbox").SearchBox.prototype;patch(sb,"$initElements",/([^\s=]*).querySelector\((".*?")\)/g,"qs($1, $2)")}var compliantExecNpcg=/()??/.exec("")[1]===undefined;if(compliantExecNpcg)return;var proto=TokenizerModule.Tokenizer.prototype;TokenizerModule.Tokenizer_orig=TokenizerModule.Tokenizer,proto.getLineTokens_orig=proto.getLineTokens,patch(TokenizerModule,"Tokenizer","ruleRegExps.push(adjustedregex);\n",function(e){return e+'        if (state[i].next && RegExp(adjustedregex).test(""))\n            rule._qre = RegExp(adjustedregex, "g");\n        '}),TokenizerModule.Tokenizer.prototype=proto,patch(proto,"getLineTokens",/if \(match\[i \+ 1\] === undefined\)\s*continue;/,"if (!match[i + 1]) {\n        if (value)continue;\n        var qre = state[mapping[i]]._qre;\n        if (!qre) continue;\n        qre.lastIndex = lastIndex;\n        if (!qre.exec(line) || qre.lastIndex != lastIndex)\n            continue;\n    }"),patch(require("../mode/text").Mode.prototype,"getTokenizer",/Tokenizer/,"TokenizerModule.Tokenizer"),useragent.isOldIE=!0});
+                (function() {
+                    ace.require(["ace/ext/old_ie"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-searchbox.js b/js/ace/ext-searchbox.js
new file mode 100644
index 0000000..964646b
--- /dev/null
+++ b/js/ace/ext-searchbox.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o=".ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 325px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;float: left;height: 22px;margin: 0;padding: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=);    }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=);    }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;float: right;font: 16px/16px Arial;height: 14px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing:    border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f='<div class="ace_search right">    <button type="button" action="hide" class="ace_searchbtn_close"></button>    <div class="ace_search_form">        <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input>        <button type="button" action="findNext" class="ace_searchbtn next"></button>        <button type="button" action="findPrev" class="ace_searchbtn prev"></button>        <button type="button" action="findAll" class="ace_searchbtn" title="Alt-Enter">All</button>    </div>    <div class="ace_replace_form">        <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input>        <button type="button" action="replaceAndFindNext" class="ace_replacebtn">Replace</button>        <button type="button" action="replaceAll" class="ace_replacebtn">All</button>    </div>    <div class="ace_search_options">        <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span>        <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span>        <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span>    </div></div>'.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}});
+                (function() {
+                    ace.require(["ace/ext/searchbox"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-settings_menu.js b/js/ace/ext-settings_menu.js
new file mode 100644
index 0000000..d128f01
--- /dev/null
+++ b/js/ace/ext-settings_menu.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/menu_tools/element_generator",["require","exports","module"],function(e,t,n){"use strict";n.exports.createOption=function(t){var n,r=document.createElement("option");for(n in t)t.hasOwnProperty(n)&&(n==="selected"?r.setAttribute(n,t[n]):r[n]=t[n]);return r},n.exports.createCheckbox=function(t,n,r){var i=document.createElement("input");return i.setAttribute("type","checkbox"),i.setAttribute("id",t),i.setAttribute("name",t),i.setAttribute("value",n),i.setAttribute("class",r),n&&i.setAttribute("checked","checked"),i},n.exports.createInput=function(t,n,r){var i=document.createElement("input");return i.setAttribute("type","text"),i.setAttribute("id",t),i.setAttribute("name",t),i.setAttribute("value",n),i.setAttribute("class",r),i},n.exports.createLabel=function(t,n){var r=document.createElement("label");return r.setAttribute("for",n),r.textContent=t,r},n.exports.createSelection=function(t,r,i){var s=document.createElement("select");return s.setAttribute("id",t),s.setAttribute("name",t),s.setAttribute("class",i),r.forEach(function(e){s.appendChild(n.exports.createOption(e))}),s}}),ace.define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i<r.length;i++)if(r[i].supportsFile(n)){t=r[i];break}return t}var r=[],s=function(e,t,n){this.name=e,this.caption=t,this.mode="ace/mode/"+e,this.extensions=n;if(/\^/.test(n))var r=n.replace(/\|(\^)?/g,function(e,t){return"$|"+(t?"^":"^.*\\.")})+"$";else var r="^.*\\.("+n+")$";this.extRe=new RegExp(r,"gi")};s.prototype.supportsFile=function(e){return e.match(this.extRe)};var o={ABAP:["abap"],ABC:["abc"],ActionScript:["as"],ADA:["ada|adb"],Apache_Conf:["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],AsciiDoc:["asciidoc"],Assembly_x86:["asm"],AutoHotKey:["ahk"],BatchFile:["bat|cmd"],C9Search:["c9search_results"],C_Cpp:["cpp|c|cc|cxx|h|hh|hpp"],Cirru:["cirru|cr"],Clojure:["clj|cljs"],Cobol:["CBL|COB"],coffee:["coffee|cf|cson|^Cakefile"],ColdFusion:["cfm"],CSharp:["cs"],CSS:["css"],Curly:["curly"],D:["d|di"],Dart:["dart"],Diff:["diff|patch"],Dockerfile:["^Dockerfile"],Dot:["dot"],Dummy:["dummy"],DummySyntax:["dummy"],Eiffel:["e"],EJS:["ejs"],Elixir:["ex|exs"],Elm:["elm"],Erlang:["erl|hrl"],Forth:["frt|fs|ldr"],FTL:["ftl"],Gcode:["gcode"],Gherkin:["feature"],Gitignore:["^.gitignore"],Glsl:["glsl|frag|vert"],golang:["go"],Groovy:["groovy"],HAML:["haml"],Handlebars:["hbs|handlebars|tpl|mustache"],Haskell:["hs"],haXe:["hx"],HTML:["html|htm|xhtml"],HTML_Ruby:["erb|rhtml|html.erb"],INI:["ini|conf|cfg|prefs"],Io:["io"],Jack:["jack"],Jade:["jade"],Java:["java"],JavaScript:["js|jsm"],JSON:["json"],JSONiq:["jq"],JSP:["jsp"],JSX:["jsx"],Julia:["jl"],LaTeX:["tex|latex|ltx|bib"],LESS:["less"],Liquid:["liquid"],Lisp:["lisp"],LiveScript:["ls"],LogiQL:["logic|lql"],LSL:["lsl"],Lua:["lua"],LuaPage:["lp"],Lucene:["lucene"],Makefile:["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"],Markdown:["md|markdown"],Mask:["mask"],MATLAB:["matlab"],MEL:["mel"],MUSHCode:["mc|mush"],MySQL:["mysql"],Nix:["nix"],ObjectiveC:["m|mm"],OCaml:["ml|mli"],Pascal:["pas|p"],Perl:["pl|pm"],pgSQL:["pgsql"],PHP:["php|phtml"],Powershell:["ps1"],Praat:["praat|praatscript|psc|proc"],Prolog:["plg|prolog"],Properties:["properties"],Protobuf:["proto"],Python:["py"],R:["r"],RDoc:["Rd"],RHTML:["Rhtml"],Ruby:["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"],Rust:["rs"],SASS:["sass"],SCAD:["scad"],Scala:["scala"],Scheme:["scm|rkt"],SCSS:["scss"],SH:["sh|bash|^.bashrc"],SJS:["sjs"],Smarty:["smarty|tpl"],snippets:["snippets"],Soy_Template:["soy"],Space:["space"],SQL:["sql"],Stylus:["styl|stylus"],SVG:["svg"],Tcl:["tcl"],Tex:["tex"],Text:["txt"],Textile:["textile"],Toml:["toml"],Twig:["twig"],Typescript:["ts|typescript|str"],Vala:["vala"],VBScript:["vbs|vb"],Velocity:["vm"],Verilog:["v|vh|sv|svh"],VHDL:["vhd|vhdl"],XML:["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"],XQuery:["xq"],YAML:["yaml|yml"],Django:["html"]},u={ObjectiveC:"Objective-C",CSharp:"C#",golang:"Go",C_Cpp:"C and C++",coffee:"CoffeeScript",HTML_Ruby:"HTML (Ruby)",FTL:"FreeMarker"},a={};for(var f in o){var l=o[f],c=(u[f]||f).replace(/_/g," "),h=f.toLowerCase(),p=new s(h,c,l[0]);a[h]=p,r.push(p)}n.exports={getModeForPath:i,modes:r,modesByName:a}}),ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})}),ace.define("ace/ext/menu_tools/add_editor_menu_options",["require","exports","module","ace/ext/modelist","ace/ext/themelist"],function(e,t,n){"use strict";n.exports.addEditorMenuOptions=function(n){var r=e("../modelist"),i=e("../themelist");n.menuOptions={setNewLineMode:[{textContent:"unix",value:"unix"},{textContent:"windows",value:"windows"},{textContent:"auto",value:"auto"}],setTheme:[],setMode:[],setKeyboardHandler:[{textContent:"ace",value:""},{textContent:"vim",value:"ace/keyboard/vim"},{textContent:"emacs",value:"ace/keyboard/emacs"},{textContent:"textarea",value:"ace/keyboard/textarea"},{textContent:"sublime",value:"ace/keyboard/sublime"}]},n.menuOptions.setTheme=i.themes.map(function(e){return{textContent:e.caption,value:e.theme}}),n.menuOptions.setMode=r.modes.map(function(e){return{textContent:e.name,value:e.mode}})}}),ace.define("ace/ext/menu_tools/get_set_functions",["require","exports","module"],function(e,t,n){"use strict";n.exports.getSetFunctions=function(t){var n=[],r={editor:t,session:t.session,renderer:t.renderer},i=[],s=["setOption","setUndoManager","setDocument","setValue","setBreakpoints","setScrollTop","setScrollLeft","setSelectionStyle","setWrapLimitRange"];return["renderer","session","editor"].forEach(function(e){var t=r[e],o=e;for(var u in t)s.indexOf(u)===-1&&/^set/.test(u)&&i.indexOf(u)===-1&&(i.push(u),n.push({functionName:u,parentObj:t,parentName:o}))}),n}}),ace.define("ace/ext/menu_tools/generate_settings_menu",["require","exports","module","ace/ext/menu_tools/element_generator","ace/ext/menu_tools/add_editor_menu_options","ace/ext/menu_tools/get_set_functions"],function(e,t,n){"use strict";var r=e("./element_generator"),i=e("./add_editor_menu_options").addEditorMenuOptions,s=e("./get_set_functions").getSetFunctions;n.exports.generateSettingsMenu=function(t){function o(){n.sort(function(e,t){var n=e.getAttribute("contains"),r=t.getAttribute("contains");return n.localeCompare(r)})}function u(){var e=document.createElement("div");e.setAttribute("id","ace_settingsmenu"),n.forEach(function(t){e.appendChild(t)});var t=e.appendChild(document.createElement("div")),r="1.1.8";return t.style.padding="1em",t.textContent="Ace version "+r,e}function a(e,n,i,s){var o,u=document.createElement("div");return u.setAttribute("contains",i),u.setAttribute("class","ace_optionsMenuEntry"),u.setAttribute("style","clear: both;"),u.appendChild(r.createLabel(i.replace(/^set/,"").replace(/([A-Z])/g," $1").trim(),i)),Array.isArray(s)?(o=r.createSelection(i,s,n),o.addEventListener("change",function(n){try{t.menuOptions[n.target.id].forEach(function(e){e.textContent!==n.target.textContent&&delete e.selected}),e[n.target.id](n.target.value)}catch(r){throw new Error(r)}})):typeof s=="boolean"?(o=r.createCheckbox(i,s,n),o.addEventListener("change",function(t){try{e[t.target.id](!!t.target.checked)}catch(n){throw new Error(n)}})):(o=r.createInput(i,s,n),o.addEventListener("change",function(t){try{t.target.value==="true"?e[t.target.id](!0):t.target.value==="false"?e[t.target.id](!1):e[t.target.id](t.target.value)}catch(n){throw new Error(n)}})),o.style.cssText="float:right;",u.appendChild(o),u}function f(e,n,r,i){var s=t.menuOptions[e],o=n[i]();return typeof o=="object"&&(o=o.$id),s.forEach(function(e){e.value===o&&(e.selected="selected")}),a(n,r,e,s)}function l(e){var r=e.functionName,i=e.parentObj,s=e.parentName,o,u=r.replace(/^set/,"get");if(t.menuOptions[r]!==undefined)n.push(f(r,i,s,u));else if(typeof i[u]=="function")try{o=i[u](),typeof o=="object"&&(o=o.$id),n.push(a(i,s,r,o))}catch(l){}}var n=[];return i(t),s(t).forEach(function(e){l(e)}),o(),u()}}),ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),ace.define("ace/ext/settings_menu",["require","exports","module","ace/ext/menu_tools/generate_settings_menu","ace/ext/menu_tools/overlay_page","ace/editor"],function(e,t,n){"use strict";function s(e){var t=document.getElementById("ace_settingsmenu");t||i(e,r(e),"0","0","0")}var r=e("./menu_tools/generate_settings_menu").generateSettingsMenu,i=e("./menu_tools/overlay_page").overlayPage;n.exports.init=function(t){var n=e("ace/editor").Editor;n.prototype.showSettingsMenu=function(){s(this)}}});
+                (function() {
+                    ace.require(["ace/ext/settings_menu"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-spellcheck.js b/js/ace/ext-spellcheck.js
new file mode 100644
index 0000000..15c0f86
--- /dev/null
+++ b/js/ace/ext-spellcheck.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})});
+                (function() {
+                    ace.require(["ace/ext/spellcheck"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-split.js b/js/ace/ext-split.js
new file mode 100644
index 0000000..31b3ee7
--- /dev/null
+++ b/js/ace/ext-split.js
@@ -0,0 +1,5 @@
+ace.define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"],function(e,t,n){"use strict";function l(e,t){this.$u=e,this.$doc=t}var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./editor").Editor,u=e("./virtual_renderer").VirtualRenderer,a=e("./edit_session").EditSession,f=function(e,t,n){this.BELOW=1,this.BESIDE=0,this.$container=e,this.$theme=t,this.$splits=0,this.$editorCSS="",this.$editors=[],this.$orientation=this.BESIDE,this.setSplits(n||1),this.$cEditor=this.$editors[0],this.on("focus",function(e){this.$cEditor=e}.bind(this))};(function(){r.implement(this,s),this.$createEditor=function(){var e=document.createElement("div");e.className=this.$editorCSS,e.style.cssText="position: absolute; top:0px; bottom:0px",this.$container.appendChild(e);var t=new o(new u(e,this.$theme));return t.on("focus",function(){this._emit("focus",t)}.bind(this)),this.$editors.push(t),t.setFontSize(this.$fontSize),t},this.setSplits=function(e){var t;if(e<1)throw"The number of splits have to be > 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splits<this.$editors.length&&this.$splits<e)t=this.$editors[this.$splits],this.$container.appendChild(t.container),t.setFontSize(this.$fontSize),this.$splits++;while(this.$splits<e)this.$createEditor(),this.$splits++}else while(this.$splits>e)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();if(n){var r=new l(n,t);t.setUndoManager(r)}return t.$informUndoManager=i.delayedCall(function(){t.$deltas=[]}),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=r+"px",n.container.style.top="0px",n.container.style.left=i*r+"px",n.container.style.height=t+"px",n.resize()}else{var s=t/this.$splits;for(var i=0;i<this.$splits;i++)n=this.$editors[i],n.container.style.width=e+"px",n.container.style.top=i*s+"px",n.container.style.left="0px",n.container.style.height=s+"px",n.resize()}}}).call(f.prototype),function(){this.execute=function(e){this.$u.execute(e)},this.undo=function(){var e=this.$u.undo(!0);e&&this.$doc.selection.setSelectionRange(e)},this.redo=function(){var e=this.$u.redo(!0);e&&this.$doc.selection.setSelectionRange(e)},this.reset=function(){this.$u.reset()},this.hasUndo=function(){return this.$u.hasUndo()},this.hasRedo=function(){return this.$u.hasRedo()}}.call(l.prototype),t.Split=f}),ace.define("ace/ext/split",["require","exports","module","ace/split"],function(e,t,n){"use strict";n.exports=e("../split")});
+                (function() {
+                    ace.require(["ace/ext/split"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-static_highlight.js b/js/ace/ext-static_highlight.js
new file mode 100644
index 0000000..0afe8dc
--- /dev/null
+++ b/js/ace/ext-static_highlight.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../edit_session").EditSession,i=e("../layer/text").Text,s=".ace_static_highlight {font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;font-size: 12px;}.ace_static_highlight .ace_gutter {width: 25px !important;float: left;text-align: right;padding: 0 3px 0 0;margin-right: 3px;position: static !important;}.ace_static_highlight .ace_line { clear: both; }.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}",o=e("../config"),u=e("../lib/dom"),a=function(e,t,n){var r=e.className.match(/lang-(\w+)/),i=t.mode||r&&"ace/mode/"+r[1];if(!i)return!1;var s=t.theme||"ace/theme/textmate",o="",f=[];if(e.firstElementChild){var l=0;for(var c=0;c<e.childNodes.length;c++){var h=e.childNodes[c];h.nodeType==3?(l+=h.data.length,o+=h.data):f.push(l,h)}}else o=u.getInnerText(e),t.trim&&(o=o.trim());a.render(o,i,s,t.firstLineNumber,!t.showGutter,function(t){u.importCssString(t.css,"ace_highlight"),e.innerHTML=t.html;var r=e.firstChild.firstChild;for(var i=0;i<f.length;i+=2){var s=t.session.doc.indexToPosition(f[i]),o=f[i+1],a=r.children[s.row];a&&a.appendChild(o)}n&&n()})};a.render=function(e,t,n,i,s,u){function h(){var r=a.renderSync(e,t,n,i,s);return u?u(r):r}var f=1,l=r.prototype.$modes;typeof n=="string"&&(f++,o.loadModule(["theme",n],function(e){n=e,--f||h()}));var c;return t&&typeof t=="object"&&!t.getTokenizer&&(c=t,t=c.path),typeof t=="string"&&(f++,o.loadModule(["mode",t],function(e){if(!l[t]||c)l[t]=new e.Mode(c);t=l[t],--f||h()})),--f||h()},a.renderSync=function(e,t,n,o,u){o=parseInt(o||1,10);var a=new r("");a.setUseWorker(!1),a.setMode(t);var f=new i(document.createElement("div"));f.setSession(a),f.config={characterWidth:10,lineHeight:20},a.setValue(e);var l=[],c=a.getLength();for(var h=0;h<c;h++)l.push("<div class='ace_line'>"),u||l.push("<span class='ace_gutter ace_gutter-cell' unselectable='on'></span>"),f.$renderLine(l,h,!0,!1),l.push("\n</div>");var p="<div class='"+n.cssClass+"'>"+"<div class='ace_static_highlight' style='counter-reset:ace_line "+(o-1)+"'>"+l.join("")+"</div>"+"</div>";return f.destroy(),{css:s+n.cssText,html:p,session:a}},n.exports=a,n.exports.highlight=a});
+                (function() {
+                    ace.require(["ace/ext/static_highlight"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-statusbar.js b/js/ace/ext-statusbar.js
new file mode 100644
index 0000000..398ca3c
--- /dev/null
+++ b/js/ace/ext-statusbar.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this));e.on("changeStatus",function(){n.schedule(100)}),e.on("changeSelection",function(){n.schedule(100)})};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection.lead;n(r.row+":"+r.column," ");if(!e.selection.isEmpty()){var i=e.getSelectionRange();n("("+(i.end.row-i.start.row)+":"+(i.end.column-i.start.column)+")")}t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
+                (function() {
+                    ace.require(["ace/ext/statusbar"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-textarea.js b/js/ace/ext-textarea.js
new file mode 100644
index 0000000..2e131d4
--- /dev/null
+++ b/js/ace/ext-textarea.js
@@ -0,0 +1,5 @@
+ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else o=r.getInnerText(e),e.innerHTML="";var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}),ace.define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace","ace/theme/textmate"],function(e,t,n){"use strict";function a(e,t){for(var n in t)e.style[n]=t[n]}function f(e,t){if(e.type!="textarea")throw new Error("Textarea required!");var n=e.parentNode,i=document.createElement("div"),s=function(){var t="position:relative;";["margin-top","margin-left","margin-right","margin-bottom"].forEach(function(n){t+=n+":"+u(e,i,n)+";"});var n=u(e,i,"width")||e.clientWidth+"px",r=u(e,i,"height")||e.clientHeight+"px";t+="height:"+r+";width:"+n+";",t+="display:inline-block;",i.setAttribute("style",t)};r.addListener(window,"resize",s),s(),n.insertBefore(i,e.nextSibling);while(n!==document){if(n.tagName.toUpperCase()==="FORM"){var o=n.onsubmit;n.onsubmit=function(n){e.value=t(),o&&o.call(this,n)};break}n=n.parentNode}return i}function l(t,n,r){s.loadScript(t,function(){e([n],r)})}function c(e,t,n,r,i,s){function a(e){return e==="true"||e==1}var o=e.getSession(),u=e.renderer;return s=s||l,e.setDisplaySettings=function(t){t==null&&(t=n.style.display=="none"),t?(n.style.display="block",n.hideButton.focus(),e.on("focus",function r(){e.removeListener("focus",r),n.style.display="none"})):e.focus()},e.$setOption=e.setOption,e.$getOption=e.getOption,e.setOption=function(t,n){switch(t){case"mode":e.$setOption("mode","ace/mode/"+n);break;case"theme":e.$setOption("theme","ace/theme/"+n);break;case"keybindings":switch(n){case"vim":e.setKeyboardHandler("ace/keyboard/vim");break;case"emacs":e.setKeyboardHandler("ace/keyboard/emacs");break;default:e.setKeyboardHandler(null)}break;case"softWrap":case"fontSize":e.$setOption(t,n);break;default:e.$setOption(t,a(n))}},e.getOption=function(t){switch(t){case"mode":return e.$getOption("mode").substr("ace/mode/".length);case"theme":return e.$getOption("theme").substr("ace/theme/".length);case"keybindings":var n=e.getKeyboardHandler();switch(n&&n.$id){case"ace/keyboard/vim":return"vim";case"ace/keyboard/emacs":return"emacs";default:return"ace"}break;default:return e.$getOption(t)}},e.setOptions(i),e}function h(e,n,i){function f(e,t,n,r){if(!n){e.push("<input type='checkbox' title='",t,"' ",r+""=="true"?"checked='true'":"","'></input>");return}e.push("<select title='"+t+"'>");for(var i in n)e.push("<option value='"+i+"' "),r==i&&e.push(" selected "),e.push(">",n[i],"</option>");e.push("</select>")}var s=null,o={mode:"Mode:",wrap:"Soft Wrap:",theme:"Theme:",fontSize:"Font Size:",showGutter:"Display Gutter:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},showGutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},wrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("<table><tr><th>Setting</th><th>Value</th></tr>");for(var l in t.defaultOptions)a.push("<tr><td>",o[l],"</td>"),a.push("<td>"),f(a,l,u[l],i.getOption(l)),a.push("</td></tr>");a.push("</table>"),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;i.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;i.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d<p.length;d++)p[d].onchange=c;var v=e.getElementsByTagName("input");for(var d=0;d<v.length;d++)v[d].onclick=h;var m=document.createElement("input");m.type="button",m.value="Hide",r.addListener(m,"click",function(){i.setDisplaySettings(!1)}),e.appendChild(m),e.hideButton=m}var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/net"),o=e("../ace");e("../theme/textmate"),n.exports=t=o;var u=function(e,t,n){var r=e.style[n];r||(window.getComputedStyle?r=window.getComputedStyle(e,"").getPropertyValue(n):r=e.currentStyle[n]);if(!r||r=="auto"||r=="intrinsic")r=t.style[n];return r};t.transformTextarea=function(e,n){var s,u=f(e,function(){return s.getValue()});e.style.display="none",u.style.background="white";var p=document.createElement("div");a(p,{top:"0px",left:"0px",right:"0px",bottom:"0px",border:"1px solid gray",position:"absolute"}),u.appendChild(p);var d=document.createElement("div");a(d,{position:"absolute",right:"0px",bottom:"0px",background:"red",cursor:"nw-resize",borderStyle:"solid",borderWidth:"9px 8px 10px 9px",width:"2px",borderColor:"lightblue gray gray lightblue",zIndex:101});var v=document.createElement("div"),m={top:"0px",left:"20%",right:"0px",bottom:"0px",position:"absolute",padding:"5px",zIndex:100,color:"white",display:"none",overflow:"auto",fontSize:"14px",boxShadow:"-5px 2px 3px gray"};i.isOldIE?m.backgroundColor="#333":m.backgroundColor="rgba(0, 0, 0, 0.6)",a(v,m),u.appendChild(v),n=n||t.defaultOptions;var g=o.edit(p);s=g.getSession(),s.setValue(e.value||e.innerHTML),g.focus(),u.appendChild(d),c(g,p,v,o,n,l),h(v,d,g);var y="";return r.addListener(d,"mousemove",function(e){var t=this.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top;n+r<(t.width+t.height)/2?(this.style.cursor="pointer",y="toggle"):(y="resize",this.style.cursor="nw-resize")}),r.addListener(d,"mousedown",function(e){if(y=="toggle"){g.setDisplaySettings();return}u.style.zIndex=1e5;var t=u.getBoundingClientRect(),n=t.width+t.left-e.clientX,i=t.height+t.top-e.clientY;r.capture(d,function(e){u.style.width=e.clientX-t.left+n+"px",u.style.height=e.clientY-t.top+i+"px",g.resize()},function(){})}),g},t.defaultOptions={mode:"javascript",theme:"textmate",wrap:"off",fontSize:"12px",showGutter:"false",keybindings:"ace",showPrintMargin:"false",useSoftTabs:"true",showInvisibles:"false"}});
+                (function() {
+                    ace.require(["ace/ext/textarea"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-themelist.js b/js/ace/ext-themelist.js
new file mode 100644
index 0000000..18b731d
--- /dev/null
+++ b/js/ace/ext-themelist.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})});
+                (function() {
+                    ace.require(["ace/ext/themelist"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/ext-whitespace.js b/js/ace/ext-whitespace.js
new file mode 100644
index 0000000..d1ac267
--- /dev/null
+++ b/js/ace/ext-whitespace.js
@@ -0,0 +1,5 @@
+ace.define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang");t.$detectIndentation=function(e,t){function c(e){var t=0;for(var r=e;r<n.length;r+=e)t+=n[r]||0;return t}var n=[],r=[],i=0,s=0,o=Math.min(e.length,1e3);for(var u=0;u<o;u++){var a=e[u];if(!/^\s*[^*+\-\s]/.test(a))continue;a[0]=="	"&&i++;var f=a.match(/^ */)[0].length;if(f&&a[f]!="	"){var l=f-s;l>0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f;while(u<o&&a[a.length-1]=="\\")a=e[u++]}var h=r.reduce(function(e,t){return e+t},0),p={score:0,length:0},d=0;for(var u=1;u<12;u++){var v=c(u);u==1?(d=v,v=n[1]?.9:.8,n.length||(v=0)):v/=d,r[u]&&(v+=r[u]/h),v>p.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1)return{ch:"	",length:m};if(d>i+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t?-1:0;for(var s=0,o=r.length;s<o;s++){var u=r[s],a=u.search(/\s+$/);a>i&&n.removeInLine(s,a,u.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t=="	"?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c<h;c++){var p=a[c],d=p.match(/^\s*/)[0];if(d){var v=e.$getStringScreenWidth(d)[0],m=Math.floor(v/s),g=v%s,y=f[m]||(f[m]=r.stringRepeat(o,m));y+=l[g]||(l[g]=r.stringRepeat(" ",g)),y!=d&&(u.removeInLine(c,0,d.length),u.insertInLine({row:c,column:0},y))}}e.setTabSize(n),e.setUseSoftTabs(t==" ")},t.$parseStringArg=function(e){var t={};/t/.test(e)?t.ch="	":/s/.test(e)&&(t.ch=" ");var n=e.match(/\d+/);return n&&(t.length=parseInt(n[0],10)),t},t.$parseArg=function(e){return e?typeof e=="string"?t.$parseStringArg(e):typeof e.text=="string"?t.$parseStringArg(e.text):e:{}},t.commands=[{name:"detectIndentation",exec:function(e){t.detectIndentation(e.session)}},{name:"trimTrailingSpace",exec:function(e){t.trimTrailingSpace(e.session)}},{name:"convertIndentation",exec:function(e,n){var r=t.$parseArg(n);t.convertIndentation(e.session,r.ch,r.length)}},{name:"setIndentation",exec:function(e,n){var r=t.$parseArg(n);r.length&&e.session.setTabSize(r.length),r.ch&&e.session.setUseSoftTabs(r.ch==" ")}}]});
+                (function() {
+                    ace.require(["ace/ext/whitespace"], function() {});
+                })();
+            
\ No newline at end of file
diff --git a/js/ace/keybinding-emacs.js b/js/ace/keybinding-emacs.js
new file mode 100644
index 0000000..091df98
--- /dev/null
+++ b/js/ace/keybinding-emacs.js
@@ -0,0 +1 @@
+ace.define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"],function(e,t,n){"use strict";function a(){}var r=e("./lib/oop"),i=e("./range").Range,s=e("./search").Search,o=e("./edit_session").EditSession,u=e("./search_highlight").SearchHighlight;r.inherits(a,s),function(){this.enter=function(e,t){if(!t.needle)return!1;var n=e.getCursorPosition();this.displayOccurContent(e,t);var r=this.originalToOccurPosition(e.session,n);return e.moveCursorToPosition(r),!0},this.exit=function(e,t){var n=t.translatePosition&&e.getCursorPosition(),r=n&&this.occurToOriginalPosition(e.session,n);return this.displayOriginalContent(e),r&&e.moveCursorToPosition(r),!0},this.highlight=function(e,t){var n=e.$occurHighlight=e.$occurHighlight||e.addDynamicMarker(new u(null,"ace_occur-highlight","text"));n.setRegexp(t),e._emit("changeBackMarker")},this.displayOccurContent=function(e,t){this.$originalSession=e.session;var n=this.matchingLines(e.session,t),r=n.map(function(e){return e.content}),i=new o(r.join("\n"));i.$occur=this,i.$occurMatchingLines=n,e.setSession(i),this.$useEmacsStyleLineStart=this.$originalSession.$useEmacsStyleLineStart,i.$useEmacsStyleLineStart=this.$useEmacsStyleLineStart,this.highlight(i,t.re),i._emit("changeBackMarker")},this.displayOriginalContent=function(e){e.setSession(this.$originalSession),this.$originalSession.$useEmacsStyleLineStart=this.$useEmacsStyleLineStart},this.originalToOccurPosition=function(e,t){var n=e.$occurMatchingLines,r={row:0,column:0};if(!n)return r;for(var i=0;i<n.length;i++)if(n[i].row===t.row)return{row:i,column:t.column};return r},this.occurToOriginalPosition=function(e,t){var n=e.$occurMatchingLines;return!n||!n[t.row]?t:{row:n[t.row].row,column:t.column}},this.matchingLines=function(e,t){t=r.mixin({},t);if(!e||!t.needle)return[];var n=new s;return n.set(t),n.findAll(e).reduce(function(t,n){var r=n.start.row,i=t[t.length-1];return i&&i.row===r?t:t.concat({row:r,content:e.getLine(r)})},[])}}.call(a.prototype);var f=e("./lib/dom");f.importCssString(".ace_occur-highlight {\n    border-radius: 4px;\n    background-color: rgba(87, 255, 8, 0.25);\n    position: absolute;\n    z-index: 4;\n    -moz-box-sizing: border-box;\n    -webkit-box-sizing: border-box;\n    box-sizing: border-box;\n    box-shadow: 0 0 4px rgb(91, 255, 50);\n}\n.ace_dark .ace_occur-highlight {\n    background-color: rgb(80, 140, 85);\n    box-shadow: 0 0 4px rgb(60, 120, 70);\n}\n","incremental-occur-highlighting"),t.Occur=a}),ace.define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"],function(e,t,n){function f(){}var r=e("../config"),i=e("../occur").Occur,s={name:"occur",exec:function(e,t){var n=!!e.session.$occur,r=(new i).enter(e,t);r&&!n&&f.installIn(e)},readOnly:!0},o=[{name:"occurexit",bindKey:"esc|Ctrl-G",exec:function(e){var t=e.session.$occur;if(!t)return;t.exit(e,{}),e.session.$occur||f.uninstallFrom(e)},readOnly:!0},{name:"occuraccept",bindKey:"enter",exec:function(e){var t=e.session.$occur;if(!t)return;t.exit(e,{translatePosition:!0}),e.session.$occur||f.uninstallFrom(e)},readOnly:!0}],u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/oop");a.inherits(f,u),function(){this.isOccurHandler=!0,this.attach=function(e){u.call(this,o,e.commands.platform),this.$editor=e};var e=this.handleKeyboard;this.handleKeyboard=function(t,n,r,i){var s=e.call(this,t,n,r,i);return s&&s.command?s:undefined}}.call(f.prototype),f.installIn=function(e){var t=new this;e.keyBinding.addKeyboardHandler(t),e.commands.addCommands(o)},f.uninstallFrom=function(e){e.commands.removeCommands(o);var t=e.getKeyboardHandler();t.isOccurHandler&&e.keyBinding.removeKeyboardHandler(t)},t.occurStartCommand=s}),ace.define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"],function(e,t,n){function u(e){this.$iSearch=e}var r=e("../config"),i=e("../lib/oop"),s=e("../keyboard/hash_handler").HashHandler,o=e("./occur_commands").occurStartCommand;t.iSearchStartCommands=[{name:"iSearch",bindKey:{win:"Ctrl-F",mac:"Command-F"},exec:function(e,t){r.loadModule(["core","ace/incremental_search"],function(n){var r=n.iSearch=n.iSearch||new n.IncrementalSearch;r.activate(e,t.backwards),t.jumpToFirstMatch&&r.next(t)})},readOnly:!0},{name:"iSearchBackwards",exec:function(e,t){e.execCommand("iSearch",{backwards:!0})},readOnly:!0},{name:"iSearchAndGo",bindKey:{win:"Ctrl-K",mac:"Command-G"},exec:function(e,t){e.execCommand("iSearch",{jumpToFirstMatch:!0,useCurrentOrPrevSearch:!0})},readOnly:!0},{name:"iSearchBackwardsAndGo",bindKey:{win:"Ctrl-Shift-K",mac:"Command-Shift-G"},exec:function(e){e.execCommand("iSearch",{jumpToFirstMatch:!0,backwards:!0,useCurrentOrPrevSearch:!0})},readOnly:!0}],t.iSearchCommands=[{name:"restartSearch",bindKey:{win:"Ctrl-F",mac:"Command-F"},exec:function(e){e.cancelSearch(!0)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"searchForward",bindKey:{win:"Ctrl-S|Ctrl-K",mac:"Ctrl-S|Command-G"},exec:function(e,t){t.useCurrentOrPrevSearch=!0,e.next(t)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"searchBackward",bindKey:{win:"Ctrl-R|Ctrl-Shift-K",mac:"Ctrl-R|Command-Shift-G"},exec:function(e,t){t.useCurrentOrPrevSearch=!0,t.backwards=!0,e.next(t)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"extendSearchTerm",exec:function(e,t){e.addString(t)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"extendSearchTermSpace",bindKey:"space",exec:function(e){e.addString(" ")},readOnly:!0,isIncrementalSearchCommand:!0},{name:"shrinkSearchTerm",bindKey:"backspace",exec:function(e){e.removeChar()},readOnly:!0,isIncrementalSearchCommand:!0},{name:"confirmSearch",bindKey:"return",exec:function(e){e.deactivate()},readOnly:!0,isIncrementalSearchCommand:!0},{name:"cancelSearch",bindKey:"esc|Ctrl-G",exec:function(e){e.deactivate(!0)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"occurisearch",bindKey:"Ctrl-O",exec:function(e){var t=i.mixin({},e.$options);e.deactivate(),o.exec(e.$editor,t)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"yankNextWord",bindKey:"Ctrl-w",exec:function(e){var t=e.$editor,n=t.selection.getRangeOfMovements(function(e){e.moveCursorWordRight()}),r=t.session.getTextRange(n);e.addString(r)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"yankNextChar",bindKey:"Ctrl-Alt-y",exec:function(e){var t=e.$editor,n=t.selection.getRangeOfMovements(function(e){e.moveCursorRight()}),r=t.session.getTextRange(n);e.addString(r)},readOnly:!0,isIncrementalSearchCommand:!0},{name:"recenterTopBottom",bindKey:"Ctrl-l",exec:function(e){e.$editor.execCommand("recenterTopBottom")},readOnly:!0,isIncrementalSearchCommand:!0},{name:"selectAllMatches",bindKey:"Ctrl-space",exec:function(e){var t=e.$editor,n=t.session.$isearchHighlight,r=n&&n.cache?n.cache.reduce(function(e,t){return e.concat(t?t:[])},[]):[];e.deactivate(!1),r.forEach(t.selection.addRange.bind(t.selection))},readOnly:!0,isIncrementalSearchCommand:!0},{name:"searchAsRegExp",bindKey:"Alt-r",exec:function(e){e.convertNeedleToRegExp()},readOnly:!0,isIncrementalSearchCommand:!0}],i.inherits(u,s),function(){this.attach=function(e){var n=this.$iSearch;s.call(this,t.iSearchCommands,e.commands.platform),this.$commandExecHandler=e.commands.addEventListener("exec",function(e){return e.command.isIncrementalSearchCommand?(e.stopPropagation(),e.preventDefault(),e.command.exec(n,e.args||{})):undefined})},this.detach=function(e){if(!this.$commandExecHandler)return;e.commands.removeEventListener("exec",this.$commandExecHandler),delete this.$commandExecHandler};var e=this.handleKeyboard;this.handleKeyboard=function(t,n,r,i){if((n===1||n===8)&&r==="v"||n===1&&r==="y")return null;var s=e.call(this,t,n,r,i);if(s.command)return s;if(n==-1){var o=this.commands.extendSearchTerm;if(o)return{command:o,args:r}}return{command:"null",passEvent:n==0||n==4}}}.call(u.prototype),t.IncrementalSearchKeyboardHandler=u}),ace.define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"],function(e,t,n){"use strict";function f(){this.$options={wrap:!1,skipCurrent:!1},this.$keyboardHandler=new a(this)}function l(e){return e instanceof RegExp}function c(e){var t=String(e),n=t.indexOf("/"),r=t.lastIndexOf("/");return{expression:t.slice(n+1,r),flags:t.slice(r+1)}}function h(e,t){try{return new RegExp(e,t)}catch(n){return e}}function p(e){return h(e.expression,e.flags)}var r=e("./lib/oop"),i=e("./range").Range,s=e("./search").Search,o=e("./search_highlight").SearchHighlight,u=e("./commands/incremental_search_commands"),a=u.IncrementalSearchKeyboardHandler;r.inherits(f,s),function(){this.activate=function(e,t){this.$editor=e,this.$startPos=this.$currentPos=e.getCursorPosition(),this.$options.needle="",this.$options.backwards=t,e.keyBinding.addKeyboardHandler(this.$keyboardHandler),this.$originalEditorOnPaste=e.onPaste,e.onPaste=this.onPaste.bind(this),this.$mousedownHandler=e.addEventListener("mousedown",this.onMouseDown.bind(this)),this.selectionFix(e),this.statusMessage(!0)},this.deactivate=function(e){this.cancelSearch(e);var t=this.$editor;t.keyBinding.removeKeyboardHandler(this.$keyboardHandler),this.$mousedownHandler&&(t.removeEventListener("mousedown",this.$mousedownHandler),delete this.$mousedownHandler),t.onPaste=this.$originalEditorOnPaste,this.message("")},this.selectionFix=function(e){e.selection.isEmpty()&&!e.session.$emacsMark&&e.clearSelection()},this.highlight=function(e){var t=this.$editor.session,n=t.$isearchHighlight=t.$isearchHighlight||t.addDynamicMarker(new o(null,"ace_isearch-result","text"));n.setRegexp(e),t._emit("changeBackMarker")},this.cancelSearch=function(e){var t=this.$editor;return this.$prevNeedle=this.$options.needle,this.$options.needle="",e?(t.moveCursorToPosition(this.$startPos),this.$currentPos=this.$startPos):t.pushEmacsMark&&t.pushEmacsMark(this.$startPos,!1),this.highlight(null),i.fromPoints(this.$currentPos,this.$currentPos)},this.highlightAndFindWithNeedle=function(e,t){if(!this.$editor)return null;var n=this.$options;t&&(n.needle=t.call(this,n.needle||"")||"");if(n.needle.length===0)return this.statusMessage(!0),this.cancelSearch(!0);n.start=this.$currentPos;var r=this.$editor.session,s=this.find(r),o=this.$editor.emacsMark?!!this.$editor.emacsMark():!this.$editor.selection.isEmpty();return s&&(n.backwards&&(s=i.fromPoints(s.end,s.start)),this.$editor.selection.setRange(i.fromPoints(o?this.$startPos:s.end,s.end)),e&&(this.$currentPos=s.end),this.highlight(n.re)),this.statusMessage(s),s},this.addString=function(e){return this.highlightAndFindWithNeedle(!1,function(t){if(!l(t))return t+e;var n=c(t);return n.expression+=e,p(n)})},this.removeChar=function(e){return this.highlightAndFindWithNeedle(!1,function(e){if(!l(e))return e.substring(0,e.length-1);var t=c(e);return t.expression=t.expression.substring(0,t.expression.length-1),p(t)})},this.next=function(e){return e=e||{},this.$options.backwards=!!e.backwards,this.$currentPos=this.$editor.getCursorPosition(),this.highlightAndFindWithNeedle(!0,function(t){return e.useCurrentOrPrevSearch&&t.length===0?this.$prevNeedle||"":t})},this.onMouseDown=function(e){return this.deactivate(),!0},this.onPaste=function(e){this.addString(e)},this.convertNeedleToRegExp=function(){return this.highlightAndFindWithNeedle(!1,function(e){return l(e)?e:h(e,"ig")})},this.convertNeedleToString=function(){return this.highlightAndFindWithNeedle(!1,function(e){return l(e)?c(e).expression:e})},this.statusMessage=function(e){var t=this.$options,n="";n+=t.backwards?"reverse-":"",n+="isearch: "+t.needle,n+=e?"":" (not found)",this.message(n)},this.message=function(e){this.$editor.showCommandLine?(this.$editor.showCommandLine(e),this.$editor.focus()):console.log(e)}}.call(f.prototype),t.IncrementalSearch=f;var d=e("./lib/dom");d.importCssString&&d.importCssString(".ace_marker-layer .ace_isearch-result {  position: absolute;  z-index: 6;  -moz-box-sizing: border-box;  -webkit-box-sizing: border-box;  box-sizing: border-box;}div.ace_isearch-result {  border-radius: 4px;  background-color: rgba(255, 200, 0, 0.5);  box-shadow: 0 0 4px rgb(255, 200, 0);}.ace_dark div.ace_isearch-result {  background-color: rgb(100, 110, 160);  box-shadow: 0 0 4px rgb(80, 90, 140);}","incremental-search-highlighting");var v=e("./commands/command_manager");(function(){this.setupIncrementalSearch=function(e,t){if(this.usesIncrementalSearch==t)return;this.usesIncrementalSearch=t;var n=u.iSearchStartCommands,r=t?"addCommands":"removeCommands";this[r](n)}}).call(v.CommandManager.prototype);var m=e("./editor").Editor;e("./config").defineOptions(m.prototype,"editor",{useIncrementalSearch:{set:function(e){this.keyBinding.$handlers.forEach(function(t){t.setupIncrementalSearch&&t.setupIncrementalSearch(this,e)}),this._emit("incrementalSearchSettingChanged",{isEnabled:e})}}})}),ace.define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom");e("../incremental_search");var i=e("../commands/incremental_search_commands"),s=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.floor((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(i,r)},o=e("./hash_handler").HashHandler;t.handler=new o,t.handler.isEmacs=!0,t.handler.$id="ace/keyboard/emacs";var u=!1,a,f;t.handler.attach=function(e){u||(u=!0,r.importCssString("            .emacs-mode .ace_cursor{                border: 1px rgba(50,250,50,0.8) solid!important;                -moz-box-sizing: border-box!important;                -webkit-box-sizing: border-box!important;                box-sizing: border-box!important;                background-color: rgba(0,250,0,0.9);                opacity: 0.5;            }            .emacs-mode .ace_hidden-cursors .ace_cursor{                opacity: 1;                background-color: transparent;            }            .emacs-mode .ace_overwrite-cursors .ace_cursor {                opacity: 1;                background-color: transparent;                border-width: 0 0 2px 2px !important;            }            .emacs-mode .ace_text-layer {                z-index: 4            }            .emacs-mode .ace_cursor-layer {                z-index: 2            }","emacsMode")),a=e.session.$selectLongWords,e.session.$selectLongWords=!0,f=e.session.$useEmacsStyleLineStart,e.session.$useEmacsStyleLineStart=!0,e.session.$emacsMark=null,e.session.$emacsMarkRing=e.session.$emacsMarkRing||[],e.emacsMark=function(){return this.session.$emacsMark},e.setEmacsMark=function(e){this.session.$emacsMark=e},e.pushEmacsMark=function(e,t){var n=this.session.$emacsMark;n&&this.session.$emacsMarkRing.push(n),!e||t?this.setEmacsMark(e):this.session.$emacsMarkRing.push(e)},e.popEmacsMark=function(){var e=this.emacsMark();return e?(this.setEmacsMark(null),e):this.session.$emacsMarkRing.pop()},e.getLastEmacsMark=function(e){return this.session.$emacsMark||this.session.$emacsMarkRing.slice(-1)[0]},e.emacsMarkForSelection=function(e){var t=this.selection,n=this.multiSelect?this.multiSelect.getAllRanges().length:1,r=t.index||0,i=this.session.$emacsMarkRing,s=i.length-(n-r),o=i[s]||t.anchor;return e&&i.splice(s,1,"row"in e&&"column"in e?e:undefined),o},e.on("click",c),e.on("changeSession",l),e.renderer.screenToTextCoordinates=s,e.setStyle("emacs-mode"),e.commands.addCommands(v),t.handler.platform=e.commands.platform,e.$emacsModeHandler=this,e.addEventListener("copy",this.onCopy),e.addEventListener("paste",this.onPaste)},t.handler.detach=function(e){delete e.renderer.screenToTextCoordinates,e.session.$selectLongWords=a,e.session.$useEmacsStyleLineStart=f,e.removeEventListener("click",c),e.removeEventListener("changeSession",l),e.unsetStyle("emacs-mode"),e.commands.removeCommands(v),e.removeEventListener("copy",this.onCopy),e.removeEventListener("paste",this.onPaste),e.$emacsModeHandler=null};var l=function(e){e.oldSession&&(e.oldSession.$selectLongWords=a,e.oldSession.$useEmacsStyleLineStart=f),a=e.session.$selectLongWords,e.session.$selectLongWords=!0,f=e.session.$useEmacsStyleLineStart,e.session.$useEmacsStyleLineStart=!0,e.session.hasOwnProperty("$emacsMark")||(e.session.$emacsMark=null),e.session.hasOwnProperty("$emacsMarkRing")||(e.session.$emacsMarkRing=[])},c=function(e){e.editor.session.$emacsMark=null},h=e("../lib/keys").KEY_MODS,p={C:"ctrl",S:"shift",M:"alt",CMD:"command"},d=["C-S-M-CMD","S-M-CMD","C-M-CMD","C-S-CMD","C-S-M","M-CMD","S-CMD","S-M","C-CMD","C-M","C-S","CMD","M","S","C"];d.forEach(function(e){var t=0;e.split("-").forEach(function(e){t|=h[p[e]]}),p[t]=e.toLowerCase()+"-"}),t.handler.onCopy=function(e,n){if(n.$handlesEmacsOnCopy)return;n.$handlesEmacsOnCopy=!0,t.handler.commands.killRingSave.exec(n),n.$handlesEmacsOnCopy=!1},t.handler.onPaste=function(e,t){t.pushEmacsMark(t.getCursorPosition())},t.handler.bindKey=function(e,t){typeof e=="object"&&(e=e[this.platform]);if(!e)return;var n=this.commandKeyBinding;e.split("|").forEach(function(e){e=e.toLowerCase(),n[e]=t;var r=e.split(" ").slice(0,-1);r.reduce(function(e,t,n){var r=e[n-1]?e[n-1]+" ":"";return e.concat([r+t])},[]).forEach(function(e){n[e]||(n[e]="null")})},this)},t.handler.getStatusText=function(e,t){var n="";return t.count&&(n+=t.count),t.keyChain&&(n+=" "+t.keyChain),n},t.handler.handleKeyboard=function(e,t,n,r){if(r===-1)return undefined;var i=e.editor;i._signal("changeStatus");if(t==-1){i.pushEmacsMark();if(e.count){var s=(new Array(e.count+1)).join(n);return e.count=null,{command:"insertstring",args:s}}}var o=p[t];if(o=="c-"||e.count){var u=parseInt(n[n.length-1]);if(typeof u=="number"&&!isNaN(u))return e.count=Math.max(e.count,0)||0,e.count=10*e.count+u,{command:"null"}}o&&(n=o+n),e.keyChain&&(n=e.keyChain+=" "+n);var a=this.commandKeyBinding[n];e.keyChain=a=="null"?n:"";if(!a)return undefined;if(a==="null")return{command:"null"};if(a==="universalArgument")return e.count=-4,{command:"null"};var f;typeof a!="string"&&(f=a.args,a.command&&(a=a.command),a==="goorselect"&&(a=i.emacsMark()?f[1]:f[0],f=null));if(typeof a=="string"){(a==="insertstring"||a==="splitline"||a==="togglecomment")&&i.pushEmacsMark(),a=this.commands[a]||i.commands.commands[a];if(!a)return undefined}!a.readOnly&&!a.isYank&&(e.lastCommand=null),!a.readOnly&&i.emacsMark()&&i.setEmacsMark(null);if(e.count){var u=e.count;e.count=0;if(!a||!a.handlesCount)return{args:f,command:{exec:function(e,t){for(var n=0;n<u;n++)a.exec(e,t)},multiSelectAction:a.multiSelectAction}};f||(f={}),typeof f=="object"&&(f.count=u)}return{command:a,args:f}},t.emacsKeys={"Up|C-p":{command:"goorselect",args:["golineup","selectup"]},"Down|C-n":{command:"goorselect",args:["golinedown","selectdown"]},"Left|C-b":{command:"goorselect",args:["gotoleft","selectleft"]},"Right|C-f":{command:"goorselect",args:["gotoright","selectright"]},"C-Left|M-b":{command:"goorselect",args:["gotowordleft","selectwordleft"]},"C-Right|M-f":{command:"goorselect",args:["gotowordright","selectwordright"]},"Home|C-a":{command:"goorselect",args:["gotolinestart","selecttolinestart"]},"End|C-e":{command:"goorselect",args:["gotolineend","selecttolineend"]},"C-Home|S-M-,":{command:"goorselect",args:["gotostart","selecttostart"]},"C-End|S-M-.":{command:"goorselect",args:["gotoend","selecttoend"]},"S-Up|S-C-p":"selectup","S-Down|S-C-n":"selectdown","S-Left|S-C-b":"selectleft","S-Right|S-C-f":"selectright","S-C-Left|S-M-b":"selectwordleft","S-C-Right|S-M-f":"selectwordright","S-Home|S-C-a":"selecttolinestart","S-End|S-C-e":"selecttolineend","S-C-Home":"selecttostart","S-C-End":"selecttoend","C-l":"recenterTopBottom","M-s":"centerselection","M-g":"gotoline","C-x C-p":"selectall","C-Down":{command:"goorselect",args:["gotopagedown","selectpagedown"]},"C-Up":{command:"goorselect",args:["gotopageup","selectpageup"]},"PageDown|C-v":{command:"goorselect",args:["gotopagedown","selectpagedown"]},"PageUp|M-v":{command:"goorselect",args:["gotopageup","selectpageup"]},"S-C-Down":"selectpagedown","S-C-Up":"selectpageup","C-s":"iSearch","C-r":"iSearchBackwards","M-C-s":"findnext","M-C-r":"findprevious","S-M-5":"replace",Backspace:"backspace","Delete|C-d":"del","Return|C-m":{command:"insertstring",args:"\n"},"C-o":"splitline","M-d|C-Delete":{command:"killWord",args:"right"},"C-Backspace|M-Backspace|M-Delete":{command:"killWord",args:"left"},"C-k":"killLine","C-y|S-Delete":"yank","M-y":"yankRotate","C-g":"keyboardQuit","C-w|C-S-W":"killRegion","M-w":"killRingSave","C-Space":"setMark","C-x C-x":"exchangePointAndMark","C-t":"transposeletters","M-u":"touppercase","M-l":"tolowercase","M-/":"autocomplete","C-u":"universalArgument","M-;":"togglecomment","C-/|C-x u|S-C--|C-z":"undo","S-C-/|S-C-x u|C--|S-C-z":"redo","C-x r":"selectRectangularRegion","M-x":{command:"focusCommandLine",args:"M-x "}},t.handler.bindKeys(t.emacsKeys),t.handler.addCommands({recenterTopBottom:function(e){var t=e.renderer,n=t.$cursorLayer.getPixelPosition(),r=t.$size.scrollerHeight-t.lineHeight,i=t.scrollTop;Math.abs(n.top-i)<2?i=n.top-r:Math.abs(n.top-i-r*.5)<2?i=n.top:i=n.top-r*.5,e.session.setScrollTop(i)},selectRectangularRegion:function(e){e.multiSelect.toggleBlockSelection()},setMark:{exec:function(e,t){function u(){var t=e.popEmacsMark();t&&e.moveCursorToPosition(t)}if(t&&t.count){e.inMultiSelectMode?e.forEachSelection(u):u(),u();return}var n=e.emacsMark(),r=e.selection.getAllRanges(),i=r.map(function(e){return{row:e.start.row,column:e.start.column}}),s=!0,o=r.every(function(e){return e.isEmpty()});if(s&&(n||!o)){e.inMultiSelectMode?e.forEachSelection({exec:e.clearSelection.bind(e)}):e.clearSelection(),n&&e.pushEmacsMark(null);return}if(!n){i.forEach(function(t){e.pushEmacsMark(t)}),e.setEmacsMark(i[i.length-1]);return}},readOnly:!0,handlesCount:!0},exchangePointAndMark:{exec:function(t,n){var r=t.selection;if(!n.count&&!r.isEmpty()){r.setSelectionRange(r.getRange(),!r.isBackwards());return}if(n.count){var i={row:r.lead.row,column:r.lead.column};r.clearSelection(),r.moveCursorToPosition(t.emacsMarkForSelection(i))}else r.selectToPosition(t.emacsMarkForSelection())},readOnly:!0,handlesCount:!0,multiSelectAction:"forEach"},killWord:{exec:function(e,n){e.clearSelection(),n=="left"?e.selection.selectWordLeft():e.selection.selectWordRight();var r=e.getSelectionRange(),i=e.session.getTextRange(r);t.killRing.add(i),e.session.remove(r),e.clearSelection()},multiSelectAction:"forEach"},killLine:function(e){e.pushEmacsMark(null);var n=e.getCursorPosition();n.column===0&&e.session.doc.getLine(n.row).length===0?e.selection.selectLine():(e.clearSelection(),e.selection.selectLineEnd());var r=e.getSelectionRange(),i=e.session.getTextRange(r);t.killRing.add(i),e.session.remove(r),e.clearSelection()},yank:function(e){e.onPaste(t.killRing.get()||""),e.keyBinding.$data.lastCommand="yank"},yankRotate:function(e){if(e.keyBinding.$data.lastCommand!="yank")return;e.undo(),e.session.$emacsMarkRing.pop(),e.onPaste(t.killRing.rotate()),e.keyBinding.$data.lastCommand="yank"},killRegion:{exec:function(e){t.killRing.add(e.getCopyText()),e.commands.byName.cut.exec(e)},readOnly:!0,multiSelectAction:"forEach"},killRingSave:{exec:function(e){e.$handlesEmacsOnCopy=!0;var n=e.session.$emacsMarkRing.slice(),r=[];t.killRing.add(e.getCopyText()),setTimeout(function(){function t(){var t=e.selection,n=t.getRange(),i=t.isBackwards()?n.end:n.start;r.push({row:i.row,column:i.column}),t.clearSelection()}e.$handlesEmacsOnCopy=!1,e.inMultiSelectMode?e.forEachSelection({exec:t}):t(),e.session.$emacsMarkRing=n.concat(r.reverse())},0)},readOnly:!0},keyboardQuit:function(e){e.selection.clearSelection(),e.setEmacsMark(null),e.keyBinding.$data.count=null},focusCommandLine:function(e,t){e.showCommandLine&&e.showCommandLine(t)}}),t.handler.addCommands(i.iSearchStartCommands);var v=t.handler.commands;v.yank.isYank=!0,v.yankRotate.isYank=!0,t.killRing={$data:[],add:function(e){e&&this.$data.push(e),this.$data.length>30&&this.$data.shift()},get:function(e){return e=e||1,this.$data.slice(this.$data.length-e,this.$data.length).reverse().join("\n")},pop:function(){return this.$data.length>1&&this.$data.pop(),this.get()},rotate:function(){return this.$data.unshift(this.$data.pop()),this.get()}}})
\ No newline at end of file
diff --git a/js/ace/keybinding-vim.js b/js/ace/keybinding-vim.js
new file mode 100644
index 0000000..1156755
--- /dev/null
+++ b/js/ace/keybinding-vim.js
@@ -0,0 +1 @@
+ace.define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/multi_select"],function(e,t,n){"use strict";function r(){function t(e){return typeof e!="object"?e+"":"line"in e?e.line+":"+e.ch:"anchor"in e?t(e.anchor)+"->"+t(e.head):Array.isArray(e)?"["+e.map(function(e){return t(e)})+"]":JSON.stringify(e)}var e="";for(var n=0;n<arguments.length;n++){var r=arguments[n],i=t(r);e+=i+"  "}console.log(e)}function m(e){return{row:e.line,column:e.ch}}function g(e){return new w(e.row,e.column)}function S(e){e.setOption("disableInput",!0),e.setOption("showCursorWhenSelecting",!1),v.signal(e,"vim-mode-change",{mode:"normal"}),e.on("cursorActivity",Rn),et(e),v.on(e.getInputField(),"paste",O(e))}function x(e){e.setOption("disableInput",!1),e.off("cursorActivity",Rn),v.off(e.getInputField(),"paste",O(e)),e.state.vim=null}function T(e,t){this==v.keyMap.vim&&v.rmClass(e.getWrapperElement(),"cm-fat-cursor"),(!t||t.attach!=N)&&x(e,!1)}function N(e,t){this==v.keyMap.vim&&v.addClass(e.getWrapperElement(),"cm-fat-cursor"),(!t||t.attach!=N)&&S(e)}function C(e,t){if(!t)return undefined;var n=A(e);if(!n)return!1;var r=v.Vim.findKey(t,n);return typeof r=="function"&&v.signal(t,"vim-keypress",n),r}function A(e){if(e.charAt(0)=="'")return e.charAt(1);var t=e.split("-");/-$/.test(e)&&t.splice(-2,2,"-");var n=t[t.length-1];if(t.length==1&&t[0].length==1)return!1;if(t.length==2&&t[0]=="Shift"&&n.length==1)return!1;var r=!1;for(var i=0;i<t.length;i++){var s=t[i];s in k?t[i]=k[s]:r=!0,s in L&&(t[i]=L[s])}return r?(W(n)&&(t[t.length-1]=n.toLowerCase()),"<"+t.join("-")+">"):!1}function O(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(gt(e.getCursor(),0,1)),dt.enterInsertMode(e,{},t))}),t.onPasteFn}function P(e,t){var n=[];for(var r=e;r<e+t;r++)n.push(String.fromCharCode(r));return n}function q(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function R(e){return/^[a-z]$/.test(e)}function U(e){return"()[]{}".indexOf(e)!=-1}function z(e){return M.test(e)}function W(e){return/^[A-Z]$/.test(e)}function X(e){return/^\s*$/.test(e)}function V(e,t){for(var n=0;n<t.length;n++)if(t[n]==e)return!0;return!1}function J(e,t,n){if(t===undefined)throw Error("defaultValue is required");n||(n="string"),$[e]={type:n,defaultValue:t},K(e,t)}function K(e,t,n){var r=$[e];if(!r)throw Error("Unknown option: "+e);if(r.type=="boolean"){if(t&&t!==!0)throw Error("Invalid argument: "+e+"="+t);t!==!1&&(t=!0)}r.value=r.type=="boolean"?!!t:t}function Q(e){var t=$[e];if(!t)throw Error("Unknown option: "+e);return t.value}function Z(){this.latestRegister=undefined,this.isPlaying=!1,this.isRecording=!1,this.replaySearchQueries=[],this.onRecordingDone=undefined,this.lastInsertModeChanges=Y()}function et(e){return e.state.vim||(e.state.vim={inputState:new st,lastEditInputState:undefined,lastEditActionCommand:undefined,lastHPos:-1,lastHSPos:-1,lastMotion:null,marks:{},fakeCursor:null,insertMode:!1,insertModeRepeat:undefined,visualMode:!1,visualLine:!1,visualBlock:!1,lastSelection:null,lastPastedText:null,sel:{}}),e.state.vim}function nt(){tt={searchQuery:null,searchIsReversed:!1,lastSubstituteReplacePart:undefined,jumpList:G(),macroModeState:new Z,lastChararacterSearch:{increment:0,forward:!0,selectedCharacter:""},registerController:new at({}),searchHistoryController:new ft({}),exCommandHistoryController:new ft({})};for(var e in $){var t=$[e];t.value=t.defaultValue}}function st(){this.prefixRepeat=[],this.motionRepeat=[],this.operator=null,this.operatorArgs=null,this.motion=null,this.motionArgs=null,this.keyBuffer=[],this.registerName=null}function ot(e,t){e.state.vim.inputState=new st,v.signal(e,"vim-command-done",t)}function ut(e,t,n){this.clear(),this.keyBuffer=[e||""],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!!t,this.blockwise=!!n}function at(e){this.registers=e,this.unnamedRegister=e['"']=new ut,e["."]=new ut,e[":"]=new ut,e["/"]=new ut}function ft(){this.historyBuffer=[],this.iterator,this.initialPrefix=null}function ht(e,t){var n=[];for(var r=0;r<t;r++)n.push(e);return n}function vt(e,t,n){var r=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=At(e,r)-1;i=n?i+1:i;var s=Math.min(Math.max(0,t.ch),i);return w(r,s)}function mt(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function gt(e,t,n){return typeof t=="object"&&(n=t.ch,t=t.line),w(e.line+t,e.ch+n)}function yt(e,t){return{line:t.line-e.line,ch:t.line-e.line}}function bt(e,t,n,r){var i,s=[],o=[];for(var u=0;u<t.length;u++){var a=t[u];if(n=="insert"&&a.context!="insert"||a.context&&a.context!=n||r.operator&&a.type=="action"||!(i=wt(e,a.keys)))continue;i=="partial"&&s.push(a),i=="full"&&o.push(a)}return{partial:s.length&&s,full:o.length&&o}}function wt(e,t){if(t.slice(-11)=="<character>"){var n=t.length-11,r=e.slice(0,n),i=t.slice(0,n);return r==i&&e.length>n?"full":i.indexOf(r)==0?"partial":!1}return e==t?"full":t.indexOf(e)==0?"partial":!1}function Et(e){var t=/^.*(<[\w\-]+>)$/.exec(e),n=t?t[1]:e.slice(-1);if(n.length>1)switch(n){case"<CR>":n="\n";break;case"<Space>":n=" ";break;default:}return n}function St(e,t,n){return function(){for(var r=0;r<n;r++)t(e)}}function xt(e){return w(e.line,e.ch)}function Tt(e,t){return e.ch==t.ch&&e.line==t.line}function Nt(e,t){return e.line<t.line?!0:e.line==t.line&&e.ch<t.ch?!0:!1}function Ct(e,t){return arguments.length>2&&(t=Ct.apply(undefined,Array.prototype.slice.call(arguments,1))),Nt(e,t)?e:t}function kt(e,t){return arguments.length>2&&(t=kt.apply(undefined,Array.prototype.slice.call(arguments,1))),Nt(e,t)?t:e}function Lt(e,t,n){var r=Nt(e,t),i=Nt(t,n);return r&&i}function At(e,t){return e.getLine(t).length}function Ot(e){return e.split("").reverse().join("")}function Mt(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function _t(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function Dt(e,t,n){var r=At(e,t),i=(new Array(n-r+1)).join(" ");e.setCursor(w(t,r)),e.replaceRange(i,e.getCursor())}function Pt(e,t){var n=[],r=e.listSelections(),i=xt(e.clipPos(t)),s=!Tt(t,i),o=e.getCursor("head"),u=Bt(r,o),a=Tt(r[u].head,r[u].anchor),f=r.length-1,l=f-u>u?f:0,c=r[l].anchor,h=Math.min(c.line,i.line),p=Math.max(c.line,i.line),d=c.ch,v=i.ch,m=r[l].head.ch-d,g=v-d;m>0&&g<=0?(d++,s||v--):m<0&&g>=0?(d--,a||v++):m<0&&g==-1&&(d--,v++);for(var y=h;y<=p;y++){var b={anchor:new w(y,d),head:new w(y,v)};n.push(b)}return u=i.line==p?n.length-1:0,e.setSelections(n),t.ch=v,c.ch=d,c}function Ht(e,t,n){var r=[];for(var i=0;i<n;i++){var s=gt(t,i,0);r.push({anchor:s,head:s})}e.setSelections(r,0)}function Bt(e,t,n){for(var r=0;r<e.length;r++){var i=n!="head"&&Tt(e[r].anchor,t),s=n!="anchor"&&Tt(e[r].head,t);if(i||s)return r}return-1}function jt(e,t){var n=t.lastSelection,r=function(){var t=e.listSelections(),n=t[0],r=t[t.length-1],i=Nt(n.anchor,n.head)?n.anchor:n.head,s=Nt(r.anchor,r.head)?r.head:r.anchor;return[i,s]},i=function(){var t=e.getCursor(),r=e.getCursor(),i=n.visualBlock;if(i){var s=i.width,o=i.height;r=w(t.line+o,t.ch+s);var u=[];for(var a=t.line;a<r.line;a++){var f=w(a,t.ch),l=w(a,r.ch),c={anchor:f,head:l};u.push(c)}e.setSelections(u)}else{var h=n.anchorMark.find(),p=n.headMark.find(),d=p.line-h.line,v=p.ch-h.ch;r={line:r.line+d,ch:d?r.ch:v+r.ch},n.visualLine&&(t=w(t.line,0),r=w(r.line,At(e,r.line))),e.setSelection(t,r)}return[t,r]};return t.visualMode?r():i()}function Ft(e,t){var n=t.sel.anchor,r=t.sel.head;t.lastPastedText&&(r=e.posFromIndex(e.indexFromPos(n)+t.lastPastedText.length),t.lastPastedText=null),t.lastSelection={anchorMark:e.setBookmark(n),headMark:e.setBookmark(r),anchor:xt(n),head:xt(r),visualMode:t.visualMode,visualLine:t.visualLine,visualBlock:t.visualBlock}}function It(e,t,n){var r=e.state.vim.sel,i=r.head,s=r.anchor,o;return Nt(n,t)&&(o=n,n=t,t=o),Nt(i,s)?(i=Ct(t,i),s=kt(s,n)):(s=Ct(t,s),i=kt(i,n),i=gt(i,0,-1),i.ch==-1&&i.line!=e.firstLine()&&(i=w(i.line-1,At(e,i.line-1)))),[s,i]}function qt(e,t,n){var r=e.state.vim;t=t||r.sel;var n=n||r.visualLine?"line":r.visualBlock?"block":"char",i=Rt(e,t,n);e.setSelections(i.ranges,i.primary),Un(e)}function Rt(e,t,n,r){var i=xt(t.head),s=xt(t.anchor);if(n=="char"){var o=!r&&!Nt(t.head,t.anchor)?1:0,u=Nt(t.head,t.anchor)?1:0;return i=gt(t.head,0,o),s=gt(t.anchor,0,u),{ranges:[{anchor:s,head:i}],primary:0}}if(n=="line"){if(!Nt(t.head,t.anchor)){s.ch=0;var a=e.lastLine();i.line>a&&(i.line=a),i.ch=At(e,i.line)}else i.ch=0,s.ch=At(e,s.line);return{ranges:[{anchor:s,head:i}],primary:0}}if(n=="block"){var f=Math.min(s.line,i.line),l=Math.min(s.ch,i.ch),c=Math.max(s.line,i.line),h=Math.max(s.ch,i.ch)+1,p=c-f+1,d=i.line==f?0:p-1,v=[];for(var m=0;m<p;m++)v.push({anchor:w(f+m,l),head:w(f+m,h)});return{ranges:v,primary:d}}}function Ut(e){var t=e.getCursor("head");return e.getSelection().length==1&&(t=Ct(t,e.getCursor("anchor"))),t}function zt(e,t){var n=e.state.vim;t!==!1&&e.setCursor(vt(e,n.sel.head)),Ft(e,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,v.signal(e,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function Wt(e,t,n){var r=e.getRange(t,n);if(/\n\s*$/.test(r)){var i=r.split("\n");i.pop();var s;for(var s=i.pop();i.length>0&&s&&X(s);s=i.pop())n.line--,n.ch=0;s?(n.line--,n.ch=At(e,n.line)):n.ch=0}}function Xt(e,t,n){t.ch=0,n.ch=0,n.line++}function Vt(e){if(!e)return 0;var t=e.search(/\S/);return t==-1?e.length:t}function $t(e,t,n,r,i){var s=Ut(e),o=e.getLine(s.line),u=s.ch,a=o.substring(u),f;i?f=a.search(/\w/):f=a.search(/\S/);if(f==-1)return null;u+=f,a=o.substring(u);var l=o.substring(0,u),c;r?c=/^\S+/:/\w/.test(o.charAt(u))?c=/^\w+/:c=/^[^\w\s]+/;var h=c.exec(a),p=u,d=u+h[0].length,v=Ot(l),m=c.exec(v);m&&(p-=m[0].length);if(t){var g=o.substring(d),y=g.match(/^\s*/)[0].length;if(y>0)d+=y;else{var b=v.length-p,E=v.substring(b),S=E.match(/^\s*/)[0].length;p-=S}}return{start:w(s.line,p),end:w(s.line,d)}}function Jt(e,t,n){Tt(t,n)||tt.jumpList.add(e,t,n)}function Kt(e,t){tt.lastChararacterSearch.increment=e,tt.lastChararacterSearch.forward=t.forward,tt.lastChararacterSearch.selectedCharacter=t.selectedCharacter}function Yt(e,t,n,r){var i=xt(e.getCursor()),s=n?1:-1,o=n?e.lineCount():-1,u=i.ch,a=i.line,f=e.getLine(a),l={lineText:f,nextCh:f.charAt(u),lastCh:null,index:u,symb:r,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[r],forward:n,depth:0,curMoveThrough:!1},c=Qt[r];if(!c)return i;var h=Gt[c].init,p=Gt[c].isComplete;h&&h(l);while(a!==o&&t){l.index+=s,l.nextCh=l.lineText.charAt(l.index);if(!l.nextCh){a+=s,l.lineText=e.getLine(a)||"";if(s>0)l.index=0;else{var d=l.lineText.length;l.index=d>0?d-1:0}l.nextCh=l.lineText.charAt(l.index)}p(l)&&(i.line=a,i.ch=l.index,t--)}return l.nextCh||l.curMoveThrough?w(a,l.index):i}function Zt(e,t,n,r,i){var s=t.line,o=t.ch,u=e.getLine(s),a=n?1:-1,f=r?D:_;if(i&&u==""){s+=a,u=e.getLine(s);if(!q(e,s))return null;o=n?0:u.length}for(;;){if(i&&u=="")return{from:0,to:0,line:s};var l=a>0?u.length:-1,c=l,h=l;while(o!=l){var p=!1;for(var d=0;d<f.length&&!p;++d)if(f[d].test(u.charAt(o))){c=o;while(o!=l&&f[d].test(u.charAt(o)))o+=a;h=o,p=c!=h;if(c==t.ch&&s==t.line&&h==c+a)continue;return{from:Math.min(c,h+1),to:Math.max(c,h),line:s}}p||(o+=a)}s+=a;if(!q(e,s))return null;u=e.getLine(s),o=a>0?0:u.length}throw new Error("The impossible happened.")}function en(e,t,n,r,i,s){var o=xt(t),u=[];(r&&!i||!r&&i)&&n++;var a=!r||!i;for(var f=0;f<n;f++){var l=Zt(e,t,r,s,a);if(!l){var c=At(e,e.lastLine());u.push(r?{line:e.lastLine(),from:c,to:c}:{line:0,from:0,to:0});break}u.push(l),t=w(l.line,r?l.to-1:l.from)}var h=u.length!=n,p=u[0],d=u.pop();return r&&!i?(!h&&(p.from!=o.ch||p.line!=o.line)&&(d=u.pop()),w(d.line,d.from)):r&&i?w(d.line,d.to-1):!r&&i?(!h&&(p.to!=o.ch||p.line!=o.line)&&(d=u.pop()),w(d.line,d.to)):w(d.line,d.from)}function tn(e,t,n,r){var i=e.getCursor(),s=i.ch,o;for(var u=0;u<t;u++){var a=e.getLine(i.line);o=sn(s,a,r,n,!0);if(o==-1)return null;s=o}return w(e.getCursor().line,o)}function nn(e,t){var n=e.getCursor().line;return vt(e,w(n,t-1))}function rn(e,t,n,r){if(!V(n,F))return;t.marks[n]&&t.marks[n].clear(),t.marks[n]=e.setBookmark(r)}function sn(e,t,n,r,i){var s;return r?(s=t.indexOf(n,e+1),s!=-1&&!i&&(s-=1)):(s=t.lastIndexOf(n,e-1),s!=-1&&!i&&(s+=1)),s}function on(e,t,n,r,i){function c(t){return!/\S/.test(e.getLine(t))}function h(e,t,n){return n?c(e)!=c(e+t):!c(e)&&c(e+t)}var s=t.line,o=e.firstLine(),u=e.lastLine(),a,f,l=s;if(r){while(o<=l&&l<=u&&n>0)h(l,r)&&n--,l+=r;return new w(l,0)}var p=e.state.vim;if(p.visualLine&&h(s,1,!0)){var d=p.sel.anchor;h(d.line,-1,!0)&&(!i||d.line!=s)&&(s+=1)}var v=c(s);for(l=s;l<=u&&n;l++)h(l,1,!0)&&(!i||c(l)!=v)&&n--;f=new w(l,0),l>u&&!v?v=!0:i=!1;for(l=s;l>o;l--)if(!i||c(l)==v||l==s)if(h(l,-1,!0))break;return a=new w(l,0),{start:a,end:f}}function un(e,t,n,r){var i=t,s,o,u={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[n],a={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[n],f=e.getLine(i.line).charAt(i.ch),l=f===a?1:0;s=e.scanForBracket(w(i.line,i.ch+l),-1,null,{bracketRegex:u}),o=e.scanForBracket(w(i.line,i.ch+l),1,null,{bracketRegex:u});if(!s||!o)return{start:i,end:i};s=s.pos,o=o.pos;if(s.line==o.line&&s.ch>o.ch||s.line>o.line){var c=s;s=o,o=c}return r?o.ch+=1:s.ch+=1,{start:s,end:o}}function an(e,t,n,r){var i=xt(t),s=e.getLine(i.line),o=s.split(""),u,a,f,l,c=o.indexOf(n);i.ch<c?i.ch=c:c<i.ch&&o[i.ch]==n&&(a=i.ch,--i.ch);if(o[i.ch]==n&&!a)u=i.ch+1;else for(f=i.ch;f>-1&&!u;f--)o[f]==n&&(u=f+1);if(u&&!a)for(f=u,l=o.length;f<l&&!a;f++)o[f]==n&&(a=f);return!u||!a?{start:i,end:i}:(r&&(--u,++a),{start:w(i.line,u),end:w(i.line,a)})}function fn(){}function ln(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new fn)}function cn(e,t,n,r,i){e.openDialog?e.openDialog(t,r,{bottom:!0,value:i.value,onKeyDown:i.onKeyDown,onKeyUp:i.onKeyUp}):r(prompt(n,""))}function hn(e){var t=pn(e)||[];if(!t.length)return[];var n=[];if(t[0]!==0)return;for(var r=0;r<t.length;r++)typeof t[r]=="number"&&n.push(e.substring(t[r]+1,t[r+1]));return n}function pn(e){var t=!1,n=[];for(var r=0;r<e.length;r++){var i=e.charAt(r);!t&&i=="/"&&n.push(r),t=!t&&i=="\\"}return n}function dn(e){var t="|(){",n="}",r=!1,i=[];for(var s=-1;s<e.length;s++){var o=e.charAt(s)||"",u=e.charAt(s+1)||"",a=u&&t.indexOf(u)!=-1;r?((o!=="\\"||!a)&&i.push(o),r=!1):o==="\\"?(r=!0,u&&n.indexOf(u)!=-1&&(a=!0),(!a||u==="\\")&&i.push(o)):(i.push(o),a&&u!=="\\"&&i.push("\\"))}return i.join("")}function vn(e){var t=!1,n=[];for(var r=-1;r<e.length;r++){var i=e.charAt(r)||"",s=e.charAt(r+1)||"";t?(n.push(i),t=!1):i==="\\"?(t=!0,z(s)||s==="$"?n.push("$"):s!=="/"&&s!=="\\"&&n.push("\\")):(i==="$"&&n.push("$"),n.push(i),s==="/"&&n.push("\\"))}return n.join("")}function mn(e){var t=new v.StringStream(e),n=[];while(!t.eol()){while(t.peek()&&t.peek()!="\\")n.push(t.next());t.match("\\/",!0)?n.push("/"):t.match("\\\\",!0)?n.push("\\"):n.push(t.next())}return n.join("")}function gn(e,t,n){var r=tt.registerController.getRegister("/");r.setText(e);if(e instanceof RegExp)return e;var i=pn(e),s,o;if(!i.length)s=e;else{s=e.substring(0,i[0]);var u=e.substring(i[0]);o=u.indexOf("i")!=-1}if(!s)return null;Q("pcre")||(s=dn(s)),n&&(t=/^[^A-Z]*$/.test(s));var a=new RegExp(s,t||o?"i":undefined);return a}function yn(e,t){e.openNotification?e.openNotification('<span style="color: red">'+t+"</span>",{bottom:!0,duration:5e3}):alert(t)}function bn(e,t){var n="";return e&&(n+='<span style="font-family: monospace">'+e+"</span>"),n+='<input type="text"/> <span style="color: #888">',t&&(n+='<span style="color: #888">',n+=t,n+="</span>"),n}function En(e,t){var n=(t.prefix||"")+" "+(t.desc||""),r=bn(t.prefix,t.desc);cn(e,r,n,t.onClose,t)}function Sn(e,t){if(e instanceof RegExp&&t instanceof RegExp){var n=["global","multiline","ignoreCase","source"];for(var r=0;r<n.length;r++){var i=n[r];if(e[i]!==t[i])return!1}return!0}return!1}function xn(e,t,n,r){if(!t)return;var i=ln(e),s=gn(t,!!n,!!r);if(!s)return;return Nn(e,s),Sn(s,i.getQuery())?s:(i.setQuery(s),s)}function Tn(e){if(e.source.charAt(0)=="^")var t=!0;return{token:function(n){if(t&&!n.sol()){n.skipToEnd();return}var r=n.match(e,!1);if(r){if(r[0].length==0)return n.next(),"searching";if(!n.sol()){n.backUp(1);if(!e.exec(n.next()+r[0]))return n.next(),null}return n.match(e),"searching"}while(!n.eol()){n.next();if(n.match(e,!1))break}},query:e}}function Nn(e,t){var n=ln(e).getOverlay();if(!n||t!=n.query)n&&e.removeOverlay(n),n=Tn(t),e.addOverlay(n),ln(e).setOverlay(n)}function Cn(e,t,n,r){return r===undefined&&(r=1),e.operation(function(){var i=e.getCursor(),s=e.getSearchCursor(n,i);for(var o=0;o<r;o++){var u=s.find(t);o==0&&u&&Tt(s.from(),i)&&(u=s.find(t));if(!u){s=e.getSearchCursor(n,t?w(e.lastLine()):w(e.firstLine(),0));if(!s.find(t))return}}return s.from()})}function kn(e){e.removeOverlay(ln(e).getOverlay()),ln(e).setOverlay(null)}function Ln(e,t,n){return typeof e!="number"&&(e=e.line),t instanceof Array?V(e,t):n?e>=t&&e<=n:e==t}function An(e){var t=e.ace.renderer;return{top:t.getFirstFullyVisibleRow(),bottom:t.getLastFullyVisibleRow()}}function Pn(e,t,n,r,i,s,o,u,a){function c(){e.operation(function(){while(!f)h(),p();d()})}function h(){var t=e.getRange(s.from(),s.to()),n=t.replace(o,u);s.replace(n)}function p(){var t;while(t=s.findNext()&&Ln(s.from(),r,i)){if(!n&&l&&s.from().line==l.line)continue;e.scrollIntoView(s.from(),30),e.setSelection(s.from(),s.to()),l=s.from(),f=!1;return}f=!0}function d(t){t&&t(),e.focus();if(l){e.setCursor(l);var n=e.state.vim;n.exMode=!1,n.lastHPos=n.lastHSPos=l.ch}a&&a()}function m(t,n,r){v.e_stop(t);var i=v.keyName(t);switch(i){case"Y":h(),p();break;case"N":p();break;case"A":var s=a;a=undefined,e.operation(c),a=s;break;case"L":h();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":d(r)}return f&&d(r),!0}e.state.vim.exMode=!0;var f=!1,l=s.from();p();if(f){yn(e,"No matches for "+o.source);return}if(!t){c(),a&&a();return}En(e,{prefix:"replace with <strong>"+u+"</strong> (y/n/a/q/l)",onKeyDown:m})}function Hn(e){var t=e.state.vim,n=tt.macroModeState,r=tt.registerController.getRegister("."),i=n.isPlaying,s=n.lastInsertModeChanges,o=[];if(!i){var u=s.inVisualBlock?t.lastSelection.visualBlock.height:1,a=s.changes,o=[],f=0;while(f<a.length)o.push(a[f]),a[f]instanceof Wn?f++:f+=u;s.changes=o,e.off("change",qn),v.off(e.getInputField(),"keydown",Xn)}!i&&t.insertModeRepeat>1&&(Vn(e,t,t.insertModeRepeat-1,!0),t.lastEditInputState.repeatOverride=t.insertModeRepeat),delete t.insertModeRepeat,t.insertMode=!1,e.setCursor(e.getCursor().line,e.getCursor().ch-1),e.setOption("keyMap","vim"),e.setOption("disableInput",!0),e.toggleOverwrite(!1),r.setText(s.changes.join("")),v.signal(e,"vim-mode-change",{mode:"normal"}),n.isRecording&&Fn(n)}function Bn(e,t,n,r){var i=tt.registerController.getRegister(r),s=i.keyBuffer,o=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var u=0;u<s.length;u++){var a=s[u],f,l;while(a){f=/<\w+-.+?>|<\w+>|./.exec(a),l=f[0],a=a.substring(f.index+l.length),v.Vim.handleKey(e,l,"macro");if(t.insertMode){var c=i.insertModeChanges[o++].changes;tt.macroModeState.lastInsertModeChanges.changes=c,$n(e,c,1),Hn(e)}}}n.isPlaying=!1}function jn(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=tt.registerController.getRegister(n);r&&r.pushText(t)}function Fn(e){if(e.isPlaying)return;var t=e.latestRegister,n=tt.registerController.getRegister(t);n&&n.pushInsertModeChanges(e.lastInsertModeChanges)}function In(e,t){if(e.isPlaying)return;var n=e.latestRegister,r=tt.registerController.getRegister(n);r&&r.pushSearchQuery(t)}function qn(e,t){var n=tt.macroModeState,r=n.lastInsertModeChanges;if(!n.isPlaying)while(t){r.expectCursorActivityForChange=!0;if(t.origin=="+input"||t.origin=="paste"||t.origin===undefined){var i=t.text.join("\n");r.changes.push(i)}t=t.next}}function Rn(e){var t=e.state.vim;if(t.insertMode){var n=tt.macroModeState;if(n.isPlaying)return;var r=n.lastInsertModeChanges;r.expectCursorActivityForChange?r.expectCursorActivityForChange=!1:r.changes=[]}else e.curOp.isVimOp||zn(e,t);t.visualMode&&Un(e)}function Un(e){var t=e.state.vim,n=xt(t.sel.head),r=gt(n,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(n,r,{className:"cm-animate-fat-cursor"})}function zn(e,t){var n=e.getCursor("anchor"),r=e.getCursor("head");t.visualMode&&Tt(r,n)&&At(e,r.line)>r.ch?zt(e,!1):!t.visualMode&&!t.insertMode&&e.somethingSelected()&&(t.visualMode=!0,t.visualLine=!1,v.signal(e,"vim-mode-change",{mode:"visual"}));if(t.visualMode){var i=Nt(r,n)?0:-1,s=Nt(r,n)?-1:0;r=gt(r,0,i),n=gt(n,0,s),t.sel={anchor:n,head:r},rn(e,t,"<",Ct(r,n)),rn(e,t,">",kt(r,n))}else t.insertMode||(t.lastHPos=e.getCursor().ch)}function Wn(e){this.keyName=e}function Xn(e){function i(){return n.changes.push(new Wn(r)),!0}var t=tt.macroModeState,n=t.lastInsertModeChanges,r=v.keyName(e);(r.indexOf("Delete")!=-1||r.indexOf("Backspace")!=-1)&&v.lookupKey(r,"vim-insert",i)}function Vn(e,t,n,r){function u(){s?lt.processAction(e,t,t.lastEditActionCommand):lt.evalInput(e,t)}function a(n){if(i.lastInsertModeChanges.changes.length>0){n=t.lastEditActionCommand?n:1;var r=i.lastInsertModeChanges;$n(e,r.changes,n)}}var i=tt.macroModeState;i.isPlaying=!0;var s=!!t.lastEditActionCommand,o=t.inputState;t.inputState=t.lastEditInputState;if(s&&t.lastEditActionCommand.interlaceInsertRepeat)for(var f=0;f<n;f++)u(),a(1);else r||u(),a(n);t.inputState=o,t.insertMode&&!r&&Hn(e),i.isPlaying=!1}function $n(e,t,n){function r(t){return typeof t=="string"?v.commands[t](e):t(e),!0}var i=e.getCursor("head"),s=tt.macroModeState.lastInsertModeChanges.inVisualBlock;if(s){var o=e.state.vim,u=o.lastSelection,a=yt(u.anchor,u.head);Ht(e,i,a.line+1),n=e.listSelections().length,e.setCursor(i)}for(var f=0;f<n;f++){s&&e.setCursor(gt(i,f,0));for(var l=0;l<t.length;l++){var c=t[l];if(c instanceof Wn)v.lookupKey(c.keyName,"vim-insert",r);else{var h=e.getCursor();e.replaceRange(c,h,h)}}}s&&e.setCursor(gt(i,0,1))}function Kn(e,t,n){t.length>1&&t[0]=="n"&&(t=t.replace("numpad","")),t=Jn[t]||t;var r="";return n.ctrlKey&&(r+="C-"),n.altKey&&(r+="A-"),n.shiftKey&&(r+="S-"),r+=t,r.length>1&&(r="<"+r+">"),r}function Gn(e){var t=new e.constructor;return Object.keys(e).forEach(function(n){var r=e[n];Array.isArray(r)?r=r.slice():r&&typeof r=="object"&&r.constructor!=Object&&(r=Gn(r)),t[n]=r}),e.sel&&(t.sel={head:e.sel.head&&xt(e.sel.head),anchor:e.sel.anchor&&xt(e.sel.anchor)}),t}function Yn(e,t,n){var r=!1,i=E.maybeInitVimState_(e),s=i.visualBlock||i.wasInVisualBlock;i.wasInVisualBlock&&!e.ace.inMultiSelectMode?i.wasInVisualBlock=!1:e.ace.inMultiSelectMode&&i.visualBlock&&(i.wasInVisualBlock=!0);if(t=="<Esc>"&&!i.insertMode&&!i.visualMode&&e.ace.inMultiSelectMode)e.ace.exitMultiSelectMode();else if(s||!e.ace.inMultiSelectMode||e.ace.inVirtualSelectionMode)r=E.handleKey(e,t,n);else{var o=Gn(i);e.operation(function(){e.ace.forEachSelection(function(){var i=e.ace.selection;e.state.vim.lastHPos=i.$desiredColumn==null?i.lead.column:i.$desiredColumn;var s=e.getCursor("head"),u=e.getCursor("anchor"),a=Nt(s,u)?0:-1,f=Nt(s,u)?-1:0;s=gt(s,0,a),u=gt(u,0,f),e.state.vim.sel.head=s,e.state.vim.sel.anchor=u,r=Qn(e,t,n),i.$desiredColumn=e.state.vim.lastHPos==-1?null:e.state.vim.lastHPos,e.virtualSelectionMode()&&(e.state.vim=Gn(o))}),e.curOp.cursorActivity&&!r&&(e.curOp.cursorActivity=!1)},!0)}return r}function tr(e,t){t.off("beforeEndOperation",tr);var n=t.state.cm.vimCmd;n&&t.execCommand(n.exec?n:n.name,n.args),t.curOp=t.prevOp}var i=e("../range").Range,s=e("../lib/event_emitter").EventEmitter,o=e("../lib/dom"),u=e("../lib/oop"),a=e("../lib/keys"),f=e("../lib/event"),l=e("../search").Search,c=e("../lib/useragent"),h=e("../search_highlight").SearchHighlight,p=e("../commands/multi_select_commands"),d=e("../mode/text").Mode.prototype.tokenRe;e("../multi_select");var v=function(e){this.ace=e,this.state={},this.marks={},this.$uid=0,this.onChange=this.onChange.bind(this),this.onSelectionChange=this.onSelectionChange.bind(this),this.onBeforeEndOperation=this.onBeforeEndOperation.bind(this),this.ace.on("change",this.onChange),this.ace.on("changeSelection",this.onSelectionChange),this.ace.on("beforeEndOperation",this.onBeforeEndOperation)};v.Pos=function(e,t){if(!(this instanceof w))return new w(e,t);this.line=e,this.ch=t},v.defineOption=function(e,t,n){},v.commands={redo:function(e){e.ace.redo()},undo:function(e){e.ace.undo()},newlineAndIndent:function(e){e.ace.insert("\n")}},v.keyMap={},v.addClass=v.rmClass=v.e_stop=function(){},v.keyName=function(e){if(e.key)return e.key;var t=a[e.keyCode]||"";return t.length==1&&(t=t.toUpperCase()),t=f.getModifierString(e).replace(/(^|-)\w/g,function(e){return e.toUpperCase()})+t,t},v.keyMap["default"]=function(e){return function(t){var n=t.ace.commands.commandKeyBinding[e.toLowerCase()];return n&&t.ace.execCommand(n)!==!1}},v.lookupKey=function nr(e,t,n){typeof t=="string"&&(t=v.keyMap[t]);var r=typeof t=="function"?t(e):t[e];if(r===!1)return"nothing";if(r==="...")return"multi";if(r!=null&&n(r))return"handled";if(t.fallthrough){if(!Array.isArray(t.fallthrough))return nr(e,t.fallthrough,n);for(var i=0;i<t.fallthrough.length;i++){var s=nr(e,t.fallthrough[i],n);if(s)return s}}},v.signal=function(e,t,n){return e._signal(t,n)},v.on=f.addListener,v.off=f.removeListener,v.isWordChar=function(e){return d.lastIndex=0,d.test(e)},function(){u.implement(v.prototype,s),this.destroy=function(){this.ace.off("change",this.onChange),this.ace.off("changeSelection",this.onSelectionChange),this.ace.off("beforeEndOperation",this.onBeforeEndOperation),this.removeOverlay()},this.virtualSelectionMode=function(){return this.ace.inVirtualSelectionMode&&this.ace.selection.index},this.onChange=function(e){var t=e.data;e={start:t.range.start,end:t.range.end,action:t.action,lines:t.lines||[t.text]};if(e.action[0]=="i"){var n={text:e.lines},r=this.curOp=this.curOp||{};r.changeHandlers||(r.changeHandlers=this._eventRegistry.change&&this._eventRegistry.change.slice());if(this.virtualSelectionMode())return;r.lastChange?r.lastChange.next=r.lastChange=n:r.lastChange=r.change=n}this.$updateMarkers(e)},this.onSelectionChange=function(){var e=this.curOp=this.curOp||{};e.cursorActivityHandlers||(e.cursorActivityHandlers=this._eventRegistry.cursorActivity&&this._eventRegistry.cursorActivity.slice()),this.curOp.cursorActivity=!0,this.ace.inMultiSelectMode&&this.ace.keyBinding.removeKeyboardHandler(p.keyboardHandler)},this.operation=function(e,t){if(!t&&this.curOp||t&&this.curOp&&this.curOp.force)return e();(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation();if(!this.ace.curOp){var n=this.ace.prevOp;this.ace.startOperation({command:{name:"vim",scrollIntoView:"cursor"}})}var r=this.curOp=this.curOp||{};this.curOp.force=t;var i=e();return this.ace.curOp&&this.ace.curOp.command.name=="vim"&&(this.ace.endOperation(),!r.cursorActivity&&!r.lastChange&&n&&(this.ace.prevOp=n)),(t||!this.ace.curOp)&&this.curOp&&this.onBeforeEndOperation(),i},this.onBeforeEndOperation=function(){var e=this.curOp;e&&(e.change&&this.signal("change",e.change,e),e&&e.cursorActivity&&this.signal("cursorActivity",null,e),this.curOp=null)},this.signal=function(e,t,n){var r=n?n[e+"Handlers"]:(this._eventRegistry||{})[e];if(!r)return;r=r.slice();for(var i=0;i<r.length;i++)r[i](this,t)},this.firstLine=function(){return 0},this.lastLine=function(){return this.ace.session.getLength()-1},this.lineCount=function(){return this.ace.session.getLength()},this.setCursor=function(e,t){typeof e=="object"&&(t=e.ch,e=e.line),this.ace.inVirtualSelectionMode||this.ace.exitMultiSelectMode(),this.ace.selection.moveTo(e,t)},this.getCursor=function(e){var t=this.ace.selection,n=e=="anchor"?t.isEmpty()?t.lead:t.anchor:e=="head"||!e?t.lead:t.getRange()[e];return g(n)},this.listSelections=function(e){var t=this.ace.multiSelect.rangeList.ranges;return!t.length||this.ace.inVirtualSelectionMode?[{anchor:this.getCursor("anchor"),head:this.getCursor("head")}]:t.map(function(e){return{anchor:this.clipPos(g(e.cursor==e.end?e.start:e.end)),head:this.clipPos(g(e.cursor))}},this)},this.setSelections=function(e,t){var n=this.ace.multiSelect,r=e.map(function(e){var t=m(e.anchor),n=m(e.head),r=i.comparePoints(t,n)<0?new i.fromPoints(t,n):new i.fromPoints(n,t);return r.cursor=i.comparePoints(r.start,n)?r.end:r.start,r});if(this.ace.inVirtualSelectionMode){this.ace.selection.fromOrientedRange(r[0]);return}t?r[t]&&r.push(r.splice(t,1)[0]):r=r.reverse(),n.toSingleRange(r[0].clone());var s=this.ace.session;for(var o=0;o<r.length;o++){var u=s.$clipRangeToDocument(r[o]);n.addRange(u)}},this.setSelection=function(e,t,n){var r=this.ace.selection;r.moveTo(e.line,e.ch),r.selectTo(t.line,t.ch),n&&n.origin=="*mouse"&&this.onBeforeEndOperation()},this.somethingSelected=function(e){return!this.ace.selection.isEmpty()},this.clipPos=function(e){var t=this.ace.session.$clipPositionToDocument(e.line,e.ch);return g(t)},this.markText=function(e){return{clear:function(){},find:function(){}}},this.$updateMarkers=function(e){var t=e.action=="insert",n=e.start,r=e.end,s=(r.row-n.row)*(t?1:-1),o=(r.column-n.column)*(t?1:-1);t&&(r=n);for(var u in this.marks){var a=this.marks[u],f=i.comparePoints(a,n);if(f<0)continue;if(f===0&&t){if(a.bias!=1){a.bias==-1;continue}f=1}var l=t?f:i.comparePoints(a,r);if(l>0){a.row+=s,a.column+=a.row==r.row?o:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}};var e=function(e,t,n,r){this.cm=e,this.id=t,this.row=n,this.column=r,e.marks[this.id]=this};e.prototype.clear=function(){delete this.cm.marks[this.id]},e.prototype.find=function(){return g(this)},this.setBookmark=function(t,n){var r=new e(this,this.$uid++,t.line,t.ch);if(!n||!n.insertLeft)r.$insertRight=!0;return this.marks[r.id]=r,r},this.moveH=function(e,t){if(t=="char"){var n=this.ace.selection;n.clearSelection(),n.moveCursorBy(0,e)}},this.findPosV=function(e,t,n,r){if(n=="page"){var i=this.ace.renderer,s=i.layerConfig;t*=Math.floor(s.height/s.lineHeight),n="line"}if(n=="line"){var o=this.ace.session.documentToScreenPosition(e.line,e.ch);r!=null&&(o.column=r),o.row+=t,o.row=Math.min(Math.max(0,o.row),this.ace.session.getScreenLength()-1);var u=this.ace.session.screenToDocumentPosition(o.row,o.column);return g(u)}debugger},this.charCoords=function(e,t){if(t=="div"||!t){var n=this.ace.session.documentToScreenPosition(e.line,e.ch);return{left:n.column,top:n.row}}if(t=="local"){var r=this.ace.renderer,n=this.ace.session.documentToScreenPosition(e.line,e.ch),i=r.layerConfig.lineHeight,s=r.layerConfig.characterWidth,o=i*n.row;return{left:n.column*s,top:o,bottom:o+i}}},this.coordsChar=function(e,t){var n=this.ace.renderer;if(t=="local"){var r=Math.max(0,Math.floor(e.top/n.lineHeight)),i=Math.max(0,Math.floor(e.left/n.characterWidth)),s=n.session.screenToDocumentPosition(r,i);return g(s)}if(t=="div")throw"not implemented"},this.getSearchCursor=function(e,t,n){var r=!1,i=!1;e instanceof RegExp&&!e.global&&(r=!e.ignoreCase,e=e.source,i=!0);var s=new l;t.ch==undefined&&(t.ch=Number.MAX_VALUE);var o={row:t.line,column:t.ch},u=this,a=null;return{findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(t){s.setOptions({needle:e,caseSensitive:r,wrap:!1,backwards:t,regExp:i,start:a||o});var n=s.find(u.ace.session);return n&&n.isEmpty()&&u.getLine(n.start.row).length==n.start.column&&(s.$options.start=n,n=s.find(u.ace.session)),a=n,a},from:function(){return a&&g(a.start)},to:function(){return a&&g(a.end)},replace:function(e){a&&(a.end=u.ace.session.doc.replace(a,e))}}},this.scrollTo=function(e,t){var n=this.ace.renderer,r=n.layerConfig,i=r.maxHeight;i-=(n.$size.scrollerHeight-n.lineHeight)*n.$scrollPastEnd,t!=null&&this.ace.session.setScrollTop(Math.max(0,Math.min(t,i))),e!=null&&this.ace.session.setScrollLeft(Math.max(0,Math.min(e,r.width)))},this.scrollInfo=function(){return 0},this.scrollIntoView=function(e,t){e&&this.ace.renderer.scrollCursorIntoView(m(e),null,t)},this.getLine=function(e){return this.ace.session.getLine(e)},this.getRange=function(e,t){return this.ace.session.getTextRange(new i(e.line,e.ch,t.line,t.ch))},this.replaceRange=function(e,t,n){return n||(n=t),this.ace.session.replace(new i(t.line,t.ch,n.line,n.ch),e)},this.replaceSelections=function(e){var t=this.ace.selection;if(this.ace.inVirtualSelectionMode){this.ace.session.replace(t.getRange(),e[0]||"");return}t.inVirtualSelectionMode=!0;var n=t.rangeList.ranges;n.length||(n=[this.ace.multiSelect.getRange()]);for(var r=n.length;r--;)this.ace.session.replace(n[r],e[r]||"");t.inVirtualSelectionMode=!1},this.getSelection=function(){return this.ace.getSelectedText()},this.getSelections=function(){return this.listSelections().map(function(e){return this.getRange(e.anchor,e.head)},this)},this.getInputField=function(){return this.ace.textInput.getElement()},this.getWrapperElement=function(){return this.ace.containter};var t={indentWithTabs:"useSoftTabs",indentUnit:"tabSize",firstLineNumber:"firstLineNumber"};this.setOption=function(e,n){this.state[e]=n;switch(e){case"indentWithTabs":e=t[e],n=!n;break;default:e=t[e]}e&&this.ace.setOption(e,n)},this.getOption=function(e,n){var r=t[e];r&&(n=this.ace.getOption(r));switch(e){case"indentWithTabs":return e=t[e],!n}return r?n:this.state[e]},this.toggleOverwrite=function(e){return this.state.overwrite=e,this.ace.setOverwrite(e)},this.addOverlay=function(e){if(!this.$searchHighlight||!this.$searchHighlight.session){var t=new h(null,"ace_highlight-marker","text"),n=this.ace.session.addDynamicMarker(t);t.id=n.id,t.session=this.ace.session,t.destroy=function(e){t.session.off("change",t.updateOnChange),t.session.off("changeEditor",t.destroy),t.session.removeMarker(t.id),t.session=null},t.updateOnChange=function(e){e=e.data.range;var n=e.start.row;n==e.end.row?t.cache[n]=undefined:t.cache.splice(n,t.cache.length)},t.session.on("changeEditor",t.destroy),t.session.on("change",t.updateOnChange)}var r=new RegExp(e.query.source,"gmi");this.$searchHighlight=e.highlight=t,this.$searchHighlight.setRegexp(r),this.ace.renderer.updateBackMarkers()},this.removeOverlay=function(e){this.$searchHighlight&&this.$searchHighlight.session&&this.$searchHighlight.destroy()},this.getScrollInfo=function(){var e=this.ace.renderer,t=e.layerConfig;return{left:e.scrollLeft,top:e.scrollTop,height:t.maxHeight,width:t.width,clientHeight:t.height,clientWidth:t.width}},this.getValue=function(){return this.ace.getValue()},this.setValue=function(e){return this.ace.setValue(e)},this.getTokenTypeAt=function(e){var t=this.ace.session.getTokenAt(e.line,e.ch);return t&&/comment|string/.test(t.type)?"string":""},this.findMatchingBracket=function(e){var t=this.ace.session.findMatchingBracket(m(e));return{to:t&&g(t)}},this.indentLine=function(e,t){t===!0?this.ace.session.indentRows(e,e,"	"):t===!1&&this.ace.session.outdentRows(new i(e,0,e,0))},this.indexFromPos=function(e){return this.ace.session.doc.positionToIndex(m(e))},this.posFromIndex=function(e){return g(this.ace.session.doc.indexToPosition(e))},this.focus=function(e){return this.ace.focus()},this.blur=function(e){return this.ace.blur()},this.defaultTextHeight=function(e){return this.ace.renderer.layerConfig.lineHeight},this.scanForBracket=function(e,t,n,r){var i=r.bracketRegex.source;if(t==1)var s=this.ace.session.$findClosingBracket(i.slice(1,2),m(e),/paren|text/);else var s=this.ace.session.$findOpeningBracket(i.slice(-2,-1),{row:e.line,column:e.ch+1},/paren|text/);return s&&{pos:g(s)}},this.refresh=function(){return this.ace.resize(!0)}}.call(v.prototype);var y=v.StringStream=function(e,t){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0};y.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var t=this.string.charAt(this.pos);if(typeof e=="string")var n=t==e;else var n=t&&(e.test?e.test(t):e(t));if(n)return++this.pos,t},eatWhile:function(e){var t=this.pos;while(this.eat(e));return this.pos>t},eatSpace:function(){var e=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},backUp:function(e){this.pos-=e},column:function(){throw"not implemented"},indentation:function(){throw"not implemented"},match:function(e,t,n){if(typeof e!="string"){var s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}var r=function(e){return n?e.toLowerCase():e},i=this.string.substr(this.pos,e.length);if(r(i)==r(e))return t!==!1&&(this.pos+=e.length),!0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}},v.defineExtension=function(e,t){v.prototype[e]=t},o.importCssString(".normal-mode .ace_cursor{  border: 0!important;  background-color: red;  opacity: 0.5;}.ace_dialog {  position: absolute;  left: 0; right: 0;  background: white;  z-index: 15;  padding: .1em .8em;  overflow: hidden;  color: #333;}.ace_dialog-top {  border-bottom: 1px solid #eee;  top: 0;}.ace_dialog-bottom {  border-top: 1px solid #eee;  bottom: 0;}.ace_dialog input {  border: none;  outline: none;  background: transparent;  width: 20em;  color: inherit;  font-family: monospace;}","vimMode"),function(){function e(e,t,n){var r=e.ace.container,i;return i=r.appendChild(document.createElement("div")),n?i.className="ace_dialog ace_dialog-bottom":i.className="ace_dialog ace_dialog-top",typeof t=="string"?i.innerHTML=t:i.appendChild(t),i}function t(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}v.defineExtension("openDialog",function(n,r,i){function a(e){if(typeof e=="string")f.value=e;else{if(o)return;o=!0,s.parentNode.removeChild(s),u.focus(),i.onClose&&i.onClose(s)}}if(this.virtualSelectionMode())return;i||(i={}),t(this,null);var s=e(this,n,i.bottom),o=!1,u=this,f=s.getElementsByTagName("input")[0],l;if(f)i.value&&(f.value=i.value,f.select()),i.onInput&&v.on(f,"input",function(e){i.onInput(e,f.value,a)}),i.onKeyUp&&v.on(f,"keyup",function(e){i.onKeyUp(e,f.value,a)}),v.on(f,"keydown",function(e){if(i&&i.onKeyDown&&i.onKeyDown(e,f.value,a))return;if(e.keyCode==27||i.closeOnEnter!==!1&&e.keyCode==13)f.blur(),v.e_stop(e),a();e.keyCode==13&&r(f.value)}),i.closeOnBlur!==!1&&v.on(f,"blur",a),f.focus();else if(l=s.getElementsByTagName("button")[0])v.on(l,"click",function(){a(),u.focus()}),i.closeOnBlur!==!1&&v.on(l,"blur",a),l.focus();return a}),v.defineExtension("openNotification",function(n,r){function a(){if(s)return;s=!0,clearTimeout(o),i.parentNode.removeChild(i)}if(this.virtualSelectionMode())return;t(this,a);var i=e(this,n,r&&r.bottom),s=!1,o,u=r&&typeof r.duration!="undefined"?r.duration:5e3;return v.on(i,"click",function(e){v.e_preventDefault(e),a()}),u&&(o=setTimeout(a,u)),a})}();var b=[{keys:"<Left>",type:"keyToKey",toKeys:"h"},{keys:"<Right>",type:"keyToKey",toKeys:"l"},{keys:"<Up>",type:"keyToKey",toKeys:"k"},{keys:"<Down>",type:"keyToKey",toKeys:"j"},{keys:"<Space>",type:"keyToKey",toKeys:"l"},{keys:"<BS>",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"<C-Space>",type:"keyToKey",toKeys:"W"},{keys:"<C-BS>",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"<S-Space>",type:"keyToKey",toKeys:"w"},{keys:"<S-BS>",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"<C-n>",type:"keyToKey",toKeys:"j"},{keys:"<C-p>",type:"keyToKey",toKeys:"k"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>"},{keys:"<C-[>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"<C-c>",type:"keyToKey",toKeys:"<Esc>",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"xi",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"dcc",context:"visual"},{keys:"<Home>",type:"keyToKey",toKeys:"0"},{keys:"<End>",type:"keyToKey",toKeys:"$"},{keys:"<PageUp>",type:"keyToKey",toKeys:"<C-b>"},{keys:"<PageDown>",type:"keyToKey",toKeys:"<C-f>"},{keys:"<CR>",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"<C-f>",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"<C-b>",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"<C-d>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"<C-u>",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F<character>",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T<character>",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`<character>",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[<character>",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"<C-w>",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"<C-i>",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"<C-o>",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"<C-e>",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"<C-y>",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"<C-v>",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r<character>",type:"action",action:"replace",isEdit:!0},{keys:"@<character>",type:"action",action:"replayMacro"},{keys:"q<character>",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"<C-r>",type:"action",action:"redo"},{keys:"m<character>",type:"action",action:"setMark"},{keys:'"<character>',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z<CR>",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"<C-a>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"<C-x>",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a<character>",type:"motion",motion:"textObjectManipulation"},{keys:"i<character>",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],w=v.Pos,E=function(){return it};v.defineOption("vimMode",!1,function(e,t,n){t&&e.getOption("keyMap")!="vim"?e.setOption("keyMap","vim"):!t&&n!=v.Init&&/^vim/.test(e.getOption("keyMap"))&&e.setOption("keyMap","default")});var k={Shift:"S",Ctrl:"C",Alt:"A",Cmd:"D",Mod:"A"},L={Enter:"CR",Backspace:"BS",Delete:"Del"},M=/[\d]/,_=[{test:v.isWordChar},{test:function(e){return!v.isWordChar(e)&&!/\s/.test(e)}}],D=[/\S/],H=P(65,26),B=P(97,26),j=P(48,10),F=[].concat(H,B,j,["<",">"]),I=[].concat(H,B,j,["-",'"',".",":","/"]),$={},G=function(){function s(s,o,u){function l(n){var r=++t%e,o=i[r];o&&o.clear(),i[r]=s.setBookmark(n)}var a=t%e,f=i[a];if(f){var c=f.find();c&&!Tt(c,o)&&l(o)}else l(o);l(u),n=t,r=t-e+1,r<0&&(r=0)}function o(s,o){t+=o,t>n?t=n:t<r&&(t=r);var u=i[(e+t)%e];if(u&&!u.find()){var a=o>0?1:-1,f,l=s.getCursor();do{t+=a,u=i[(e+t)%e];if(u&&(f=u.find())&&!Tt(l,f))break}while(t<n&&t>r)}return u}var e=100,t=-1,n=0,r=0,i=new Array(e);return{cachedCursor:undefined,add:s,move:o}},Y=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};Z.prototype={exitMacroRecordMode:function(){var e=tt.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=undefined,e.isRecording=!1},enterMacroRecordMode:function(e,t){var n=tt.registerController.getRegister(t);n&&(n.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}};var tt,rt,it={buildKeyMap:function(){},getRegisterController:function(){return tt.registerController},resetVimGlobalState_:nt,getVimGlobalState_:function(){return tt},maybeInitVimState_:et,InsertModeKey:Wn,map:function(e,t,n){Dn.map(e,t,n)},unmap:function(e,t){Dn.unmap(e,t)},setOption:K,getOption:Q,defineOption:J,defineEx:function(e,t,n){if(e.indexOf(t)!==0)throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered');_n[e]=n,Dn.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,n){var r=this.findKey(e,t,n);if(typeof r=="function")return r()},findKey:function(e,t,n){function i(){var r=tt.macroModeState;if(r.isRecording){if(t=="q")return r.exitMacroRecordMode(),ot(e),!0;n!="mapping"&&jn(r,t)}}function s(){if(t=="<Esc>")return ot(e),r.visualMode?zt(e):r.insertMode&&Hn(e),!0}function o(n){var r;while(n)r=/<\w+-.+?>|<\w+>|./.exec(n),t=r[0],n=n.substring(r.index+t.length),v.Vim.handleKey(e,t,"mapping")}function u(){if(s())return!0;var n=r.inputState.keyBuffer=r.inputState.keyBuffer+t,i=t.length==1,o=lt.matchCommand(n,b,r.inputState,"insert");while(n.length>1&&o.type!="full"){var n=r.inputState.keyBuffer=n.slice(1),u=lt.matchCommand(n,b,r.inputState,"insert");u.type!="none"&&(o=u)}if(o.type=="none")return ot(e),!1;if(o.type=="partial")return rt&&window.clearTimeout(rt),rt=window.setTimeout(function(){r.insertMode&&r.inputState.keyBuffer&&ot(e)},Q("insertModeEscKeysTimeout")),!i;rt&&window.clearTimeout(rt);if(i){var a=e.getCursor();e.replaceRange("",gt(a,0,-(n.length-1)),a,"+input")}return ot(e),o.command}function a(){if(i()||s())return!0;var n=r.inputState.keyBuffer=r.inputState.keyBuffer+t;if(/^[1-9]\d*$/.test(n))return!0;var o=/^(\d*)(.*)$/.exec(n);if(!o)return ot(e),!1;var u=r.visualMode?"visual":"normal",a=lt.matchCommand(o[2]||o[1],b,r.inputState,u);if(a.type=="none")return ot(e),!1;if(a.type=="partial")return!0;r.inputState.keyBuffer="";var o=/^(\d*)(.*)$/.exec(n);return o[1]&&o[1]!="0"&&r.inputState.pushRepeatDigit(o[1]),a.command}var r=et(e),f;return r.insertMode?f=u():f=a(),f===!1?undefined:f===!0?function(){}:function(){return e.operation(function(){e.curOp.isVimOp=!0;try{f.type=="keyToKey"?o(f.toKeys):lt.processCommand(e,r,f)}catch(t){throw e.state.vim=undefined,et(e),console.log(t),t}return!0})}},handleEx:function(e,t){Dn.processCommand(e,t)}};st.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},st.prototype.getRepeat=function(){var e=0;if(this.prefixRepeat.length>0||this.motionRepeat.length>0)e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10));return e},ut.prototype={setText:function(e,t,n){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!n},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(Y(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},at.prototype={pushText:function(e,t,n,r,i){r&&n.charAt(0)=="\n"&&(n=n.slice(1)+"\n"),r&&n.charAt(n.length-1)!=="\n"&&(n+="\n");var s=this.isValidRegister(e)?this.getRegister(e):null;if(!s){switch(t){case"yank":this.registers[0]=new ut(n,r,i);break;case"delete":case"change":n.indexOf("\n")==-1?this.registers["-"]=new ut(n,r):(this.shiftNumericRegisters_(),this.registers[1]=new ut(n,r))}this.unnamedRegister.setText(n,r,i);return}var o=W(e);o?s.pushText(n,r):s.setText(n,r,i),this.unnamedRegister.setText(s.toString(),r)},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new ut),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&V(e,I)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},ft.prototype={nextMatch:function(e,t){var n=this.historyBuffer,r=t?-1:1;this.initialPrefix===null&&(this.initialPrefix=e);for(var i=this.iterator+r;t?i>=0:i<n.length;i+=r){var s=n[i];for(var o=0;o<=s.length;o++)if(this.initialPrefix==s.substring(0,o))return this.iterator=i,s}if(i>=n.length)return this.iterator=n.length,this.initialPrefix;if(i<0)return e},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var lt={matchCommand:function(e,t,n,r){var i=bt(e,t,r,n);if(!i.full&&!i.partial)return{type:"none"};if(!i.full&&i.partial)return{type:"partial"};var s;for(var o=0;o<i.full.length;o++){var u=i.full[o];s||(s=u)}return s.keys.slice(-11)=="<character>"&&(n.selectedCharacter=Et(e)),{type:"full",command:s}},processCommand:function(e,t,n){t.inputState.repeatOverride=n.repeatOverride;switch(n.type){case"motion":this.processMotion(e,t,n);break;case"operator":this.processOperator(e,t,n);break;case"operatorMotion":this.processOperatorMotion(e,t,n);break;case"action":this.processAction(e,t,n);break;case"search":this.processSearch(e,t,n),ot(e);break;case"ex":case"keyToEx":this.processEx(e,t,n),ot(e);break;default:}},processMotion:function(e,t,n){t.inputState.motion=n.motion,t.inputState.motionArgs=mt(n.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,n){var r=t.inputState;if(r.operator){if(r.operator==n.operator){r.motion="expandToLine",r.motionArgs={linewise:!0},this.evalInput(e,t);return}ot(e)}r.operator=n.operator,r.operatorArgs=mt(n.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,n){var r=t.visualMode,i=mt(n.operatorMotionArgs);i&&r&&i.visualLine&&(t.visualLine=!0),this.processOperator(e,t,n),r||this.processMotion(e,t,n)},processAction:function(e,t,n){var r=t.inputState,i=r.getRepeat(),s=!!i,o=mt(n.actionArgs)||{};r.selectedCharacter&&(o.selectedCharacter=r.selectedCharacter),n.operator&&this.processOperator(e,t,n),n.motion&&this.processMotion(e,t,n),(n.motion||n.operator)&&this.evalInput(e,t),o.repeat=i||1,o.repeatIsExplicit=s,o.registerName=r.registerName,ot(e),t.lastMotion=null,n.isEdit&&this.recordLastEdit(t,r,n),dt[n.action](e,o,t)},processSearch:function(e,t,n){function a(r,i,s){tt.searchHistoryController.pushInput(r),tt.searchHistoryController.reset();try{xn(e,r,i,s)}catch(o){yn(e,"Invalid regex: "+r);return}lt.processMotion(e,t,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}function f(t){e.scrollTo(u.left,u.top),a(t,!0,!0);var n=tt.macroModeState;n.isRecording&&In(n,t)}function l(t,n,i){var s=v.keyName(t),o;s=="Up"||s=="Down"?(o=s=="Up"?!0:!1,n=tt.searchHistoryController.nextMatch(n,o)||"",i(n)):s!="Left"&&s!="Right"&&s!="Ctrl"&&s!="Alt"&&s!="Shift"&&tt.searchHistoryController.reset();var a;try{a=xn(e,n,!0,!0)}catch(t){}a?e.scrollIntoView(Cn(e,!r,a),30):(kn(e),e.scrollTo(u.left,u.top))}function c(t,n,r){var i=v.keyName(t);if(i=="Esc"||i=="Ctrl-C"||i=="Ctrl-[")tt.searchHistoryController.pushInput(n),tt.searchHistoryController.reset(),xn(e,o),kn(e),e.scrollTo(u.left,u.top),v.e_stop(t),r(),e.focus()}if(!e.getSearchCursor)return;var r=n.searchArgs.forward,i=n.searchArgs.wholeWordOnly;ln(e).setReversed(!r);var s=r?"/":"?",o=ln(e).getQuery(),u=e.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var h=tt.macroModeState;if(h.isPlaying){var p=h.replaySearchQueries.shift();a(p,!0,!1)}else En(e,{onClose:f,prefix:s,desc:wn,onKeyUp:l,onKeyDown:c});break;case"wordUnderCursor":var d=$t(e,!1,!0,!1,!0),m=!0;d||(d=$t(e,!1,!0,!1,!1),m=!1);if(!d)return;var p=e.getLine(d.start.line).substring(d.start.ch,d.end.ch);m&&i?p="\\b"+p+"\\b":p=_t(p),tt.jumpList.cachedCursor=e.getCursor(),e.setCursor(d.start),a(p,!0,!1)}},processEx:function(e,t,n){function r(t){tt.exCommandHistoryController.pushInput(t),tt.exCommandHistoryController.reset(),Dn.processCommand(e,t)}function i(t,n,r){var i=v.keyName(t),s;if(i=="Esc"||i=="Ctrl-C"||i=="Ctrl-[")tt.exCommandHistoryController.pushInput(n),tt.exCommandHistoryController.reset(),v.e_stop(t),r(),e.focus();i=="Up"||i=="Down"?(s=i=="Up"?!0:!1,n=tt.exCommandHistoryController.nextMatch(n,s)||"",r(n)):i!="Left"&&i!="Right"&&i!="Ctrl"&&i!="Alt"&&i!="Shift"&&tt.exCommandHistoryController.reset()}n.type=="keyToEx"?Dn.processCommand(e,n.exArgs.input):t.visualMode?En(e,{onClose:r,prefix:":",value:"'<,'>",onKeyDown:i}):En(e,{onClose:r,prefix:":",onKeyDown:i})},evalInput:function(e,t){var n=t.inputState,r=n.motion,i=n.motionArgs||{},s=n.operator,o=n.operatorArgs||{},u=n.registerName,a=t.sel,f=xt(t.visualMode?a.head:e.getCursor("head")),l=xt(t.visualMode?a.anchor:e.getCursor("anchor")),c=xt(f),h=xt(l),p,d,v;s&&this.recordLastEdit(t,n),n.repeatOverride!==undefined?v=n.repeatOverride:v=n.getRepeat();if(v>0&&i.explicitRepeat)i.repeatIsExplicit=!0;else if(i.noRepeat||!i.explicitRepeat&&v===0)v=1,i.repeatIsExplicit=!1;n.selectedCharacter&&(i.selectedCharacter=o.selectedCharacter=n.selectedCharacter),i.repeat=v,ot(e);if(r){var m=ct[r](e,f,i,t);t.lastMotion=ct[r];if(!m)return;if(i.toJumplist){var g=tt.jumpList,y=g.cachedCursor;y?(Jt(e,y,m),delete g.cachedCursor):Jt(e,f,m)}m instanceof Array?(d=m[0],p=m[1]):p=m,p||(p=xt(f));if(t.visualMode){if(!t.visualBlock||p.ch!==Infinity)p=vt(e,p,t.visualBlock);d&&(d=vt(e,d,!0)),d=d||h,a.anchor=d,a.head=p,qt(e),rn(e,t,"<",Nt(d,p)?d:p),rn(e,t,">",Nt(d,p)?p:d)}else s||(p=vt(e,p),e.setCursor(p.line,p.ch))}if(s){if(o.lastSel){d=h;var b=o.lastSel,E=Math.abs(b.head.line-b.anchor.line),S=Math.abs(b.head.ch-b.anchor.ch);b.visualLine?p=w(h.line+E,h.ch):b.visualBlock?p=w(h.line+E,h.ch+S):b.head.line==b.anchor.line?p=w(h.line,h.ch+S):p=w(h.line+E,h.ch),t.visualMode=!0,t.visualLine=b.visualLine,t.visualBlock=b.visualBlock,a=t.sel={anchor:d,head:p},qt(e)}else t.visualMode&&(o.lastSel={anchor:xt(a.anchor),head:xt(a.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var x,T,N,C,k;if(t.visualMode){x=Ct(a.head,a.anchor),T=kt(a.head,a.anchor),N=t.visualLine||o.linewise,C=t.visualBlock?"block":N?"line":"char",k=Rt(e,{anchor:x,head:T},C);if(N){var L=k.ranges;if(C=="block")for(var A=0;A<L.length;A++)L[A].head.ch=At(e,L[A].head.line);else C=="line"&&(L[0].head=w(L[0].head.line+1,0))}}else{x=xt(d||h),T=xt(p||c);if(Nt(T,x)){var O=x;x=T,T=O}N=i.linewise||o.linewise,N?Xt(e,x,T):i.forward&&Wt(e,x,T),C="char";var M=!i.inclusive||N;k=Rt(e,{anchor:x,head:T},C,M)}e.setSelections(k.ranges,k.primary),t.lastMotion=null,o.repeat=v,o.registerName=u,o.linewise=N;var _=pt[s](e,o,k.ranges,h,p);t.visualMode&&zt(e),_&&e.setCursor(_)}},recordLastEdit:function(e,t,n){var r=tt.macroModeState;if(r.isPlaying)return;e.lastEditInputState=t,e.lastEditActionCommand=n,r.lastInsertModeChanges.changes=[],r.lastInsertModeChanges.expectCursorActivityForChange=!1}},ct={moveToTopLine:function(e,t,n){var r=An(e).top+n.repeat-1;return w(r,Vt(e.getLine(r)))},moveToMiddleLine:function(e){var t=An(e),n=Math.floor((t.top+t.bottom)*.5);return w(n,Vt(e.getLine(n)))},moveToBottomLine:function(e,t,n){var r=An(e).bottom-n.repeat+1;return w(r,Vt(e.getLine(r)))},expandToLine:function(e,t,n){var r=t;return w(r.line+n.repeat-1,Infinity)},findNext:function(e,t,n){var r=ln(e),i=r.getQuery();if(!i)return;var s=!n.forward;return s=r.isReversed()?!s:s,Nn(e,i),Cn(e,s,i,n.repeat)},goToMark:function(e,t,n,r){var i=r.marks[n.selectedCharacter];if(i){var s=i.find();return n.linewise?{line:s.line,ch:Vt(e.getLine(s.line))}:s}return null},moveToOtherHighlightedEnd:function(e,t,n,r){if(r.visualBlock&&n.sameLine){var i=r.sel;return[vt(e,w(i.anchor.line,i.head.ch)),vt(e,w(i.head.line,i.anchor.ch))]}return[r.sel.head,r.sel.anchor]},jumpToMark:function(e,t,n,r){var i=t;for(var s=0;s<n.repeat;s++){var o=i;for(var u in r.marks){if(!R(u))continue;var a=r.marks[u].find(),f=n.forward?Nt(a,o):Nt(o,a);if(f)continue;if(n.linewise&&a.line==o.line)continue;var l=Tt(o,i),c=n.forward?Lt(o,a,i):Lt(i,a,o);if(l||c)i=a}}return n.linewise&&(i=w(i.line,Vt(e.getLine(i.line)))),i},moveByCharacters:function(e,t,n){var r=t,i=n.repeat,s=n.forward?r.ch+i:r.ch-i;return w(r.line,s)},moveByLines:function(e,t,n,r){var i=t,s=i.ch;switch(r.lastMotion){case this.moveByLines:case this.moveByDisplayLines:case this.moveByScroll:case this.moveToColumn:case this.moveToEol:s=r.lastHPos;break;default:r.lastHPos=s}var o=n.repeat+(n.repeatOffset||0),u=n.forward?i.line+o:i.line-o,a=e.firstLine(),f=e.lastLine();if(u<a&&i.line==a||u>f&&i.line==f)return;var l=e.ace.session.getFoldAt(u,s);return l&&(n.forward?u=l.end.row+1:u=l.start.row-1),n.toFirstChar&&(s=Vt(e.getLine(u)),r.lastHPos=s),r.lastHSPos=e.charCoords(w(u,s),"div").left,w(u,s)},moveByDisplayLines:function(e,t,n,r){var i=t;switch(r.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:r.lastHSPos=e.charCoords(i,"div").left}var s=n.repeat,o=e.findPosV(i,n.forward?s:-s,"line",r.lastHSPos);if(o.hitSide)if(n.forward)var u=e.charCoords(o,"div"),a={top:u.top+8,left:r.lastHSPos},o=e.coordsChar(a,"div");else{var f=e.charCoords(w(e.firstLine(),0),"div");f.left=r.lastHSPos,o=e.coordsChar(f,"div")}return r.lastHPos=o.ch,o},moveByPage:function(e,t,n){var r=t,i=n.repeat;return e.findPosV(r,n.forward?i:-i,"page")},moveByParagraph:function(e,t,n){var r=n.forward?1:-1;return on(e,t,n.repeat,r)},moveByScroll:function(e,t,n,r){var i=e.getScrollInfo(),s=null,o=n.repeat;o||(o=i.clientHeight/(2*e.defaultTextHeight()));var u=e.charCoords(t,"local");n.repeat=o;var s=ct.moveByDisplayLines(e,t,n,r);if(!s)return null;var a=e.charCoords(s,"local");return e.scrollTo(null,i.top+a.top-u.top),s},moveByWords:function(e,t,n){return en(e,t,n.repeat,!!n.forward,!!n.wordEnd,!!n.bigWord)},moveTillCharacter:function(e,t,n){var r=n.repeat,i=tn(e,r,n.forward,n.selectedCharacter),s=n.forward?-1:1;return Kt(s,n),i?(i.ch+=s,i):null},moveToCharacter:function(e,t,n){var r=n.repeat;return Kt(0,n),tn(e,r,n.forward,n.selectedCharacter)||t},moveToSymbol:function(e,t,n){var r=n.repeat;return Yt(e,r,n.forward,n.selectedCharacter)||t},moveToColumn:function(e,t,n,r){var i=n.repeat;return r.lastHPos=i-1,r.lastHSPos=e.charCoords(t,"div").left,nn(e,i)},moveToEol:function(e,t,n,r){var i=t;r.lastHPos=Infinity;var s=w(i.line+n.repeat-1,Infinity),o=e.clipPos(s);return o.ch--,r.lastHSPos=e.charCoords(o,"div").left,s},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return w(n.line,Vt(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){var n=t,r=n.line,i=n.ch,s=e.getLine(r),o;do{o=s.charAt(i++);if(o&&U(o)){var u=e.getTokenTypeAt(w(r,i));if(u!=="string"&&u!=="comment")break}}while(o);if(o){var a=e.findMatchingBracket(w(r,i));return a.to}return n},moveToStartOfLine:function(e,t){return w(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var r=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(r=n.repeat-e.getOption("firstLineNumber")),w(r,Vt(e.getLine(r)))},textObjectManipulation:function(e,t,n,r){var i={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},s={"'":!0,'"':!0},o=n.selectedCharacter;o=="b"?o="(":o=="B"&&(o="{");var u=!n.textObjectInner,a;if(i[o])a=un(e,t,o,u);else if(s[o])a=an(e,t,o,u);else if(o==="W")a=$t(e,u,!0,!0);else if(o==="w")a=$t(e,u,!0,!1);else{if(o!=="p")return null;a=on(e,t,n.repeat,0,u),n.linewise=!0;if(r.visualMode)r.visualLine||(r.visualLine=!0);else{var f=r.inputState.operatorArgs;f&&(f.linewise=!0),a.end.line--}}return e.state.vim.visualMode?It(e,a.start,a.end):[a.start,a.end]},repeatLastCharacterSearch:function(e,t,n){var r=tt.lastChararacterSearch,i=n.repeat,s=n.forward===r.forward,o=(r.increment?1:0)*(s?-1:1);e.moveH(-o,"char"),n.inclusive=s?!0:!1;var u=tn(e,i,s,r.selectedCharacter);return u?(u.ch+=o,u):(e.moveH(o,"char"),t)}},pt={change:function(e,t,n){var r,i,s=e.state.vim;tt.macroModeState.lastInsertModeChanges.inVisualBlock=s.visualBlock;if(!s.visualMode){var o=n[0].anchor,u=n[0].head;i=e.getRange(o,u);if(!X(i)){var a=/\s+$/.exec(i);a&&(u=gt(u,0,-a[0].length),i=i.slice(0,-a[0].length))}var f=u.line-1==e.lastLine();e.replaceRange("",o,u),t.linewise&&!f&&(v.commands.newlineAndIndent(e),o.ch=null),r=o}else{i=e.getSelection();var l=ht("",n.length);e.replaceSelections(l),r=Ct(n[0].head,n[0].anchor)}tt.registerController.pushText(t.registerName,"change",i,t.linewise,n.length>1),dt.enterInsertMode(e,{head:r},e.state.vim)},"delete":function(e,t,n){var r,i,s=e.state.vim;if(!s.visualBlock){var o=n[0].anchor,u=n[0].head;t.linewise&&u.line!=e.firstLine()&&o.line==e.lastLine()&&o.line==u.line-1&&(o.line==e.firstLine()?o.ch=0:o=w(o.line-1,At(e,o.line-1))),i=e.getRange(o,u),e.replaceRange("",o,u),r=o,t.linewise&&(r=ct.moveToFirstNonWhiteSpaceCharacter(e,o))}else{i=e.getSelection();var a=ht("",n.length);e.replaceSelections(a),r=n[0].anchor}return tt.registerController.pushText(t.registerName,"delete",i,t.linewise,s.visualBlock),r},indent:function(e,t,n){var r=e.state.vim,i=n[0].anchor.line,s=r.visualBlock?n[n.length-1].anchor.line:n[0].head.line,o=r.visualMode?t.repeat:1;t.linewise&&s--;for(var u=i;u<=s;u++)for(var a=0;a<o;a++)e.indentLine(u,t.indentRight);return ct.moveToFirstNonWhiteSpaceCharacter(e,n[0].anchor)},changeCase:function(e,t,n,r,i){var s=e.getSelections(),o=[],u=t.toLower;for(var a=0;a<s.length;a++){var f=s[a],l="";if(u===!0)l=f.toLowerCase();else if(u===!1)l=f.toUpperCase();else for(var c=0;c<f.length;c++){var h=f.charAt(c);l+=W(h)?h.toLowerCase():h.toUpperCase()}o.push(l)}return e.replaceSelections(o),t.shouldMoveCursor?i:!e.state.vim.visualMode&&t.linewise&&n[0].anchor.line+1==n[0].head.line?ct.moveToFirstNonWhiteSpaceCharacter(e,r):t.linewise?r:Ct(n[0].anchor,n[0].head)},yank:function(e,t,n,r){var i=e.state.vim,s=e.getSelection(),o=i.visualMode?Ct(i.sel.anchor,i.sel.head,n[0].head,n[0].anchor):r;return tt.registerController.pushText(t.registerName,"yank",s,t.linewise,i.visualBlock),o}},dt={jumpListWalk:function(e,t,n){if(n.visualMode)return;var r=t.repeat,i=t.forward,s=tt.jumpList,o=s.move(e,i?r:-r),u=o?o.find():undefined;u=u?u:e.getCursor(),e.setCursor(u)},scroll:function(e,t,n){if(n.visualMode)return;var r=t.repeat||1,i=e.defaultTextHeight(),s=e.getScrollInfo().top,o=i*r,u=t.forward?s+o:s-o,a=xt(e.getCursor()),f=e.charCoords(a,"local");if(t.forward)u>f.top?(a.line+=(u-f.top)/i,a.line=Math.ceil(a.line),e.setCursor(a),f=e.charCoords(a,"local"),e.scrollTo(null,f.top)):e.scrollTo(null,u);else{var l=u+e.getScrollInfo().clientHeight;l<f.bottom?(a.line-=(f.bottom-l)/i,a.line=Math.floor(a.line),e.setCursor(a),f=e.charCoords(a,"local"),e.scrollTo(null,f.bottom-e.getScrollInfo().clientHeight)):e.scrollTo(null,u)}},scrollToCursor:function(e,t){var n=e.getCursor().line,r=e.charCoords(w(n,0),"local"),i=e.getScrollInfo().clientHeight,s=r.top,o=r.bottom-s;switch(t.position){case"center":s=s-i/2+o;break;case"bottom":s=s-i+o*1.4;break;case"top":s+=o*.4}e.scrollTo(null,s)},replayMacro:function(e,t,n){var r=t.selectedCharacter,i=t.repeat,s=tt.macroModeState;r=="@"&&(r=s.latestRegister);while(i--)Bn(e,n,s,r)},enterMacroRecordMode:function(e,t){var n=tt.macroModeState,r=t.selectedCharacter;n.enterMacroRecordMode(e,r)},enterInsertMode:function(e,t,n){if(e.getOption("readOnly"))return;n.insertMode=!0,n.insertModeRepeat=t&&t.repeat||1;var r=t?t.insertAt:null,i=n.sel,s=t.head||e.getCursor("head"),o=e.listSelections().length;if(r=="eol")s=w(s.line,At(e,s.line));else if(r=="charAfter")s=gt(s,0,1);else if(r=="firstNonBlank")s=ct.moveToFirstNonWhiteSpaceCharacter(e,s);else if(r=="startOfSelectedArea")n.visualBlock?(s=w(Math.min(i.head.line,i.anchor.line),Math.min(i.head.ch,i.anchor.ch)),o=Math.abs(i.head.line-i.anchor.line)+1):i.head.line<i.anchor.line?s=i.head:s=w(i.anchor.line,0);else if(r=="endOfSelectedArea")n.visualBlock?(s=w(Math.min(i.head.line,i.anchor.line),Math.max(i.head.ch+1,i.anchor.ch)),o=Math.abs(i.head.line-i.anchor.line)+1):i.head.line>=i.anchor.line?s=gt(i.head,0,1):s=w(i.anchor.line,0);else if(r=="inplace"&&n.visualMode)return;e.setOption("keyMap","vim-insert"),e.setOption("disableInput",!1),t&&t.replace?(e.toggleOverwrite(!0),e.setOption("keyMap","vim-replace"),v.signal(e,"vim-mode-change",{mode:"replace"})):(e.setOption("keyMap","vim-insert"),v.signal(e,"vim-mode-change",{mode:"insert"})),tt.macroModeState.isPlaying||(e.on("change",qn),v.on(e.getInputField(),"keydown",Xn)),n.visualMode&&zt(e),Ht(e,s,o)},toggleVisualMode:function(e,t,n){var r=t.repeat,i=e.getCursor(),s;n.visualMode?n.visualLine^t.linewise||n.visualBlock^t.blockwise?(n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,v.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),qt(e)):zt(e):(n.visualMode=!0,n.visualLine=!!t.linewise,n.visualBlock=!!t.blockwise,s=vt(e,w(i.line,i.ch+r-1),!0),n.sel={anchor:i,head:s},v.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""}),qt(e),rn(e,n,"<",Ct(i,s)),rn(e,n,">",kt(i,s)))},reselectLastSelection:function(e,t,n){var r=n.lastSelection;n.visualMode&&Ft(e,n);if(r){var i=r.anchorMark.find(),s=r.headMark.find();if(!i||!s)return;n.sel={anchor:i,head:s},n.visualMode=!0,n.visualLine=r.visualLine,n.visualBlock=r.visualBlock,qt(e),rn(e,n,"<",Ct(i,s)),rn(e,n,">",kt(i,s)),v.signal(e,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var r,i;if(n.visualMode)r=e.getCursor("anchor"),i=e.getCursor("head"),i.ch=At(e,i.line)-1;else{var s=Math.max(t.repeat,2);r=e.getCursor(),i=vt(e,w(r.line+s-1,Infinity))}var o=0;for(var u=r.line;u<i.line;u++){o=At(e,r.line);var a=w(r.line+1,At(e,r.line+1)),f=e.getRange(r,a);f=f.replace(/\n\s*/g," "),e.replaceRange(f,r,a)}var l=w(r.line,o);e.setCursor(l),n.visualMode&&zt(e)},newLineAndEnterInsertMode:function(e,t,n){n.insertMode=!0;var r=xt(e.getCursor());if(r.line===e.firstLine()&&!t.after)e.replaceRange("\n",w(e.firstLine(),0)),e.setCursor(e.firstLine(),0);else{r.line=t.after?r.line:r.line-1,r.ch=At(e,r.line),e.setCursor(r);var i=v.commands.newlineAndIndentContinueComment||v.commands.newlineAndIndent;i(e)}this.enterInsertMode(e,{repeat:t.repeat},n)},paste:function(e,t,n){var r=xt(e.getCursor()),i=tt.registerController.getRegister(t.registerName),s=i.toString();if(!s)return;if(t.matchIndent){var o=e.getOption("tabSize"),u=function(e){var t=e.split("	").length-1,n=e.split(" ").length-1;return t*o+n*1},a=e.getLine(e.getCursor().line),f=u(a.match(/^\s*/)[0]),l=s.replace(/\n$/,""),c=s!==l,h=u(s.match(/^\s*/)[0]),s=l.replace(/^\s*/gm,function(t){var n=f+(u(t)-h);if(n<0)return"";if(e.getOption("indentWithTabs")){var r=Math.floor(n/o);return Array(r+1).join("	")}return Array(n+1).join(" ")});s+=c?"\n":""}if(t.repeat>1)var s=Array(t.repeat+1).join(s);var p=i.linewise,d=i.blockwise;if(p)n.visualMode?s=n.visualLine?s.slice(0,-1):"\n"+s.slice(0,s.length-1)+"\n":t.after?(s="\n"+s.slice(0,s.length-1),r.ch=At(e,r.line)):r.ch=0;else{if(d){s=s.split("\n");for(var v=0;v<s.length;v++)s[v]=s[v]==""?" ":s[v]}r.ch+=t.after?1:0}var m,g;if(n.visualMode){n.lastPastedText=s;var y,b=jt(e,n),E=b[0],S=b[1],x=e.getSelection(),T=e.listSelections(),N=(new Array(T.length)).join("1").split("1");n.lastSelection&&(y=n.lastSelection.headMark.find()),tt.registerController.unnamedRegister.setText(x),d?(e.replaceSelections(N),S=w(E.line+s.length-1,E.ch),e.setCursor(E),Pt(e,S),e.replaceSelections(s),m=E):n.visualBlock?(e.replaceSelections(N),e.setCursor(E),e.replaceRange(s,E,E),m=E):(e.replaceRange(s,E,S),m=e.posFromIndex(e.indexFromPos(E)+s.length-1)),y&&(n.lastSelection.headMark=e.setBookmark(y)),p&&(m.ch=0)}else if(d){e.setCursor(r);for(var v=0;v<s.length;v++){var C=r.line+v;C>e.lastLine()&&e.replaceRange("\n",w(C,0));var k=At(e,C);k<r.ch&&Dt(e,C,r.ch)}e.setCursor(r),Pt(e,w(r.line+s.length-1,r.ch)),e.replaceSelections(s),m=r}else e.replaceRange(s,r),p&&t.after?m=w(r.line+1,Vt(e.getLine(r.line+1))):p&&!t.after?m=w(r.line,Vt(e.getLine(r.line))):!p&&t.after?(g=e.indexFromPos(r),m=e.posFromIndex(g+s.length-1)):(g=e.indexFromPos(r),m=e.posFromIndex(g+s.length));n.visualMode&&zt(e),e.setCursor(m)},undo:function(e,t){e.operation(function(){St(e,v.commands.undo,t.repeat)(),e.setCursor(e.getCursor("anchor"))})},redo:function(e,t){St(e,v.commands.redo,t.repeat)()},setRegister:function(e,t,n){n.inputState.registerName=t.selectedCharacter},setMark:function(e,t,n){var r=t.selectedCharacter;rn(e,n,r,e.getCursor())},replace:function(e,t,n){var r=t.selectedCharacter,i=e.getCursor(),s,o,u=e.listSelections();if(n.visualMode)i=e.getCursor("start"),o=e.getCursor("end");else{var a=e.getLine(i.line);s=i.ch+t.repeat,s>a.length&&(s=a.length),o=w(i.line,s)}if(r=="\n")n.visualMode||e.replaceRange("",i,o),(v.commands.newlineAndIndentContinueComment||v.commands.newlineAndIndent)(e);else{var f=e.getRange(i,o);f=f.replace(/[^\n]/g,r);if(n.visualBlock){var l=(new Array(e.getOption("tabSize")+1)).join(" ");f=e.getSelection(),f=f.replace(/\t/g,l).replace(/[^\n]/g,r).split("\n"),e.replaceSelections(f)}else e.replaceRange(f,i,o);n.visualMode?(i=Nt(u[0].anchor,u[0].head)?u[0].anchor:u[0].head,e.setCursor(i),zt(e)):e.setCursor(gt(o,0,-1))}},incrementNumberToken:function(e,t){var n=e.getCursor(),r=e.getLine(n.line),i=/-?\d+/g,s,o,u,a,f;while((s=i.exec(r))!==null){f=s[0],o=s.index,u=o+f.length;if(n.ch<u)break}if(!t.backtrack&&u<=n.ch)return;if(!f)return;var l=t.increase?1:-1,c=parseInt(f)+l*t.repeat,h=w(n.line,o),p=w(n.line,u);a=c.toString(),e.replaceRange(a,h,p),e.setCursor(w(n.line,o+a.length-1))},repeatLastEdit:function(e,t,n){var r=n.lastEditInputState;if(!r)return;var i=t.repeat;i&&t.repeatIsExplicit?n.lastEditInputState.repeatOverride=i:i=n.lastEditInputState.repeatOverride||i,Vn(e,n,i,!1)},exitInsertMode:Hn},Qt={"(":"bracket",")":"bracket","{":"bracket","}":"bracket","[":"section","]":"section","*":"comment","/":"comment",m:"method",M:"method","#":"preprocess"},Gt={bracket:{isComplete:function(e){if(e.nextCh===e.symb){e.depth++;if(e.depth>=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return e.index===0&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t=e.lastCh==="*"&&e.nextCh==="/";return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb=e.symb==="m"?"{":"}",e.reverseSymb=e.symb==="{"?"}":"{"},isComplete:function(e){return e.nextCh===e.symb?!0:!1}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if(e.nextCh==="#"){var t=e.lineText.match(/#(\w+)/)[1];if(t==="endif"){if(e.forward&&e.depth===0)return!0;e.depth++}else if(t==="if"){if(!e.forward&&e.depth===0)return!0;e.depth--}if(t==="else"&&e.depth===0)return!0}return!1}}};J("pcre",!0,"boolean"),fn.prototype={getQuery:function(){return tt.query},setQuery:function(e){tt.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return tt.isReversed},setReversed:function(e){tt.isReversed=e}};var wn="(Javascript regexp)",On=[{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"set"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],Mn=function(){this.buildCommandMap_()};Mn.prototype={processCommand:function(e,t,n){var r=e.state.vim,i=tt.registerController.getRegister(":"),s=i.toString();r.visualMode&&zt(e);var o=new v.StringStream(t);i.setText(t);var u=n||{};u.input=t;try{this.parseInput_(e,o,u)}catch(a){throw yn(e,a),a}var f,l;if(!u.commandName)u.line!==undefined&&(l="move");else{f=this.matchCommand_(u.commandName);if(f){l=f.name,f.excludeFromCommandHistory&&i.setText(s),this.parseCommandArgs_(o,u,f);if(f.type=="exToKey"){for(var c=0;c<f.toKeys.length;c++)v.Vim.handleKey(e,f.toKeys[c],"mapping");return}if(f.type=="exToEx"){this.processCommand(e,f.toInput);return}}}if(!l){yn(e,'Not an editor command ":'+t+'"');return}try{_n[l](e,u),(!f||!f.possiblyAsync)&&u.callback&&u.callback()}catch(a){throw yn(e,a),a}},parseInput_:function(e,t,n){t.eatWhile(":"),t.eat("%")?(n.line=e.firstLine(),n.lineEnd=e.lastLine()):(n.line=this.parseLineSpec_(e,t),n.line!==undefined&&t.eat(",")&&(n.lineEnd=this.parseLineSpec_(e,t)));var r=t.match(/^(\w+)/);return r?n.commandName=r[1]:n.commandName=t.match(/.*/)[0],n},parseLineSpec_:function(e,t){var n=t.match(/^(\d+)/);if(n)return parseInt(n[1],10)-1;switch(t.next()){case".":return e.getCursor().line;case"$":return e.lastLine();case"'":var r=e.state.vim.marks[t.next()];if(r&&r.find())return r.find().line;throw new Error("Mark not set");default:return t.backUp(1),undefined}},parseCommandArgs_:function(e,t,n){if(e.eol())return;t.argString=e.match(/.*/)[0];var r=n.argDelimiter||/\s+/,i=Mt(t.argString).split(r);i.length&&i[0]&&(t.args=i)},matchCommand_:function(e){for(var t=e.length;t>0;t--){var n=e.substring(0,t);if(this.commandMap_[n]){var r=this.commandMap_[n];if(r.name.indexOf(e)===0)return r}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e<On.length;e++){var t=On[e],n=t.shortName||t.name;this.commandMap_[n]=t}},map:function(e,t,n){if(e!=":"&&e.charAt(0)==":"){if(n)throw Error("Mode not supported for ex mappings");var r=e.substring(1);t!=":"&&t.charAt(0)==":"?this.commandMap_[r]={name:r,type:"exToEx",toInput:t.substring(1),user:!0}:this.commandMap_[r]={name:r,type:"exToKey",toKeys:t,user:!0}}else if(t!=":"&&t.charAt(0)==":"){var i={keys:e,type:"keyToEx",exArgs:{input:t.substring(1)},user:!0};n&&(i.context=n),b.unshift(i)}else{var i={keys:e,type:"keyToKey",toKeys:t,user:!0};n&&(i.context=n),b.unshift(i)}},unmap:function(e,t){if(e!=":"&&e.charAt(0)==":"){if(t)throw Error("Mode not supported for ex mappings");var n=e.substring(1);if(this.commandMap_[n]&&this.commandMap_[n].user){delete this.commandMap_[n];return}}else{var r=e;for(var i=0;i<b.length;i++)if(r==b[i].keys&&b[i].context===t&&b[i].user){b.splice(i,1);return}}throw Error("No such mapping.")}};var _n={map:function(e,t,n){var r=t.args;if(!r||r.length<2){e&&yn(e,"Invalid mapping: "+t.input);return}Dn.map(r[0],r[1],n)},imap:function(e,t){this.map(e,t,"insert")},nmap:function(e,t){this.map(e,t,"normal")},vmap:function(e,t){this.map(e,t,"visual")},unmap:function(e,t,n){var r=t.args;if(!r||r.length<1){e&&yn(e,"No such mapping: "+t.input);return}Dn.unmap(r[0],n)},move:function(e,t){lt.processCommand(e,e.state.vim,{type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0},repeatOverride:t.line+1})},set:function(e,t){var n=t.args;if(!n||n.length<1){e&&yn(e,"Invalid mapping: "+t.input);return}var r=n[0].split("="),i=r[0],s=r[1],o=!1;if(i.charAt(i.length-1)=="?"){if(s)throw Error("Trailing characters: "+t.argString);i=i.substring(0,i.length-1),o=!0}s===undefined&&i.substring(0,2)=="no"&&(i=i.substring(2),s=!1);var u=$[i]&&$[i].type=="boolean";u&&s==undefined&&(s=!0);if(!u&&!s||o){var a=Q(i);a===!0||a===!1?yn(e," "+(a?"":"no")+i):yn(e,"  "+i+"="+a)}else K(i,s,e)},registers:function(e,t){var n=t.args,r=tt.registerController.registers,i="----------Registers----------<br><br>";if(!n)for(var s in r){var o=r[s].toString();o.length&&(i+='"'+s+"    "+o+"<br>")}else{var s;n=n.join("");for(var u=0;u<n.length;u++){s=n.charAt(u);if(!tt.registerController.isValidRegister(s))continue;var a=r[s]||new ut;i+='"'+s+"    "+a.toString()+"<br>"}}yn(e,i)},sort:function(e,t){function o(){if(t.argString){var e=new v.StringStream(t.argString);e.eat("!")&&(n=!0);if(e.eol())return;if(!e.eatSpace())return"Invalid arguments";var o=e.match(/[a-z]+/);if(o){o=o[0],r=o.indexOf("i")!=-1,i=o.indexOf("u")!=-1;var u=o.indexOf("d")!=-1&&1,a=o.indexOf("x")!=-1&&1,f=o.indexOf("o")!=-1&&1;if(u+a+f>1)return"Invalid arguments";s=u&&"decimal"||a&&"hex"||f&&"octal"}e.eatSpace()&&e.match(/\/.*\//)&&"patterns not supported"}}function b(e,t){if(n){var i;i=e,e=t,t=i}r&&(e=e.toLowerCase(),t=t.toLowerCase());var o=s&&p.exec(e),u=s&&p.exec(t);return o?(o=parseInt((o[1]+o[2]).toLowerCase(),d),u=parseInt((u[1]+u[2]).toLowerCase(),d),o-u):e<t?-1:1}var n,r,i,s,u=o();if(u){yn(e,u+": "+t.argString);return}var a=t.line||e.firstLine(),f=t.lineEnd||t.line||e.lastLine();if(a==f)return;var l=w(a,0),c=w(f,At(e,f)),h=e.getRange(l,c).split("\n"),p=s=="decimal"?/(-?)([\d]+)/:s=="hex"?/(-?)(?:0x)?([0-9a-f]+)/i:s=="octal"?/([0-7]+)/:null,d=s=="decimal"?10:s=="hex"?16:s=="octal"?8:null,m=[],g=[];if(s)for(var y=0;y<h.length;y++)p.exec(h[y])?m.push(h[y]):g.push(h[y]);else g=h;m.sort(b),g.sort(b),h=n?m.concat(g):g.concat(m);if(i){var E=h,S;h=[];for(var y=0;y<E.length;y++)E[y]!=S&&h.push(E[y]),S=E[y]}e.replaceRange(h.join("\n"),l,c)},global:function(e,t){var n=t.argString;if(!n){yn(e,"Regular Expression missing from global");return}var r=t.line!==undefined?t.line:e.firstLine(),i=t.lineEnd||t.line||e.lastLine(),s=hn(n),o=n,u;s.length&&(o=s[0],u=s.slice(1,s.length).join("/"));if(o)try{xn(e,o,!0,!0)}catch(a){yn(e,"Invalid regex: "+o);return}var f=ln(e).getQuery(),l=[],c="";for(var h=r;h<=i;h++){var p=f.test(e.getLine(h));p&&(l.push(h+1),c+=e.getLine(h)+"<br>")}if(!u){yn(e,c);return}var d=0,v=function(){if(d<l.length){var t=l[d]+u;Dn.processCommand(e,t,{callback:v})}d++};v()},substitute:function(e,t){if(!e.getSearchCursor)throw new Error("Search feature not available. Requires searchcursor.js or any other getSearchCursor implementation.");var n=t.argString,r=n?hn(n):[],i,s="",o,u,a,f=!1,l=!1;if(r.length)i=r[0],s=r[1],s!==undefined&&(Q("pcre")?s=mn(s):s=vn(s),tt.lastSubstituteReplacePart=s),o=r[2]?r[2].split(" "):[];else if(n&&n.length){yn(e,"Substitutions should be of the form :s/pattern/replace/");return}o&&(u=o[0],a=parseInt(o[1]),u&&(u.indexOf("c")!=-1&&(f=!0,u.replace("c","")),u.indexOf("g")!=-1&&(l=!0,u.replace("g","")),i=i+"/"+u));if(i)try{xn(e,i,!0,!0)}catch(c){yn(e,"Invalid regex: "+i);return}s=s||tt.lastSubstituteReplacePart;if(s===undefined){yn(e,"No previous substitute regular expression");return}var h=ln(e),p=h.getQuery(),d=t.line!==undefined?t.line:e.getCursor().line,v=t.lineEnd||d;a&&(d=v,v=d+a-1);var m=vt(e,w(d,0)),g=e.getSearchCursor(p,m);Pn(e,f,l,d,v,g,p,s,t.callback)},redo:v.commands.redo,undo:v.commands.undo,write:function(e){v.commands.save?v.commands.save(e):e.save()},nohlsearch:function(e){kn(e)},delmarks:function(e,t){if(!t.argString||!Mt(t.argString)){yn(e,"Argument required");return}var n=e.state.vim,r=new v.StringStream(Mt(t.argString));while(!r.eol()){r.eatSpace();var i=r.pos;if(!r.match(/[a-zA-Z]/,!1)){yn(e,"Invalid argument: "+t.argString.substring(i));return}var s=r.next();if(r.match("-",!0)){if(!r.match(/[a-zA-Z]/,!1)){yn(e,"Invalid argument: "+t.argString.substring(i));return}var o=s,u=r.next();if(!(R(o)&&R(u)||W(o)&&W(u))){yn(e,"Invalid argument: "+o+"-");return}var a=o.charCodeAt(0),f=u.charCodeAt(0);if(a>=f){yn(e,"Invalid argument: "+t.argString.substring(i));return}for(var l=0;l<=f-a;l++){var c=String.fromCharCode(a+l);delete n.marks[c]}}else delete n.marks[s]}}},Dn=new Mn;v.keyMap.vim={attach:N,detach:T,call:C},J("insertModeEscKeysTimeout",200,"number"),v.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(e){var t=v.commands.newlineAndIndentContinueComment||v.commands.newlineAndIndent;t(e)},fallthrough:["default"],attach:N,detach:T,call:C},v.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:N,detach:T,call:C},nt(),v.Vim=E(),E=v.Vim;var Jn={"return":"CR",backspace:"BS","delete":"Del",esc:"Esc",left:"Left",right:"Right",up:"Up",down:"Down",space:"Space",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown",enter:"CR"},Qn=E.handleKey.bind(E);E.handleKey=function(e,t,n){return e.operation(function(){return Qn(e,t,n)},!0)},t.CodeMirror=v;var Zn=E.maybeInitVimState_;t.handler={$id:"ace/keyboard/vim",drawCursor:function(e,t,n,r,s){var o=this.state.vim||{},u=n.characterWidth,a=n.lineHeight,f=t.top,l=t.left;if(!o.insertMode){var c=r.cursor?i.comparePoints(r.cursor,r.start)<=0:s.selection.isBackwards()||s.selection.isEmpty();!c&&l>u&&(l-=u)}!o.insertMode&&o.status&&(a/=2,f+=a),e.left=l+"px",e.top=f+"px",e.width=u+"px",e.height=a+"px"},handleKeyboard:function(e,t,n,r,i){var s=e.editor,o=s.state.cm,u=Zn(o);if(r==-1)return;if(n=="c"&&t==1){if(!c.isMac&&s.getCopyText())return s.once("copy",function(){s.selection.clearSelection()}),{command:"null",passEvent:!0}}else u.insertMode||c.isMac&&this.handleMacRepeat(e,t,n)&&(t=-1,n=e.inputChar);if(t==-1||t&1||t===0&&n.length>1){var a=u.insertMode,f=Kn(t,n,i||{});u.status==null&&(u.status="");var l=Yn(o,f,"user");u=Zn(o),l&&u.status!=null?u.status+=f:u.status==null&&(u.status=""),o._signal("changeStatus");if(!l&&(t!=-1||a))return;return{command:"null",passEvent:!l}}},attach:function(e){e.state||(e.state={});var t=new v(e);e.state.cm=t,e.$vimModeHandler=this,v.keyMap.vim.attach(t),Zn(t).status=null,t.on("vim-command-done",function(){if(t.virtualSelectionMode())return;Zn(t).status=null,t.ace._signal("changeStatus"),t.ace.session.markUndoGroup()}),t.on("changeStatus",function(){t.ace.renderer.updateCursor(),t.ace._signal("changeStatus")}),t.on("vim-mode-change",function(){if(t.virtualSelectionMode())return;t.ace.renderer.setStyle("normal-mode",!Zn(t).insertMode),t._signal("changeStatus")}),t.ace.renderer.setStyle("normal-mode",!Zn(t).insertMode),e.renderer.$cursorLayer.drawCursor=this.drawCursor.bind(t),this.updateMacCompositionHandlers(e,!0)},detach:function(e){var t=e.state.cm;v.keyMap.vim.detach(t),t.destroy(),e.state.cm=null,e.$vimModeHandler=null,e.renderer.$cursorLayer.drawCursor=null,e.renderer.setStyle("normal-mode",!1),this.updateMacCompositionHandlers(e,!1)},getStatusText:function(e){var t=e.state.cm,n=Zn(t);if(n.insertMode)return"INSERT";var r="";return n.visualMode&&(r+="VISUAL",n.visualLine&&(r+=" LINE"),n.visualBlock&&(r+=" BLOCK")),n.status&&(r+=(r?" ":"")+n.status),r},handleMacRepeat:function(e,t,n){if(t==-1)e.inputChar=n,e.lastEvent="input";else if(e.inputChar&&e.$lastHash==t&&e.$lastKey==n){if(e.lastEvent=="input")e.lastEvent="input1";else if(e.lastEvent=="input1")return!0}else e.$lastHash=t,e.$lastKey=n,e.lastEvent="keypress"},updateMacCompositionHandlers:function(e,t){var n=function(t){var n=e.state.cm,r=Zn(n);if(!r.insertMode){var i=this.textInput.getElement();i.blur(),i.focus(),i.value=t}else this.onCompositionUpdateOrig(t)},r=function(t){var n=e.state.cm,r=Zn(n);r.insertMode||this.onCompositionStartOrig(t)};t?e.onCompositionUpdateOrig||(e.onCompositionUpdateOrig=e.onCompositionUpdate,e.onCompositionUpdate=n,e.onCompositionStartOrig=e.onCompositionStart,e.onCompositionStart=r):e.onCompositionUpdateOrig&&(e.onCompositionUpdate=e.onCompositionUpdateOrig,e.onCompositionUpdateOrig=null,e.onCompositionStart=e.onCompositionStartOrig,e.onCompositionStartOrig=null)}};var er={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return e.getLength().toString().length*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update)},detach:function(e){e.renderer.$gutterLayer.$renderer=null,e.off("changeSelection",this.update)}};E.defineOption({name:"wrap",set:function(e,t){t&&t.ace.setOption("wrap",e)},type:"boolean"},!1),E.defineEx("write","w",function(){console.log(":write is not implemented")}),b.push({keys:"zc",type:"action",action:"fold",actionArgs:{open:!1}},{keys:"zC",type:"action",action:"fold",actionArgs:{open:!1,all:!0}},{keys:"zo",type:"action",action:"fold",actionArgs:{open:!0}},{keys:"zO",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"za",type:"action",action:"fold",actionArgs:{toggle:!0}},{keys:"zA",type:"action",action:"fold",actionArgs:{toggle:!0,all:!0}},{keys:"zf",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"zd",type:"action",action:"fold",actionArgs:{open:!0,all:!0}},{keys:"<C-A-k>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAbove"}},{keys:"<C-A-j>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelow"}},{keys:"<C-A-S-k>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorAboveSkipCurrent"}},{keys:"<C-A-S-j>",type:"action",action:"aceCommand",actionArgs:{name:"addCursorBelowSkipCurrent"}},{keys:"<C-A-h>",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreBefore"}},{keys:"<C-A-l>",type:"action",action:"aceCommand",actionArgs:{name:"selectMoreAfter"}},{keys:"<C-A-S-h>",type:"action",action:"aceCommand",actionArgs:{name:"selectNextBefore"}},{keys:"<C-A-S-l>",type:"action",action:"aceCommand",actionArgs:{name:"selectNextAfter"}}),dt.aceCommand=function(e,t,n){e.vimCmd=t,e.ace.inVirtualSelectionMode?e.ace.on("beforeEndOperation",tr):tr(null,e.ace)},dt.fold=function(e,t,n){e.ace.execCommand(["toggleFoldWidget","toggleFoldWidget","foldOther","unfoldall"][(t.all?2:0)+(t.open?1:0)])},t.handler.defaultKeymap=b,t.handler.actions=dt,t.Vim=E,E.map("Y","yy")})
\ No newline at end of file
diff --git a/js/ace/mode-abap.js b/js/ace/mode-abap.js
new file mode 100644
index 0000000..3d46996
--- /dev/null
+++ b/js/ace/mode-abap.js
@@ -0,0 +1 @@
+ace.define("ace/mode/abap_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"ADD ALIAS ALIASES ASSERT ASSIGN ASSIGNING AT BACK CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY DATA DEFINE DEFINITION DEFERRED DELETE DESCRIBE DETAIL DIVIDE DO ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT FETCH FIELDS FORM FORMAT FREE FROM FUNCTION GENERATE GET HIDE IF IMPORT IMPORTING INDEX INFOTYPES INITIALIZATION INTERFACE INTERFACES INPUT INSERT IMPLEMENTATION LEAVE LIKE LINE LOAD LOCAL LOOP MESSAGE METHOD METHODS MODIFY MODULE MOVE MULTIPLY ON OVERLAY OPTIONAL OTHERS PACK PARAMETERS PERFORM POSITION PROGRAM PROVIDE PUT RAISE RANGES READ RECEIVE RECEIVING REDEFINITION REFERENCE REFRESH REJECT REPLACE REPORT RESERVE RESTORE RETURNING ROLLBACK SCAN SCROLL SEARCH SELECT SET SHIFT SKIP SORT SORTED SPLIT STANDARD STATICS STEP STOP SUBMIT SUBTRACT SUM SUMMARY SUPPRESS TABLES TIMES TRANSFER TRANSLATE TRY TYPE TYPES UNASSIGN ULINE UNPACK UPDATE WHEN WHILE WINDOW WRITE OCCURS STRUCTURE OBJECT PROPERTY CASTING APPEND RAISING VALUE COLOR CHANGING EXCEPTION EXCEPTIONS DEFAULT CHECKBOX COMMENT ID NUMBER FOR TITLE OUTPUT WITH EXIT USING INTO WHERE GROUP BY HAVING ORDER BY SINGLE APPENDING CORRESPONDING FIELDS OF TABLE LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN","constant.language":"TRUE FALSE NULL SPACE","support.type":"c n i p f d t x string xstring decfloat16 decfloat34","keyword.operator":"abs sign ceil floor trunc frac acos asin atan cos sin tan abapOperator cosh sinh tanh exp log log10 sqrt strlen xstrlen charlen numofchar dbmaxlen lines"},"text",!0," "),t="WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)";this.$rules={start:[{token:"string",regex:"`",next:"string"},{token:"string",regex:"'",next:"qstring"},{token:"doc.comment",regex:/^\*.+/},{token:"comment",regex:/".+$/},{token:"invalid",regex:"\\.{2,}"},{token:"keyword.operator",regex:/\W[\-+\%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/},{token:"paren.lparen",regex:"[\\[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"constant.numeric",regex:"[+-]?\\d+\\b"},{token:"variable.parameter",regex:/sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/},{token:"keyword",regex:t},{token:"variable.parameter",regex:/\w+-\w+(?:-\w+)*/},{token:e,regex:"\\b\\w+\\b"},{caseInsensitive:!0}],qstring:[{token:"constant.language.escape",regex:"''"},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}],string:[{token:"constant.language.escape",regex:"``"},{token:"string",regex:"`",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.AbapHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/abap",["require","exports","module","ace/mode/abap_highlight_rules","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/lib/oop"],function(e,t,n){"use strict";function a(){this.HighlightRules=r,this.foldingRules=new i}var r=e("./abap_highlight_rules").AbapHighlightRules,i=e("./folding/coffee").FoldMode,s=e("../range").Range,o=e("./text").Mode,u=e("../lib/oop");u.inherits(a,o),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.toggleCommentLines=function(e,t,n,r){var i=new s(0,0,0,0);for(var o=n;o<=r;++o){var u=t.getLine(o);if(hereComment.test(u))continue;commentLine.test(u)?u=u.replace(commentLine,"$1"):u=u.replace(indentation,"$&#"),i.end.row=i.start.row=o,i.end.column=u.length+1,t.replace(i,u)}},this.$id="ace/mode/abap"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-abc.js b/js/ace/mode-abc.js
new file mode 100644
index 0000000..2c841b9
--- /dev/null
+++ b/js/ace/mode-abc.js
@@ -0,0 +1 @@
+ace.define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["zupfnoter.information.comment.line.percentage","information.keyword","in formation.keyword.embedded"],regex:"(%%%%)(hn\\.[a-z]*)(.*)",comment:"Instruction Comment"},{token:["information.comment.line.percentage","information.keyword.embedded"],regex:"(%%)(.*)",comment:"Instruction Comment"},{token:"comment.line.percentage",regex:"%.*",comment:"Comments"},{token:"barline.keyword.operator",regex:"[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+",comment:"Bar lines"},{token:["information.keyword.embedded","information.argument.string.unquoted"],regex:"(\\[[A-Za-z]:)([^\\]]*\\])",comment:"embedded Header lines"},{token:["information.keyword","information.argument.string.unquoted"],regex:"^([A-Za-z]:)([^%\\\\]*)",comment:"Header lines"},{token:["text","entity.name.function","string.unquoted","text"],regex:"(\\[)([A-Z]:)(.*?)(\\])",comment:"Inline fields"},{token:["accent.constant.language","pitch.constant.numeric","duration.constant.numeric"],regex:"([\\^=_]*)([A-Ga-gz][,']*)([0-9]*/*[><0-9]*)",comment:"Notes"},{token:"zupfnoter.jumptarget.string.quoted",regex:'[\\"!]\\^\\:.*?[\\"!]',comment:"Zupfnoter jumptarget"},{token:"zupfnoter.goto.string.quoted",regex:'[\\"!]\\^\\@.*?[\\"!]',comment:"Zupfnoter goto"},{token:"zupfnoter.annotation.string.quoted",regex:'[\\"!]\\^\\!.*?[\\"!]',comment:"Zupfnoter annoation"},{token:"zupfnoter.annotationref.string.quoted",regex:'[\\"!]\\^\\#.*?[\\"!]',comment:"Zupfnoter annotation reference"},{token:"chordname.string.quoted",regex:'[\\"!]\\^.*?[\\"!]',comment:"abc chord"},{token:"string.quoted",regex:'[\\"!].*?[\\"!]',comment:"abc annotation"}]},this.normalizeRules()};s.metaData={fileTypes:["abc"],name:"ABC",scopeName:"text.abcnotation"},r.inherits(s,i),t.ABCHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./abc_highlight_rules").ABCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/abc"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-actionscript.js b/js/ace/mode-actionscript.js
new file mode 100644
index 0000000..d5c6e4f
--- /dev/null
+++ b/js/ace/mode-actionscript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/actionscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"support.class.actionscript.2",regex:"\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b"},{token:"support.function.actionscript.2",regex:"\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b"},{token:"support.constant.actionscript.2",regex:"\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b"},{token:"keyword.control.actionscript.2",regex:"\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b"},{token:"storage.type.actionscript.2",regex:"\\b(?:Boolean|Number|String|Void)\\b"},{token:"constant.language.actionscript.2",regex:"\\b(?:null|undefined|true|false)\\b"},{token:"constant.numeric.actionscript.2",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"punctuation.definition.string.begin.actionscript.2",regex:'"',push:[{token:"punctuation.definition.string.end.actionscript.2",regex:'"',next:"pop"},{token:"constant.character.escape.actionscript.2",regex:"\\\\."},{defaultToken:"string.quoted.double.actionscript.2"}]},{token:"punctuation.definition.string.begin.actionscript.2",regex:"'",push:[{token:"punctuation.definition.string.end.actionscript.2",regex:"'",next:"pop"},{token:"constant.character.escape.actionscript.2",regex:"\\\\."},{defaultToken:"string.quoted.single.actionscript.2"}]},{token:"support.constant.actionscript.2",regex:"\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b"},{token:"punctuation.definition.comment.actionscript.2",regex:"/\\*",push:[{token:"punctuation.definition.comment.actionscript.2",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.actionscript.2"}]},{token:"punctuation.definition.comment.actionscript.2",regex:"//.*$",push_:[{token:"comment.line.double-slash.actionscript.2",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.actionscript.2"}]},{token:"keyword.operator.actionscript.2",regex:"\\binstanceof\\b"},{token:"keyword.operator.symbolic.actionscript.2",regex:"[-!%&*+=/?:]"},{token:["meta.preprocessor.actionscript.2","punctuation.definition.preprocessor.actionscript.2","meta.preprocessor.actionscript.2"],regex:"^([ \\t]*)(#)([a-zA-Z]+)"},{token:["storage.type.function.actionscript.2","meta.function.actionscript.2","entity.name.function.actionscript.2","meta.function.actionscript.2","punctuation.definition.parameters.begin.actionscript.2"],regex:"\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()",push:[{token:"punctuation.definition.parameters.end.actionscript.2",regex:"\\)",next:"pop"},{token:"variable.parameter.function.actionscript.2",regex:"[^,)$]+"},{defaultToken:"meta.function.actionscript.2"}]},{token:["storage.type.class.actionscript.2","meta.class.actionscript.2","entity.name.type.class.actionscript.2","meta.class.actionscript.2","storage.modifier.extends.actionscript.2","meta.class.actionscript.2","entity.other.inherited-class.actionscript.2"],regex:"\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?"}]},this.normalizeRules()};s.metaData={fileTypes:["as"],keyEquivalent:"^~A",name:"ActionScript",scopeName:"source.actionscript.2"},r.inherits(s,i),t.ActionScriptHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/actionscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/actionscript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./actionscript_highlight_rules").ActionScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/actionscript"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-ada.js b/js/ace/mode-ada.js
new file mode 100644
index 0000000..81cdc59
--- /dev/null
+++ b/js/ace/mode-ada.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}),ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ada_highlight_rules").AdaHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/ada"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-apache_conf.js b/js/ace/mode-apache_conf.js
new file mode 100644
index 0000000..2414fc7
--- /dev/null
+++ b/js/ace/mode-apache_conf.js
@@ -0,0 +1 @@
+ace.define("ace/mode/apache_conf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["punctuation.definition.comment.apacheconf","comment.line.hash.ini","comment.line.hash.ini"],regex:"^((?:\\s)*)(#)(.*$)"},{token:["punctuation.definition.tag.apacheconf","entity.tag.apacheconf","text","string.value.apacheconf","punctuation.definition.tag.apacheconf"],regex:"(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)"},{token:["punctuation.definition.tag.apacheconf","entity.tag.apacheconf","punctuation.definition.tag.apacheconf"],regex:"(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(>)"},{token:["keyword.alias.apacheconf","text","string.regexp.apacheconf","text","string.replacement.apacheconf","text"],regex:"(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)"},{token:["keyword.alias.apacheconf","text","entity.status.apacheconf","text","string.regexp.apacheconf","text","string.path.apacheconf","text"],regex:"(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:["keyword.alias.apacheconf","text","entity.status.apacheconf","text","string.path.apacheconf","text","string.path.apacheconf","text"],regex:"(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:["keyword.alias.apacheconf","text","string.regexp.apacheconf","text","string.path.apacheconf","text"],regex:"(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?"},{token:["keyword.alias.apacheconf","text","string.path.apacheconf","text","string.path.apacheconf","text"],regex:"(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?"},{token:"keyword.core.apacheconf",regex:"\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b"},{token:"keyword.mpm.apacheconf",regex:"\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b"},{token:"keyword.access.apacheconf",regex:"\\b(?:Allow|Deny|Order)\\b"},{token:"keyword.actions.apacheconf",regex:"\\b(?:Action|Script)\\b"},{token:"keyword.alias.apacheconf",regex:"\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b"},{token:"keyword.auth.apacheconf",regex:"\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b"},{token:"keyword.auth_anon.apacheconf",regex:"\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b"},{token:"keyword.auth_dbm.apacheconf",regex:"\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b"},{token:"keyword.auth_digest.apacheconf",regex:"\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b"},{token:"keyword.auth_ldap.apacheconf",regex:"\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b"},{token:"keyword.autoindex.apacheconf",regex:"\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b"},{token:"keyword.cache.apacheconf",regex:"\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b"},{token:"keyword.cern_meta.apacheconf",regex:"\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b"},{token:"keyword.cgi.apacheconf",regex:"\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b"},{token:"keyword.cgid.apacheconf",regex:"\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b"},{token:"keyword.charset_lite.apacheconf",regex:"\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b"},{token:"keyword.dav.apacheconf",regex:"\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b"},{token:"keyword.deflate.apacheconf",regex:"\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b"},{token:"keyword.dir.apacheconf",regex:"\\b(?:DirectoryIndex|DirectorySlash)\\b"},{token:"keyword.disk_cache.apacheconf",regex:"\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b"},{token:"keyword.dumpio.apacheconf",regex:"\\b(?:DumpIOInput|DumpIOOutput)\\b"},{token:"keyword.env.apacheconf",regex:"\\b(?:PassEnv|SetEnv|UnsetEnv)\\b"},{token:"keyword.expires.apacheconf",regex:"\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b"},{token:"keyword.ext_filter.apacheconf",regex:"\\b(?:ExtFilterDefine|ExtFilterOptions)\\b"},{token:"keyword.file_cache.apacheconf",regex:"\\b(?:CacheFile|MMapFile)\\b"},{token:"keyword.headers.apacheconf",regex:"\\b(?:Header|RequestHeader)\\b"},{token:"keyword.imap.apacheconf",regex:"\\b(?:ImapBase|ImapDefault|ImapMenu)\\b"},{token:"keyword.include.apacheconf",regex:"\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b"},{token:"keyword.isapi.apacheconf",regex:"\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b"},{token:"keyword.ldap.apacheconf",regex:"\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b"},{token:"keyword.log.apacheconf",regex:"\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b"},{token:"keyword.mem_cache.apacheconf",regex:"\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b"},{token:"keyword.mime.apacheconf",regex:"\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b"},{token:"keyword.misc.apacheconf",regex:"\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b"},{token:"keyword.negotiation.apacheconf",regex:"\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b"},{token:"keyword.nw_ssl.apacheconf",regex:"\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b"},{token:"keyword.proxy.apacheconf",regex:"\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b"},{token:"keyword.rewrite.apacheconf",regex:"\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b"},{token:"keyword.setenvif.apacheconf",regex:"\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b"},{token:"keyword.so.apacheconf",regex:"\\b(?:LoadFile|LoadModule)\\b"},{token:"keyword.ssl.apacheconf",regex:"\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b"},{token:"keyword.usertrack.apacheconf",regex:"\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b"},{token:"keyword.vhost_alias.apacheconf",regex:"\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b"},{token:["keyword.php.apacheconf","text","entity.property.apacheconf","text","string.value.apacheconf","text"],regex:"\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)"},{token:["punctuation.variable.apacheconf","variable.env.apacheconf","variable.misc.apacheconf","punctuation.variable.apacheconf"],regex:"(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})"},{token:["entity.mime-type.apacheconf","text"],regex:"\\b((?:text|image|application|video|audio)/.+?)(\\s)"},{token:"entity.helper.apacheconf",regex:"\\b(?:from|unset|set|on|off)\\b",caseInsensitive:!0},{token:"constant.integer.apacheconf",regex:"\\b\\d+\\b"},{token:["text","punctuation.definition.flag.apacheconf","string.flag.apacheconf","punctuation.definition.flag.apacheconf","text"],regex:"(\\s)(\\[)(.*?)(\\])(\\s)"}]},this.normalizeRules()};s.metaData={fileTypes:["conf","CONF","htaccess","HTACCESS","htgroups","HTGROUPS","htpasswd","HTPASSWD",".htaccess",".HTACCESS",".htgroups",".HTGROUPS",".htpasswd",".HTPASSWD"],name:"Apache Conf",scopeName:"source.apacheconf"},r.inherits(s,i),t.ApacheConfHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./apache_conf_highlight_rules").ApacheConfHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/apache_conf"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-applescript.js b/js/ace/mode-applescript.js
new file mode 100644
index 0000000..3191b7b
--- /dev/null
+++ b/js/ace/mode-applescript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="about|above|after|against|and|around|as|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|try|until|where|while|whose|with|without",t="AppleScript|false|linefeed|return|pi|quote|result|space|tab|true",n="activate|beep|count|delay|launch|log|offset|read|round|run|say|summarize|write",r="alias|application|boolean|class|constant|date|file|integer|list|number|real|record|string|text|character|characters|contents|day|frontmost|id|item|length|month|name|paragraph|paragraphs|rest|reverse|running|time|version|weekday|word|words|year",i=this.createKeywordMapper({"support.function":n,"constant.language":t,"support.type":r,keyword:e},"identifier");this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\(\\*",next:"comment"},{token:"string",regex:'".*?"'},{token:"support.type",regex:"\\b(POSIX file|POSIX path|(date|time) string|quoted form)\\b"},{token:"support.function",regex:"\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\b|^\\s*return\\b"},{token:"constant.language",regex:"\\b(text item delimiters|current application|missing value)\\b"},{token:"keyword",regex:"\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference))\\b"},{token:i,regex:"[a-zA-Z][a-zA-Z0-9_]*\\b"}],comment:[{token:"comment",regex:"\\*\\)",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.AppleScriptHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./applescript_highlight_rules").AppleScriptHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="--",this.blockComment={start:"(*",end:"*)"},this.$id="ace/mode/applescript"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-asciidoc.js b/js/ace/mode-asciidoc.js
new file mode 100644
index 0000000..de55f24
--- /dev/null
+++ b/js/ace/mode-asciidoc.js
@@ -0,0 +1 @@
+ace.define("ace/mode/asciidoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){function t(e){var t=/\w/.test(e)?"\\b":"(?:\\B|^)";return t+e+"[^"+e+"].*?"+e+"(?![\\w*])"}var e="[a-zA-Z\u00a1-\uffff]+\\b";this.$rules={start:[{token:"empty",regex:/$/},{token:"literal",regex:/^\.{4,}\s*$/,next:"listingBlock"},{token:"literal",regex:/^-{4,}\s*$/,next:"literalBlock"},{token:"string",regex:/^\+{4,}\s*$/,next:"passthroughBlock"},{token:"keyword",regex:/^={4,}\s*$/},{token:"text",regex:/^\s*$/},{token:"empty",regex:"",next:"dissallowDelimitedBlock"}],dissallowDelimitedBlock:[{include:"paragraphEnd"},{token:"comment",regex:"^//.+$"},{token:"keyword",regex:"^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"},{include:"listStart"},{token:"literal",regex:/^\s+.+$/,next:"indentedBlock"},{token:"empty",regex:"",next:"text"}],paragraphEnd:[{token:"doc.comment",regex:/^\/{4,}\s*$/,next:"commentBlock"},{token:"tableBlock",regex:/^\s*[|!]=+\s*$/,next:"tableBlock"},{token:"keyword",regex:/^(?:--|''')\s*$/,next:"start"},{token:"option",regex:/^\[.*\]\s*$/,next:"start"},{token:"pageBreak",regex:/^>{3,}$/,next:"start"},{token:"literal",regex:/^\.{4,}\s*$/,next:"listingBlock"},{token:"titleUnderline",regex:/^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/,next:"start"},{token:"singleLineTitle",regex:/^={1,5}\s+\S.*$/,next:"start"},{token:"otherBlock",regex:/^(?:\*{2,}|_{2,})\s*$/,next:"start"},{token:"optionalTitle",regex:/^\.[^.\s].+$/,next:"start"}],listStart:[{token:"keyword",regex:/^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/,next:"listText"},{token:"meta.tag",regex:/^.+(?::{2,4}|;;)(?: |$)/,next:"listText"},{token:"support.function.list.callout",regex:/^(?:<\d+>|\d+>|>) /,next:"text"},{token:"keyword",regex:/^\+\s*$/,next:"start"}],text:[{token:["link","variable.language"],regex:/((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/},{token:"link",regex:/(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/},{token:"link",regex:/\b[\w\.\/\-]+@[\w\.\/\-]+\b/},{include:"macros"},{include:"paragraphEnd"},{token:"literal",regex:/\+{3,}/,next:"smallPassthrough"},{token:"escape",regex:/\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/},{token:"escape",regex:/\\[_*'`+#]|\\{2}[_*'`+#]{2}/},{token:"keyword",regex:/\s\+$/},{token:"text",regex:e},{token:["keyword","string","keyword"],regex:/(<<[\w\d\-$]+,)(.*?)(>>|$)/},{token:"keyword",regex:/<<[\w\d\-$]+,?|>>/},{token:"constant.character",regex:/\({2,3}.*?\){2,3}/},{token:"keyword",regex:/\[\[.+?\]\]/},{token:"support",regex:/^\[{3}[\w\d =\-]+\]{3}/},{include:"quotes"},{token:"empty",regex:/^\s*$/,next:"start"}],listText:[{include:"listStart"},{include:"text"}],indentedBlock:[{token:"literal",regex:/^[\s\w].+$/,next:"indentedBlock"},{token:"literal",regex:"",next:"start"}],listingBlock:[{token:"literal",regex:/^\.{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"constant.numeric",regex:"<\\d+>"},{token:"literal",regex:"[^<]+"},{token:"literal",regex:"<"}],literalBlock:[{token:"literal",regex:/^-{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"constant.numeric",regex:"<\\d+>"},{token:"literal",regex:"[^<]+"},{token:"literal",regex:"<"}],passthroughBlock:[{token:"literal",regex:/^\+{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"literal",regex:e+"|\\d+"},{include:"macros"},{token:"literal",regex:"."}],smallPassthrough:[{token:"literal",regex:/[+]{3,}/,next:"dissallowDelimitedBlock"},{token:"literal",regex:/^\s*$/,next:"dissallowDelimitedBlock"},{token:"literal",regex:e+"|\\d+"},{include:"macros"}],commentBlock:[{token:"doc.comment",regex:/^\/{4,}\s*$/,next:"dissallowDelimitedBlock"},{token:"doc.comment",regex:"^.*$"}],tableBlock:[{token:"tableBlock",regex:/^\s*\|={3,}\s*$/,next:"dissallowDelimitedBlock"},{token:"tableBlock",regex:/^\s*!={3,}\s*$/,next:"innerTableBlock"},{token:"tableBlock",regex:/\|/},{include:"text",noEscape:!0}],innerTableBlock:[{token:"tableBlock",regex:/^\s*!={3,}\s*$/,next:"tableBlock"},{token:"tableBlock",regex:/^\s*|={3,}\s*$/,next:"dissallowDelimitedBlock"},{token:"tableBlock",regex:/\!/}],macros:[{token:"macro",regex:/{[\w\-$]+}/},{token:["text","string","text","constant.character","text"],regex:/({)([\w\-$]+)(:)?(.+)?(})/},{token:["text","markup.list.macro","keyword","string"],regex:/(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/},{token:["markup.list.macro","keyword","string"],regex:/([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/},{token:["markup.list.macro","keyword"],regex:/([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/},{token:"keyword",regex:/^:.+?:(?= |$)/}],quotes:[{token:"string.italic",regex:/__[^_\s].*?__/},{token:"string.italic",regex:t("_")},{token:"keyword.bold",regex:/\*\*[^*\s].*?\*\*/},{token:"keyword.bold",regex:t("\\*")},{token:"literal",regex:t("\\+")},{token:"literal",regex:/\+\+[^+\s].*?\+\+/},{token:"literal",regex:/\$\$.+?\$\$/},{token:"literal",regex:t("`")},{token:"keyword",regex:t("^")},{token:"keyword",regex:t("~")},{token:"keyword",regex:/##?/},{token:"keyword",regex:/(?:\B|^)``|\b''/}]};var n={macro:"constant.character",tableBlock:"doc.comment",titleUnderline:"markup.heading",singleLineTitle:"markup.heading",pageBreak:"string",option:"string.regexp",otherBlock:"markup.list",literal:"support.function",optionalTitle:"constant.numeric",escape:"constant.language.escape",link:"markup.underline.list"};for(var r in this.$rules){var i=this.$rules[r];for(var s=i.length;s--;){var o=i[s];if(o.include||typeof o=="string"){var u=[s,1].concat(this.$rules[o.include||o]);o.noEscape&&(u=u.filter(function(e){return!e.next})),i.splice.apply(i,u)}else o.token in n&&(o.token=n[o.token])}}};r.inherits(s,i),t.AsciidocHighlightRules=s}),ace.define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/,this.singleLineHeadingRe=/^={1,5}(?=\s+\S)/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="="?this.singleLineHeadingRe.test(r)?"start":e.getLine(n-1).length!=e.getLine(n).length?"":"start":e.bgTokenizer.getState(n)=="dissallowDelimitedBlock"?"end":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type}function d(){var t=f.value.match(p);if(t)return t[0].length;var r=c.indexOf(f.value[0])+1;return r==1&&e.getLine(n-1).length!=e.getLine(n).length?Infinity:r}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;var f,c=["=","-","~","^","+"],h="markup.heading",p=this.singleLineHeadingRe;if(l(n)==h){var v=d();while(++n<o){if(l(n)!=h)continue;var m=d();if(m<=v)break}var g=f&&f.value.match(this.singleLineHeadingRe);a=g?n-1:n-2;if(a>u)while(a>u&&(!l(a)||f.value[0]=="["))a--;if(a>u){var y=e.getLine(a).length;return new s(u,i,a,y)}}else{var b=e.bgTokenizer.getState(n);if(b=="dissallowDelimitedBlock"){while(n-->0)if(e.bgTokenizer.getState(n).lastIndexOf("Block")==-1)break;a=n+1;if(a<u){var y=e.getLine(n).length;return new s(a,5,u,i-5)}}else{while(++n<o)if(e.bgTokenizer.getState(n)=="dissallowDelimitedBlock")break;a=n;if(a>u){var y=e.getLine(n).length;return new s(u,5,a,y-5)}}}}}.call(o.prototype)}),ace.define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./asciidoc_highlight_rules").AsciidocHighlightRules,o=e("./folding/asciidoc").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^((?:.+)?)([-+*][ ]+)/.exec(t);return r?(new Array(r[1].length+1)).join(" ")+r[2]:""}return this.$getIndent(t)},this.$id="ace/mode/asciidoc"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-assembly_x86.js b/js/ace/mode-assembly_x86.js
new file mode 100644
index 0000000..06378b6
--- /dev/null
+++ b/js/ace/mode-assembly_x86.js
@@ -0,0 +1 @@
+ace.define("ace/mode/assembly_x86_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.control.assembly",regex:"\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b",caseInsensitive:!0},{token:"variable.parameter.register.assembly",regex:"\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b",caseInsensitive:!0},{token:"constant.character.decimal.assembly",regex:"\\b[0-9]+\\b"},{token:"constant.character.hexadecimal.assembly",regex:"\\b0x[A-F0-9]+\\b",caseInsensitive:!0},{token:"constant.character.hexadecimal.assembly",regex:"\\b[A-F0-9]+h\\b",caseInsensitive:!0},{token:"string.assembly",regex:/'([^\\']|\\.)*'/},{token:"string.assembly",regex:/"([^\\"]|\\.)*"/},{token:"support.function.directive.assembly",regex:"^\\[",push:[{token:"support.function.directive.assembly",regex:"\\]$",next:"pop"},{defaultToken:"support.function.directive.assembly"}]},{token:["support.function.directive.assembly","support.function.directive.assembly","entity.name.function.assembly"],regex:"(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)"},{token:"support.function.directive.assembly",regex:"^endstruc\\b"},{token:["support.function.directive.assembly","entity.name.function.assembly","support.function.directive.assembly","constant.character.assembly"],regex:"^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)"},{token:"support.function.directive.assembly",regex:"^%endmacro"},{token:["text","support.function.directive.assembly","text","entity.name.function.assembly"],regex:"(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)",caseInsensitive:!0},{token:"support.function.directive.assembly",regex:"\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b",caseInsensitive:!0},{token:"entity.name.function.assembly",regex:"^\\s*%%[\\w.]+?:$"},{token:"entity.name.function.assembly",regex:"^\\s*%\\$[\\w.]+?:$"},{token:"entity.name.function.assembly",regex:"^[\\w.]+?:"},{token:"entity.name.function.assembly",regex:"^[\\w.]+?\\b"},{token:"comment.assembly",regex:";.*$"}]},this.normalizeRules()};s.metaData={fileTypes:["asm"],name:"Assembly x86",scopeName:"source.assembly"},r.inherits(s,i),t.AssemblyX86HighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/assembly_x86",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/assembly_x86_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./assembly_x86_highlight_rules").AssemblyX86HighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.$id="ace/mode/assembly_x86"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-autohotkey.js b/js/ace/mode-autohotkey.js
new file mode 100644
index 0000000..3e19f89
--- /dev/null
+++ b/js/ace/mode-autohotkey.js
@@ -0,0 +1 @@
+ace.define("ace/mode/autohotkey_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters",t="AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR";this.$rules={start:[{token:"comment.line.ahk",regex:"(?:^| );.*$"},{token:"comment.block.ahk",regex:"/\\*",push:[{token:"comment.block.ahk",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.ahk"}]},{token:"doc.comment.ahk",regex:"#cs",push:[{token:"doc.comment.ahk",regex:"#ce",next:"pop"},{defaultToken:"doc.comment.ahk"}]},{token:"keyword.command.ahk",regex:"(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b",caseInsensitive:!0},{token:"keyword.control.ahk",regex:"(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b",caseInsensitive:!0},{token:"support.function.ahk",regex:"(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b",caseInsensitive:!0},{token:"variable.predefined.ahk",regex:"(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b",caseInsensitive:!0},{token:"support.constant.ahk",regex:"(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b",caseInsensitive:!0},{token:"variable.parameter",regex:"(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b",caseInsensitive:!0},{keywordMap:{"constant.language":e},regex:"\\w+\\b"},{keywordMap:{"variable.function":t},regex:"@\\w+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword.operator.ahk",regex:"=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-"},{token:"punctuation.ahk",regex:"#|`|::|,|\\{|\\}|\\(|\\)|\\%"},{token:["punctuation.quote.double","string.quoted.ahk","punctuation.quote.double"],regex:'(")((?:[^"]|"")*)(")'},{token:["label.ahk","punctuation.definition.label.ahk"],regex:"^([^: ]+)(:)(?!:)"}]},this.normalizeRules()};s.metaData={name:"AutoHotKey",scopeName:"source.ahk",fileTypes:["ahk"],foldingStartMarker:"^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))",foldingStopMarker:"^\\s*\\*/|^\\s*\\}"},r.inherits(s,i),t.AutoHotKeyHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/autohotkey",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/autohotkey_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./autohotkey_highlight_rules").AutoHotKeyHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/autohotkey"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-batchfile.js b/js/ace/mode-batchfile.js
new file mode 100644
index 0000000..df54571
--- /dev/null
+++ b/js/ace/mode-batchfile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"keyword.command.dosbatch",regex:"\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b",caseInsensitive:!0},{token:"keyword.control.statement.dosbatch",regex:"\\b(?:goto|call|exit)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.if.dosbatch",regex:"\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b",caseInsensitive:!0},{token:"keyword.control.conditional.dosbatch",regex:"\\b(?:if|else)\\b",caseInsensitive:!0},{token:"keyword.control.repeat.dosbatch",regex:"\\bfor\\b",caseInsensitive:!0},{token:"keyword.operator.dosbatch",regex:"\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b"},{token:["doc.comment","comment"],regex:"(?:^|\\b)(rem)($|\\s.*$)",caseInsensitive:!0},{token:"comment.line.colons.dosbatch",regex:"::.*$"},{include:"variable"},{token:"punctuation.definition.string.begin.shell",regex:'"',push:[{token:"punctuation.definition.string.end.shell",regex:'"',next:"pop"},{include:"variable"},{defaultToken:"string.quoted.double.dosbatch"}]},{token:"keyword.operator.pipe.dosbatch",regex:"[|]"},{token:"keyword.operator.redirect.shell",regex:"&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>"}],variable:[{token:"constant.numeric",regex:"%%\\w+|%[*\\d]|%\\w+%"},{token:"constant.numeric",regex:"%~\\d+"},{token:["markup.list","constant.other","markup.list"],regex:"(%)(\\w+)(%?)"}]},this.normalizeRules()};s.metaData={name:"Batch File",scopeName:"source.dosbatch",fileTypes:["bat"]},r.inherits(s,i),t.BatchFileHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./batchfile_highlight_rules").BatchFileHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="::",this.blockComment="",this.$id="ace/mode/batchfile"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-c9search.js b/js/ace/mode-c9search.js
new file mode 100644
index 0000000..508198c
--- /dev/null
+++ b/js/ace/mode-c9search.js
@@ -0,0 +1 @@
+ace.define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function o(e,t){try{return new RegExp(e,t)}catch(n){}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,u=function(){this.$rules={start:[{tokenNames:["c9searchresults.constant.numeric","c9searchresults.text","c9searchresults.text","c9searchresults.keyword"],regex:"(^\\s+[0-9]+)(:\\s)(.+)",onMatch:function(e,t,n){var r=this.splitRegex.exec(e),i=this.tokenNames,s=[{type:i[0],value:r[1]},{type:i[1],value:r[2]}],o=n[1],u=r[3],a,f=0;if(o&&o.exec){o.lastIndex=0;while(a=o.exec(u)){var l=u.substring(f,a.index);f=o.lastIndex,l&&s.push({type:i[2],value:l});if(a[0])s.push({type:i[3],value:a[0]});else if(!l)break}}return f<u.length&&s.push({type:i[2],value:u.substr(f)}),s}},{token:["string","text"],regex:"(\\S.*)(:$)"},{regex:"Searching for .*$",onMatch:function(e,t,n){var r=e.split("");if(r.length<3)return"text";var s,u,a,f=0,l=[{value:r[f++]+"'",type:"text"},{value:u=r[f++],type:"text"},{value:"'"+r[f++],type:"text"}];r[2]!==" in"&&(a=r[f],l.push({value:"'"+r[f++]+"'",type:"text"},{value:r[f++],type:"text"})),l.push({value:" "+r[f++]+" ",type:"text"}),r[f+1]?(s=r[f+1],l.push({value:"("+r[f+1]+")",type:"text"}),f+=1):f-=1;while(f++<r.length)r[f]&&l.push({value:r[f],type:"text"});a&&(u=a,s=""),u&&(/regex/.test(s)||(u=i.escapeRegExp(u)),/whole/.test(s)&&(u="\\b"+u+"\\b"));var c=u&&o("("+u+")",/ sensitive/.test(s)?"g":"ig");return c&&(n[0]=t,n[1]=c),l}},{regex:"\\d+",token:"constant.numeric"}]}};r.inherits(u,s),t.C9SearchHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^(\S.*\:|Searching for.*)$/,this.foldingStopMarker=/^(\s+|Found.*)$/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getAllLines(n),s=r[n],o=/^(Found.*|Searching for.*)$/,u=/^(\S.*\:|\s*)$/,a=o.test(s)?o:u,f=n,l=n;if(this.foldingStartMarker.test(s)){for(var c=n+1,h=e.getLength();c<h;c++)if(a.test(r[c]))break;l=c}else if(this.foldingStopMarker.test(s)){for(var c=n-1;c>=0;c--){s=r[c];if(a.test(s))break}f=c}if(f!=l){var p=s.length;return a===o&&(p=s.search(/\(Found[^)]+\)$|$/)),new i(f,p,l,0)}}}.call(o.prototype)}),ace.define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c9search_highlight_rules").C9SearchHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/c9search").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c9search"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-c_cpp.js b/js/ace/mode-c_cpp.js
new file mode 100644
index 0000000..34f2b21
--- /dev/null
+++ b/js/ace/mode-c_cpp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{defaultToken:"string"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{defaultToken:"string"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-cirru.js b/js/ace/mode-cirru.js
new file mode 100644
index 0000000..73fd5da
--- /dev/null
+++ b/js/ace/mode-cirru.js
@@ -0,0 +1 @@
+ace.define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"comment.line.double-dash",regex:/--/,next:"comment"},{token:"storage.modifier",regex:/\(/},{token:"storage.modifier",regex:/\,/,next:"line"},{token:"support.function",regex:/[^\(\)\"\s]+/,next:"line"},{token:"string.quoted.double",regex:/"/,next:"string"},{token:"storage.modifier",regex:/\)/}],comment:[{token:"comment.line.double-dash",regex:/\ +[^\n]+/,next:"start"}],string:[{token:"string.quoted.double",regex:/"/,next:"line"},{token:"constant.character.escape",regex:/\\/,next:"escape"},{token:"string.quoted.double",regex:/[^\\\"]+/}],escape:[{token:"constant.character.escape",regex:/./,next:"string"}],line:[{token:"constant.numeric",regex:/[\d\.]+/},{token:"markup.raw",regex:/^\s*/,next:"start"},{token:"storage.modifier",regex:/\$/,next:"start"},{token:"variable.parameter",regex:/[^\(\)\"\s]+/},{token:"storage.modifier",regex:/\(/,next:"start"},{token:"storage.modifier",regex:/\)/},{token:"markup.raw",regex:/^\ */,next:"start"},{token:"string.quoted.double",regex:/"/,next:"string"}]}};r.inherits(s,i),t.CirruHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./cirru_highlight_rules").CirruHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/cirru"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-clojure.js b/js/ace/mode-clojure.js
new file mode 100644
index 0000000..c1bc4f1
--- /dev/null
+++ b/js/ace/mode-clojure.js
@@ -0,0 +1 @@
+ace.define("ace/mode/clojure_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* *compile-path* *e *err* *file* *flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *source-path* *use-context-classloader* *warn-on-reflection* + - -> ->> .. / < <= = == > &gt; >= &gt;= accessor aclone add-classpath add-watch agent agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 bases bean bigdec bigint binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* butlast byte byte-array bytes cast char char-array char-escape-string char-name-string char? chars chunk chunk-append chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec decimal? declare definline defmacro defmethod defmulti defn defn- defonce defstruct delay delay? deliver deref derive descendants destructure disj disj! dissoc dissoc! distinct distinct? doall doc dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq eval even? every? false? ffirst file-seq filter find find-doc find-ns find-var first float float-array float? floats flush fn fn? fnext for force format future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator hash hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map? mapcat max max-key memfn memoize merge merge-with meta method-sig methods min min-key mod name namespace neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext num number? odd? or parents partial partition pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers primitives-classnames print print-ctor print-doc print-dup print-method print-namespace-doc print-simple print-special-doc print-str printf println println-str prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues quot rand rand-int range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string reduce ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure release-pending-sends rem remove remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest resultset-seq reverse reversible? rseq rsubseq second select-keys send send-off seq seq? seque sequence sequential? set set-validator! set? short short-array shorts shutdown-agents slurp some sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-form-anchor special-symbol? split-at split-with str stream? string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync syntax-symbol-anchor take take-last take-nth take-while test the-ns time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-dec unchecked-divide unchecked-inc unchecked-multiply unchecked-negate unchecked-remainder unchecked-subtract underive unquote unquote-splicing update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context with-local-vars with-meta with-open with-out-str with-precision xml-seq zero? zipmap",t="throw try var def do fn if let loop monitor-enter monitor-exit new quote recur set!",n="true false nil",r=this.createKeywordMapper({keyword:t,"constant.language":n,"support.function":e},"identifier",!1," ");this.$rules={start:[{token:"comment",regex:";.*$"},{token:"keyword",regex:"[\\(|\\)]"},{token:"keyword",regex:"[\\'\\(]"},{token:"keyword",regex:"[\\[|\\]]"},{token:"keyword",regex:"[\\{|\\}|\\#\\{|\\#\\}]"},{token:"keyword",regex:"[\\&]"},{token:"keyword",regex:"[\\#\\^\\{]"},{token:"keyword",regex:"[\\%]"},{token:"keyword",regex:"[@]"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"},{token:"string",regex:'"',next:"string"},{token:"constant",regex:/:[^()\[\]{}'"\^%`,;\s]+/},{token:"string.regexp",regex:'/#"(?:\\.|(?:\\")|[^""\n])*"/g'}],string:[{token:"constant.language.escape",regex:"\\\\.|\\\\$"},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"}]}};r.inherits(s,i),t.ClojureHighlightRules=s}),ace.define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\)/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\))/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){var t=e.match(/^(\s+)/);return t?t[1]:""}}).call(i.prototype),t.MatchingParensOutdent=i}),ace.define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./clojure_highlight_rules").ClojureHighlightRules,o=e("./matching_parens_outdent").MatchingParensOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.minorIndentFunctions=["defn","defn-","defmacro","def","deftest","testing"],this.$toIndent=function(e){return e.split("").map(function(e){return/\s/.exec(e)?e:" "}).join("")},this.$calculateIndent=function(e,t){var n=this.$getIndent(e),r=0,i,s;for(var o=e.length-1;o>=0;o--){s=e[o],s==="("?(r--,i=!0):s==="("||s==="["||s==="{"?(r--,i=!1):(s===")"||s==="]"||s==="}")&&r++;if(r<0)break}if(!(r<0&&i))return r<0&&!i?this.$toIndent(e.substring(0,o+1)):r>0?(n=n.substring(0,n.length-t.length),n):n;o+=1;var u=o,a="";for(;;){s=e[o];if(s===" "||s==="	")return this.minorIndentFunctions.indexOf(a)!==-1?this.$toIndent(e.substring(0,u-1)+t):this.$toIndent(e.substring(0,o+1));if(s===undefined)return this.$toIndent(e.substring(0,u-1)+t);a+=e[o],o++}},this.getNextLineIndent=function(e,t,n){return this.$calculateIndent(t,n)},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/clojure"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-cobol.js b/js/ace/mode-cobol.js
new file mode 100644
index 0000000..2f766c1
--- /dev/null
+++ b/js/ace/mode-cobol.js
@@ -0,0 +1 @@
+ace.define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\*.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.CobolHighlightRules=s}),ace.define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./cobol_highlight_rules").CobolHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="*",this.$id="ace/mode/cobol"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-coffee.js b/js/ace/mode-coffee.js
new file mode 100644
index 0000000..45505e5
--- /dev/null
+++ b/js/ace/mode-coffee.js
@@ -0,0 +1 @@
+ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes",n="true|false|null|undefined|NaN|Infinity",r="case|const|default|function|var|void|with|enum|export|implements|interface|let|package|private|protected|public|static|yield|__hasProp|slice|bind|indexOf",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()\"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\."},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"],function(e,t,n){"use strict";function l(){this.HighlightRules=r,this.$outdent=new i,this.foldingRules=new s}var r=e("./coffee_highlight_rules").CoffeeHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("./folding/coffee").FoldMode,o=e("../range").Range,u=e("./text").Mode,a=e("../worker/worker_client").WorkerClient,f=e("../lib/oop");f.inherits(l,u),function(){var e=/(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/,t=/^(\s*)#/,n=/^\s*###(?!#)/,r=/^\s*/;this.getNextLineIndent=function(t,n,r){var i=this.$getIndent(n),s=this.getTokenizer().getLineTokens(n,t).tokens;return(!s.length||s[s.length-1].type!=="comment")&&t==="start"&&e.test(n)&&(i+=r),i},this.toggleCommentLines=function(e,i,s,u){console.log("toggle");var a=new o(0,0,0,0);for(var f=s;f<=u;++f){var l=i.getLine(f);if(n.test(l))continue;t.test(l)?l=l.replace(t,"$1"):l=l.replace(r,"$&#"),a.end.row=a.start.row=f,a.end.column=l.length+1,i.replace(a,l)}},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/coffee_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/coffee"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-coldfusion.js b/js/ace/mode-coldfusion.js
new file mode 100644
index 0000000..516cea7
--- /dev/null
+++ b/js/ace/mode-coldfusion.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/coldfusion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=function(){s.call(this),this.embedTagRules(i,"cfjs-","cfscript"),this.normalizeRules()};r.inherits(o,s),t.ColdfusionHighlightRules=o}),ace.define("ace/mode/coldfusion",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html","ace/mode/coldfusion_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./html").Mode,o=e("./coldfusion_highlight_rules").ColdfusionHighlightRules,u="cfabort|cfapplication|cfargument|cfassociate|cfbreak|cfcache|cfcollection|cfcookie|cfdbinfo|cfdirectory|cfdump|cfelse|cfelseif|cferror|cfexchangecalendar|cfexchangeconnection|cfexchangecontact|cfexchangefilter|cfexchangetask|cfexit|cffeed|cffile|cfflush|cfftp|cfheader|cfhtmlhead|cfhttpparam|cfimage|cfimport|cfinclude|cfindex|cfinsert|cfinvokeargument|cflocation|cflog|cfmailparam|cfNTauthenticate|cfobject|cfobjectcache|cfparam|cfpdfformparam|cfprint|cfprocparam|cfprocresult|cfproperty|cfqueryparam|cfregistry|cfreportparam|cfrethrow|cfreturn|cfschedule|cfsearch|cfset|cfsetting|cfthrow|cfzipparam)".split("|"),a=function(){s.call(this),this.HighlightRules=o};r.inherits(a,s),function(){this.voidElements=r.mixin(i.arrayToMap(u),this.voidElements),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/coldfusion"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-csharp.js b/js/ace/mode-csharp.js
new file mode 100644
index 0000000..41b4981
--- /dev/null
+++ b/js/ace/mode-csharp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic","constant.language":"null|true|false"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:/'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/},{token:"string",start:'"',end:'"|$',next:[{token:"constant.language.escape",regex:/\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/},{token:"invalid",regex:/\\./}]},{token:"string",start:'@"',end:'"',next:[{token:"constant.language.escape",regex:'""'}]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"keyword",regex:"^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")]),this.normalizeRules()};r.inherits(o,s),t.CSharpHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/folding/csharp",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./cstyle").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.usingRe=/^\s*using \S/,this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=this.getFoldWidgetBase(e,t,n);if(!r){var i=e.getLine(n);if(/^\s*#region\b/.test(i))return"start";var s=this.usingRe;if(s.test(i)){var o=e.getLine(n-1),u=e.getLine(n+1);if(!s.test(o)&&s.test(u))return"start"}}return r},this.getFoldWidgetRange=function(e,t,n){var r=this.getFoldWidgetRangeBase(e,t,n);if(r)return r;var i=e.getLine(n);if(this.usingRe.test(i))return this.getUsingStatementBlock(e,i,n);if(/^\s*#region\b/.test(i))return this.getRegionBlock(e,i,n)},this.getUsingStatementBlock=function(e,t,n){var r=t.match(this.usingRe)[0].length-1,s=e.getLength(),o=n,u=n;while(++n<s){t=e.getLine(n);if(/^\s*$/.test(t))continue;if(!this.usingRe.test(t))break;u=n}if(u>o){var a=e.getLine(u).length;return new i(o,r,u,a)}},this.getRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/csharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csharp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/csharp"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./csharp_highlight_rules").CSharpHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/csharp").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/csharp"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-css.js b/js/ace/mode-css.js
new file mode 100644
index 0000000..75e889a
--- /dev/null
+++ b/js/ace/mode-css.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-curly.js b/js/ace/mode-curly.js
new file mode 100644
index 0000000..50dd3c7
--- /dev/null
+++ b/js/ace/mode-curly.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/curly_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this),this.$rules.start.unshift({token:"variable",regex:"{{",push:"curly-start"}),this.$rules["curly-start"]=[{token:"variable",regex:"}}",next:"pop"}],this.normalizeRules()};r.inherits(s,i),t.CurlyHighlightRules=s}),ace.define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/html_highlight_rules","ace/mode/folding/html","ace/mode/curly_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("./html_highlight_rules").HtmlHighlightRules,u=e("./folding/html").FoldMode,a=e("./curly_highlight_rules").CurlyHighlightRules,f=function(){i.call(this),this.HighlightRules=a,this.$outdent=new s,this.foldingRules=new u};r.inherits(f,i),function(){this.$id="ace/mode/curly"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-d.js b/js/ace/mode-d.js
new file mode 100644
index 0000000..bbc2642
--- /dev/null
+++ b/js/ace/mode-d.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/d_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters",t="break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|return|switch|while|catch|try|throw|finally|version|assert|unittest|with",n="auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|cfloat|creal|cdouble|cent|ifloat|ireal|idouble|int|long|short|void|uint|ulong|ushort|ucent|function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object",r="abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|ref|immutable|lazy|nothrow|override|package|pragma|private|protected|public|pure|scope|shared|__gshared|synchronized|static|volatile",s="class|struct|union|template|interface|enum|macro",o={token:"constant.language.escape",regex:"\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))"},u="null|true|false|__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__",a="/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#",f=this.$keywords=this.createKeywordMapper({"keyword.modifier":r,"keyword.control":t,"keyword.type":n,keyword:e,"keyword.storage":s,punctation:"\\.|\\,|;|\\.\\.|\\.\\.\\.","keyword.operator":a,"constant.language":u},"identifier"),l="[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"star-comment"},{token:"comment.shebang",regex:"^s*#!.*"},{token:"comment",regex:"\\/\\+",next:"plus-comment"},{onMatch:function(e,t,n){return n.unshift(this.next,e.substr(2)),"string"},regex:'q"(?:[\\[\\(\\{\\<]+)',next:"operator-heredoc-string"},{onMatch:function(e,t,n){return n.unshift(this.next,e.substr(2)),"string"},regex:'q"(?:[a-zA-Z_]+)$',next:"identifier-heredoc-string"},{token:"string",regex:'[xr]?"',next:"quote-string"},{token:"string",regex:"[xr]?`",next:"backtick-string"},{token:"string",regex:"[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?"},{token:["keyword","text","paren.lparen"],regex:/(asm)(\s*)({)/,next:"d-asm"},{token:["keyword","text","paren.lparen","constant.language"],regex:"(__traits)(\\s*)(\\()("+l+")"},{token:["keyword","text","variable.module"],regex:"(import|module)(\\s+)((?:"+l+"\\.?)*)"},{token:["keyword.storage","text","entity.name.type"],regex:"("+s+")(\\s*)("+l+")"},{token:["keyword","text","variable.storage","text"],regex:"(alias|typedef)(\\s*)("+l+")(\\s*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b"},{token:"entity.other.attribute-name",regex:"@"+l},{token:f,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:a},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\.|\\:"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],"star-comment":[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],"plus-comment":[{token:"comment",regex:"\\+\\/",next:"start"},{defaultToken:"comment"}],"quote-string":[o,{token:"string",regex:'"[cdw]?',next:"start"},{defaultToken:"string"}],"backtick-string":[o,{token:"string",regex:"`[cdw]?",next:"start"},{defaultToken:"string"}],"operator-heredoc-string":[{onMatch:function(e,t,n){e=e.substring(e.length-2,e.length-1);var r={">":"<","]":"[",")":"(","}":"{"};return Object.keys(r).indexOf(e)!=-1&&(e=r[e]),e!=n[1]?"string":(n.shift(),n.shift(),"string")},regex:'(?:[\\]\\)}>]+)"',next:"start"},{token:"string",regex:"[^\\]\\)}>]+"}],"identifier-heredoc-string":[{onMatch:function(e,t,n){return e=e.substring(0,e.length-1),e!=n[1]?"string":(n.shift(),n.shift(),"string")},regex:'^(?:[A-Za-z_][a-zA-Z0-9]+)"',next:"start"},{token:"string",regex:"[^\\]\\)}>]+"}],"d-asm":[{token:"paren.rparen",regex:"\\}",next:"start"},{token:"keyword.instruction",regex:"[a-zA-Z]+",next:"d-asm-instruction"},{token:"text",regex:"\\s+"}],"d-asm-instruction":[{token:"constant.language",regex:/AL|AH|AX|EAX|BL|BH|BX|EBX|CL|CH|CX|ECX|DL|DH|DX|EDX|BP|EBP|SP|ESP|DI|EDI|SI|ESI/i},{token:"identifier",regex:"[a-zA-Z]+"},{token:"string",regex:'".*"'},{token:"comment",regex:"//.*$"},{token:"constant.numeric",regex:"[0-9.xA-F]+"},{token:"punctuation.operator",regex:"\\,"},{token:"punctuation.operator",regex:";",next:"d-asm"},{token:"text",regex:"\\s+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};o.metaData={comment:"D language",fileTypes:["d","di"],firstLineMatch:"^#!.*\\b[glr]?dmd\\b.",foldingStartMarker:"(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))",foldingStopMarker:"(?<!\\*)\\*\\*/|^\\s*\\}",keyEquivalent:"^~D",name:"D",scopeName:"source.d"},r.inherits(o,s),t.DHighlightRules=o}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/d",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/d_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./d_highlight_rules").DHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/d"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-dart.js b/js/ace/mode-dart.js
new file mode 100644
index 0000000..0ce4a2e
--- /dev/null
+++ b/js/ace/mode-dart.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{defaultToken:"string"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{defaultToken:"string"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="true|false|null",t="this|super",n="try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await",r="abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum",s="static|final|const",o="void|bool|num|int|double|dynamic|var|String",u=this.createKeywordMapper({"constant.language.dart":e,"variable.language.dart":t,"keyword.control.dart":n,"keyword.declaration.dart":r,"storage.modifier.dart":s,"storage.type.primitive.dart":o},"identifier"),a={token:"string",regex:".+"};this.$rules={start:[{token:"comment",regex:/\/\/.*$/},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:["meta.preprocessor.script.dart"],regex:"^(#!.*)$"},{token:"keyword.other.import.dart",regex:"(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)"},{token:["keyword.other.import.dart","text"],regex:"(?:\\b)(prefix)(\\s*:)"},{regex:"\\bas\\b",token:"keyword.cast.dart"},{regex:"\\?|:",token:"keyword.control.ternary.dart"},{regex:"(?:\\b)(is\\!?)(?:\\b)",token:["keyword.operator.dart"]},{regex:"(<<|>>>?|~|\\^|\\||&)",token:["keyword.operator.bitwise.dart"]},{regex:"((?:&|\\^|\\||<<|>>>?)=)",token:["keyword.operator.assignment.bitwise.dart"]},{regex:"(===?|!==?|<=?|>=?)",token:["keyword.operator.comparison.dart"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.dart"]},{regex:"=",token:"keyword.operator.assignment.dart"},{token:"string",regex:"'''",next:"qdoc"},{token:"string",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{regex:"(\\-\\-|\\+\\+)",token:["keyword.operator.increment-decrement.dart"]},{regex:"(\\-|\\+|\\*|\\/|\\~\\/|%)",token:["keyword.operator.arithmetic.dart"]},{regex:"(!|&&|\\|\\|)",token:["keyword.operator.logical.dart"]},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qdoc:[{token:"string",regex:".*?'''",next:"start"},a],qqdoc:[{token:"string",regex:'.*?"""',next:"start"},a],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"start"},a],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"start"},a]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.DartHighlightRules=o}),ace.define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./dart_highlight_rules").DartHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/dart"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-diff.js b/js/ace/mode-diff.js
new file mode 100644
index 0000000..7760fe7
--- /dev/null
+++ b/js/ace/mode-diff.js
@@ -0,0 +1 @@
+ace.define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{regex:"^(?:\\*{15}|={67}|-{3}|\\+{3})$",token:"punctuation.definition.separator.diff",name:"keyword"},{regex:"^(@@)(\\s*.+?\\s*)(@@)(.*)$",token:["constant","constant.numeric","constant","comment.doc.tag"]},{regex:"^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$",token:["constant.numeric","punctuation.definition.range.diff","constant.function","constant.numeric","punctuation.definition.range.diff","invalid"],name:"meta."},{regex:"^(\\-{3}|\\+{3}|\\*{3})( .+)$",token:["constant.numeric","meta.tag"]},{regex:"^([!+>])(.*?)(\\s*)$",token:["support.constant","text","invalid"]},{regex:"^([<\\-])(.*?)(\\s*)$",token:["support.function","string","invalid"]},{regex:"^(diff)(\\s+--\\w+)?(.+?)( .+)?$",token:["variable","variable","keyword","variable"]},{regex:"^Index.+$",token:"variable"},{regex:"^\\s+$",token:"text"},{regex:"\\s*$",token:"invalid"},{defaultToken:"invisible",caseInsensitive:!0}]}};r.inherits(s,i),t.DiffHighlightRules=s}),ace.define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(e,t){this.regExpList=e,this.flag=t,this.foldingStartMarker=RegExp("^("+e.join("|")+")",this.flag)};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i={row:n,column:r.length},o=this.regExpList;for(var u=1;u<=o.length;u++){var a=RegExp("^("+o.slice(0,u).join("|")+")",this.flag);if(a.test(r))break}for(var f=e.getLength();++n<f;){r=e.getLine(n);if(a.test(r))break}if(n==i.row+1)return;return s.fromPoints(i,{row:n-1,column:r.length})}}.call(o.prototype)}),ace.define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/diff_highlight_rules","ace/mode/folding/diff"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./diff_highlight_rules").DiffHighlightRules,o=e("./folding/diff").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o(["diff","index","\\+{3}","@@|\\*{5}"],"i")};r.inherits(u,i),function(){this.$id="ace/mode/diff"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-django.js b/js/ace/mode-django.js
new file mode 100644
index 0000000..bf089c0
--- /dev/null
+++ b/js/ace/mode-django.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./html").Mode,s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){this.$rules={start:[{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant",regex:"[0-9]+"},{token:"variable",regex:"[-_a-zA-Z0-9:]+"}],comment:[{token:"comment.block",merge:!0,regex:".+?"}],tag:[{token:"entity.name.function",regex:"[a-zA-Z][_a-zA-Z0-9]*",next:"start"}]}};r.inherits(u,o);var a=function(){this.$rules=(new s).getRules();for(var e in this.$rules)this.$rules[e].unshift({token:"comment.line",regex:"\\{#.*?#\\}"},{token:"comment.block",regex:"\\{\\%\\s*comment\\s*\\%\\}",merge:!0,next:"django-comment"},{token:"constant.language",regex:"\\{\\{",next:"django-start"},{token:"constant.language",regex:"\\{\\%",next:"django-tag"}),this.embedRules(u,"django-",[{token:"comment.block",regex:"\\{\\%\\s*endcomment\\s*\\%\\}",merge:!0,next:"start"},{token:"constant.language",regex:"\\%\\}",next:"start"},{token:"constant.language",regex:"\\}\\}",next:"start"}])};r.inherits(a,s);var f=function(){i.call(this),this.HighlightRules=a};r.inherits(f,i),function(){this.$id="ace/mode/django"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-dockerfile.js b/js/ace/mode-dockerfile.js
new file mode 100644
index 0000000..c6792ce
--- /dev/null
+++ b/js/ace/mode-dockerfile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:(?:\\$"+l+")|(?:"+l+"=))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"constant",regex:/\$\w+/},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^	+"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"variable.language",regex:h},{token:"variable",regex:c},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new a};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh"}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/dockerfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/sh_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./sh_highlight_rules").ShHighlightRules,s=function(){i.call(this);var e=this.$rules.start;for(var t=0;t<e.length;t++)if(e[t].token=="variable.language"){e.splice(t,0,{token:"constant.language",regex:"(?:^(?:FROM|MAINTAINER|RUN|CMD|EXPOSE|ENV|ADD|ENTRYPOINT|VOLUME|USER|WORKDIR|ONBUILD|COPY)\\b)",caseInsensitive:!0});break}};r.inherits(s,i),t.DockerfileHighlightRules=s}),ace.define("ace/mode/dockerfile",["require","exports","module","ace/lib/oop","ace/mode/sh","ace/mode/dockerfile_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./sh").Mode,s=e("./dockerfile_highlight_rules").DockerfileHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/dockerfile"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-dot.js b/js/ace/mode-dot.js
new file mode 100644
index 0000000..bc0dfef
--- /dev/null
+++ b/js/ace/mode-dot.js
@@ -0,0 +1 @@
+ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/dot_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./doc_comment_highlight_rules").DocCommentHighlightRules,u=function(){var e=i.arrayToMap("strict|node|edge|graph|digraph|subgraph".split("|")),t=i.arrayToMap("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z".split("|"));this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/#.*$/},{token:"comment",merge:!0,regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/},{token:"keyword.operator",regex:/\+|=|\->/},{token:"punctuation.operator",regex:/,|;/},{token:"paren.lparen",regex:/[\[{]/},{token:"paren.rparen",regex:/[\]}]/},{token:"comment",regex:/^#!.*$/},{token:function(n){return e.hasOwnProperty(n.toLowerCase())?"keyword":t.hasOwnProperty(n.toLowerCase())?"variable":"text"},regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:".*?\\*\\/",merge:!0,next:"start"},{token:"comment",merge:!0,regex:".+"}],qqstring:[{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}],qstring:[{token:"string",regex:"[^'\\\\]+",merge:!0},{token:"string",regex:"\\\\$",next:"qstring",merge:!0},{token:"string",regex:"'|$",next:"start",merge:!0}]}};r.inherits(u,s),t.DotHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/dot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matching_brace_outdent","ace/mode/dot_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./matching_brace_outdent").MatchingBraceOutdent,o=e("./dot_highlight_rules").DotHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.$outdent=new s,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/dot"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-eiffel.js b/js/ace/mode-eiffel.js
new file mode 100644
index 0000000..e0d358d
--- /dev/null
+++ b/js/ace/mode-eiffel.js
@@ -0,0 +1 @@
+ace.define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="across|agent|alias|all|attached|as|assign|attribute|check|class|convert|create|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|Precursor|redefine|rename|require|rescue|retry|select|separate|some|then|undefine|until|variant|when",t="and|implies|or|xor",n="Void",r="True|False",i="Current|Result",s=this.createKeywordMapper({"constant.language":n,"constant.language.boolean":r,"variable.language":i,"keyword.operator":t,keyword:e},"identifier",!0),o=/(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/;this.$rules={start:[{token:"string.quoted.other",regex:/"\[/,next:"aligned_verbatim_string"},{token:"string.quoted.other",regex:/"\{/,next:"non-aligned_verbatim_string"},{token:"string.quoted.double",regex:/"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/},{token:"comment.line.double-dash",regex:/--.*/},{token:"constant.character",regex:/'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/},{token:"constant.numeric",regex:/\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/},{token:"constant.numeric",regex:/(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/},{token:"paren.lparen",regex:/[\[({]|<<|\|\(/},{token:"paren.rparen",regex:/[\])}]|>>|\|\)/},{token:"keyword.operator",regex:/:=|->|\.(?=\w)|[;,:?]/},{token:"keyword.operator",regex:/\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/},{token:function(e){var t=s(e);return t==="identifier"&&e===e.toUpperCase()&&(t="entity.name.type"),t},regex:/[a-zA-Z][a-zA-Z\d_]*\b/},{token:"text",regex:/\s+/}],aligned_verbatim_string:[{token:"string",regex:/]"/,next:"start"},{token:"string",regex:o}],"non-aligned_verbatim_string":[{token:"string.quoted.other",regex:/}"/,next:"start"},{token:"string.quoted.other",regex:o}]}};r.inherits(s,i),t.EiffelHighlightRules=s}),ace.define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./eiffel_highlight_rules").EiffelHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/eiffel"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-ejs.js b/js/ace/mode-ejs.js
new file mode 100644
index 0000000..3b7eab6
--- /dev/null
+++ b/js/ace/mode-ejs.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/coffee").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.$id="ace/mode/ruby"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=function(e,t){i.call(this),e||(e="(?:<%|<\\?|{{)"),t||(t="(?:%>|\\?>|}})");for(var n in this.$rules)this.$rules[n].unshift({token:"markup.list.meta.tag",regex:e+"(?![>}])[-=]?",push:"ejs-start"});this.embedRules(s,"ejs-"),this.$rules["ejs-start"].unshift({token:"markup.list.meta.tag",regex:"-?"+t,next:"pop"},{token:"comment",regex:"//.*?"+t,next:"pop"}),this.$rules["ejs-no_regex"].unshift({token:"markup.list.meta.tag",regex:"-?"+t,next:"pop"},{token:"comment",regex:"//.*?"+t,next:"pop"}),this.normalizeRules()};r.inherits(o,i),t.EjsHighlightRules=o;var r=e("../lib/oop"),u=e("./html").Mode,a=e("./javascript").Mode,f=e("./css").Mode,l=e("./ruby").Mode,c=function(){u.call(this),this.HighlightRules=o,this.createModeDelegates({"js-":a,"css-":f,"ejs-":a})};r.inherits(c,u),function(){this.$id="ace/mode/ejs"}.call(c.prototype),t.Mode=c})
\ No newline at end of file
diff --git a/js/ace/mode-elixir.js b/js/ace/mode-elixir.js
new file mode 100644
index 0000000..f7eec02
--- /dev/null
+++ b/js/ace/mode-elixir.js
@@ -0,0 +1 @@
+ace.define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.module.elixir","keyword.control.module.elixir","meta.module.elixir","entity.name.type.module.elixir"],regex:"^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc (?:~[a-z])?"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:'@(?:module|type)?doc ~[A-Z]"""',push:[{token:"comment.documentation.heredoc",regex:'\\s*"""',next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc (?:~[a-z])?'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.heredoc",regex:"@(?:module|type)?doc ~[A-Z]'''",push:[{token:"comment.documentation.heredoc",regex:"\\s*'''",next:"pop"},{defaultToken:"comment.documentation.heredoc"}],comment:"@doc with heredocs is treated as documentation"},{token:"comment.documentation.false",regex:"@(?:module|type)?doc false",comment:"@doc false is treated as documentation"},{token:"comment.documentation.string",regex:'@(?:module|type)?doc "',push:[{token:"comment.documentation.string",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"comment.documentation.string"}],comment:"@doc with string is treated as documentation"},{token:"keyword.control.elixir",regex:"\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])"},{token:"keyword.operator.elixir",regex:"\\b(?:and|not|or|when|xor|in|inlist|inbits)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\.)\\b(and|not|or|when|xor|in|inlist|inbits)\\b",comment:" as above, just doesn't need a 'end' and does a logic operation"},{token:"constant.language.elixir",regex:"\\b(?:nil|true|false)\\b(?![?!])"},{token:"variable.language.elixir",regex:"\\b__(?:CALLER|ENV|MODULE|DIR)__\\b(?![?!])"},{token:["punctuation.definition.variable.elixir","variable.other.readwrite.module.elixir"],regex:"(@)([a-zA-Z_]\\w*)"},{token:["punctuation.definition.variable.elixir","variable.other.anonymous.elixir"],regex:"(&)(\\d*)"},{token:"variable.other.constant.elixir",regex:"\\b[A-Z]\\w*\\b"},{token:"constant.numeric.elixir",regex:"\\b(?:0x[\\da-fA-F](?:_?[\\da-fA-F])*|\\d(?:_?\\d)*(?:\\.(?![^[:space:][:digit:]])(?:_?\\d)*)?(?:[eE][-+]?\\d(?:_?\\d)*)?|0b[01]+|0o[0-7]+)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(0x\\h(?>_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b"},{token:"punctuation.definition.constant.elixir",regex:":'",push:[{token:"punctuation.definition.constant.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.single-quoted.elixir"}]},{token:"punctuation.definition.constant.elixir",regex:':"',push:[{token:"punctuation.definition.constant.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"constant.other.symbol.double-quoted.elixir"}]},{token:"punctuation.definition.string.begin.elixir",regex:"(?:''')",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>''')",push:[{token:"punctuation.definition.string.end.elixir",regex:"^\\s*'''",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.heredoc.elixir"}],comment:"Single-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:"'",push:[{token:"punctuation.definition.string.end.elixir",regex:"'",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"support.function.variable.quoted.single.elixir"}],comment:"single quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'(?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'(?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs"},{token:"punctuation.definition.string.begin.elixir",regex:'"',push:[{token:"punctuation.definition.string.end.elixir",regex:'"',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.elixir"}],comment:"double quoted string (allows for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[a-z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[a-z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.quoted.double.heredoc.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[a-z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{include:"#interpolated_elixir"},{include:"#escaped_char"},{include:"#escaped_char"},{defaultToken:"string.interpolated.elixir"}],comment:"sigil (allow for interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:'~[A-Z](?:""")',TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:'~[A-Z](?>""")',push:[{token:"punctuation.definition.string.end.elixir",regex:'^\\s*"""',next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"Double-quoted heredocs sigils"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\{",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\}[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\[",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\<",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\>[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z]\\(",push:[{token:"punctuation.definition.string.end.elixir",regex:"\\)[a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:"punctuation.definition.string.begin.elixir",regex:"~[A-Z][^\\w]",push:[{token:"punctuation.definition.string.end.elixir",regex:"[^\\w][a-z]*",next:"pop"},{defaultToken:"string.quoted.other.literal.upper.elixir"}],comment:"sigil (without interpolation)"},{token:["punctuation.definition.constant.elixir","constant.other.symbol.elixir"],regex:"(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",comment:"symbols"},{token:"punctuation.definition.constant.elixir",regex:"(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",comment:"symbols"},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(#)(.*)"},{token:"constant.numeric.elixir",regex:"\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|[^xMC])|[^\\s\\\\])",comment:'\n			matches questionmark-letters.\n\n			examples (1st alternation = hex):\n			?\\x1     ?\\x61\n\n			examples (2rd alternation = escaped):\n			?\\n      ?\\b\n\n			examples (3rd alternation = normal):\n			?a       ?A       ?0 \n			?*       ?"       ?( \n			?.       ?#\n			\n			the negative lookbehind prevents against matching\n			p(42.tainted?)\n			'},{token:"keyword.operator.assignment.augmented.elixir",regex:"\\+=|\\-=|\\|\\|=|~=|&&="},{token:"keyword.operator.comparison.elixir",regex:"===?|!==?|<=?|>=?"},{token:"keyword.operator.bitwise.elixir",regex:"\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}"},{token:"keyword.operator.logical.elixir",regex:"!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",originalRegex:"(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b"},{token:"keyword.operator.arithmetic.elixir",regex:"\\*|\\+|\\-|/"},{token:"keyword.operator.other.elixir",regex:"\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>"},{token:"keyword.operator.assignment.elixir",regex:"="},{token:"punctuation.separator.other.elixir",regex:":"},{token:"punctuation.separator.statement.elixir",regex:"\\;"},{token:"punctuation.separator.object.elixir",regex:","},{token:"punctuation.separator.method.elixir",regex:"\\."},{token:"punctuation.section.scope.elixir",regex:"\\{|\\}"},{token:"punctuation.section.array.elixir",regex:"\\[|\\]"},{token:"punctuation.section.function.elixir",regex:"\\(|\\)"}],"#escaped_char":[{token:"constant.character.escape.elixir",regex:"\\\\(?:x[\\da-fA-F]{1,2}|.)"}],"#interpolated_elixir":[{token:["source.elixir.embedded.source","source.elixir.embedded.source.empty"],regex:"(#\\{)(\\})"},{todo:{token:"punctuation.section.embedded.elixir",regex:"#\\{",push:[{token:"punctuation.section.embedded.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"},{include:"$self"},{defaultToken:"source.elixir.embedded.source"}]}}],"#nest_curly_and_self":[{token:"punctuation.section.scope.elixir",regex:"\\{",push:[{token:"punctuation.section.scope.elixir",regex:"\\}",next:"pop"},{include:"#nest_curly_and_self"}]},{include:"$self"}],"#regex_sub":[{include:"#interpolated_elixir"},{include:"#escaped_char"},{token:["punctuation.definition.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","string.regexp.arbitrary-repitition.elixir","punctuation.definition.arbitrary-repitition.elixir"],regex:"(\\{)(\\d+)((?:,\\d+)?)(\\})"},{token:"punctuation.definition.character-class.elixir",regex:"\\[(?:\\^?\\])?",push:[{token:"punctuation.definition.character-class.elixir",regex:"\\]",next:"pop"},{include:"#escaped_char"},{defaultToken:"string.regexp.character-class.elixir"}]},{token:"punctuation.definition.group.elixir",regex:"\\(",push:[{token:"punctuation.definition.group.elixir",regex:"\\)",next:"pop"},{include:"#regex_sub"},{defaultToken:"string.regexp.group.elixir"}]},{token:["punctuation.definition.comment.elixir","comment.line.number-sign.elixir"],regex:"(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)",originalRegex:"(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",comment:"We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags."}]},this.normalizeRules()};s.metaData={comment:"Textmate bundle for Elixir Programming Language.",fileTypes:["ex","exs"],firstLineMatch:"^#!/.*\\belixir",foldingStartMarker:"(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",foldingStopMarker:"^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",keyEquivalent:"^~E",name:"Elixir",scopeName:"source.elixir"},r.inherits(s,i),t.ElixirHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./elixir_highlight_rules").ElixirHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/elixir"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-elm.js b/js/ace/mode-elm.js
new file mode 100644
index 0000000..4bc2e72
--- /dev/null
+++ b/js/ace/mode-elm.js
@@ -0,0 +1 @@
+ace.define("ace/mode/elm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({keyword:"as|case|class|data|default|deriving|do|else|export|foreign|hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|open|then|type|where|_|port|\u03bb"},"identifier"),t=/\\(\d+|['"\\&trnbvf])/,n=/[a-z_]/.source,r=/[A-Z]/.source,i=/[a-z_A-Z0-9\']/.source;this.$rules={start:[{token:"string.start",regex:'"',next:"string"},{token:"string.character",regex:"'(?:"+t.source+"|.)'?"},{regex:/0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/,token:"constant.numeric"},{token:"keyword",regex:/\.\.|\||:|=|\\|\"|->|<-|\u2192/},{token:"keyword.operator",regex:/[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/},{token:"operator.punctuation",regex:/[,;`]/},{regex:r+i+"+\\.?",token:function(e){return e[e.length-1]=="."?"entity.name.function":"constant.language"}},{regex:"^"+n+i+"+",token:function(e){return"constant.language"}},{token:e,regex:"[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"},{regex:"{-#?",token:"comment.start",onMatch:function(e,t,n){return this.next=e.length==2?"blockComment":"docComment",this.token}},{token:"variable.language",regex:/\[markdown\|/,next:"markdown"},{token:"paren.lparen",regex:/[\[({]/},{token:"paren.rparen",regex:/[\])}]/}],markdown:[{regex:/\|\]/,next:"start"},{defaultToken:"string"}],blockComment:[{regex:"{-",token:"comment.start",push:"blockComment"},{regex:"-}",token:"comment.end",next:"pop"},{defaultToken:"comment"}],docComment:[{regex:"{-",token:"comment.start",push:"docComment"},{regex:"-}",token:"comment.end",next:"pop"},{defaultToken:"doc.comment"}],string:[{token:"constant.language.escape",regex:t},{token:"text",regex:/\\(\s|$)/,next:"stringGap"},{token:"string.end",regex:'"',next:"start"}],stringGap:[{token:"text",regex:/\\/,next:"string"},{token:"error",regex:"",next:"start"}]},this.normalizeRules()};r.inherits(s,i),t.ElmHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/elm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elm_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./elm_highlight_rules").ElmHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"{-",end:"-}"},this.$id="ace/mode/elm"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-erlang.js b/js/ace/mode-erlang.js
new file mode 100644
index 0000000..f6dc305
--- /dev/null
+++ b/js/ace/mode-erlang.js
@@ -0,0 +1 @@
+ace.define("ace/mode/erlang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#module-directive"},{include:"#import-export-directive"},{include:"#behaviour-directive"},{include:"#record-directive"},{include:"#define-directive"},{include:"#macro-directive"},{include:"#directive"},{include:"#function"},{include:"#everything-else"}],"#atom":[{token:"punctuation.definition.symbol.begin.erlang",regex:"'",push:[{token:"punctuation.definition.symbol.end.erlang",regex:"'",next:"pop"},{token:["punctuation.definition.escape.erlang","constant.other.symbol.escape.erlang","punctuation.definition.escape.erlang","constant.other.symbol.escape.erlang","constant.other.symbol.escape.erlang"],regex:"(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.atom.erlang",regex:"\\\\\\^?.?"},{defaultToken:"constant.other.symbol.quoted.single.erlang"}]},{token:"constant.other.symbol.unquoted.erlang",regex:"[a-z][a-zA-Z\\d@_]*"}],"#behaviour-directive":[{token:["meta.directive.behaviour.erlang","punctuation.section.directive.begin.erlang","meta.directive.behaviour.erlang","keyword.control.directive.behaviour.erlang","meta.directive.behaviour.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.behaviour.erlang","entity.name.type.class.behaviour.definition.erlang","meta.directive.behaviour.erlang","punctuation.definition.parameters.end.erlang","meta.directive.behaviour.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"}],"#binary":[{token:"punctuation.definition.binary.begin.erlang",regex:"<<",push:[{token:"punctuation.definition.binary.end.erlang",regex:">>",next:"pop"},{token:["punctuation.separator.binary.erlang","punctuation.separator.value-size.erlang"],regex:"(,)|(:)"},{include:"#internal-type-specifiers"},{include:"#everything-else"},{defaultToken:"meta.structure.binary.erlang"}]}],"#character":[{token:["punctuation.definition.character.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","constant.character.escape.erlang"],regex:"(\\$)(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.character.erlang",regex:"\\$\\\\\\^?.?"},{token:["punctuation.definition.character.erlang","constant.character.erlang"],regex:"(\\$)(\\S)"},{token:"invalid.illegal.character.erlang",regex:"\\$.?"}],"#comment":[{token:"punctuation.definition.comment.erlang",regex:"%.*$",push_:[{token:"comment.line.percentage.erlang",regex:"$",next:"pop"},{defaultToken:"comment.line.percentage.erlang"}]}],"#define-directive":[{token:["meta.directive.define.erlang","punctuation.section.directive.begin.erlang","meta.directive.define.erlang","keyword.control.directive.define.erlang","meta.directive.define.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.define.erlang","entity.name.function.macro.definition.erlang","meta.directive.define.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.define.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.directive.define.erlang"}]},{token:"meta.directive.define.erlang",regex:"(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.define.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{token:["text","punctuation.section.directive.begin.erlang","text","keyword.control.directive.define.erlang","text","punctuation.definition.parameters.begin.erlang","text","entity.name.function.macro.definition.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()",push:[{token:["punctuation.definition.parameters.end.erlang","text","punctuation.separator.parameters.erlang"],regex:"(\\))(\\s*)(,)",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:"punctuation.separator.define.erlang",regex:"\\|\\||\\||:|;|,|\\.|->"},{include:"#everything-else"},{defaultToken:"meta.directive.define.erlang"}]}],"#directive":[{token:["meta.directive.erlang","punctuation.section.directive.begin.erlang","meta.directive.erlang","keyword.control.directive.erlang","meta.directive.erlang","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.erlang","punctuation.section.directive.end.erlang"],regex:"(\\)?)(\\s*)(\\.)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.directive.erlang"}]},{token:["meta.directive.erlang","punctuation.section.directive.begin.erlang","meta.directive.erlang","keyword.control.directive.erlang","meta.directive.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)"}],"#everything-else":[{include:"#comment"},{include:"#record-usage"},{include:"#macro-usage"},{include:"#expression"},{include:"#keyword"},{include:"#textual-operator"},{include:"#function-call"},{include:"#tuple"},{include:"#list"},{include:"#binary"},{include:"#parenthesized-expression"},{include:"#character"},{include:"#number"},{include:"#atom"},{include:"#string"},{include:"#symbolic-operator"},{include:"#variable"}],"#expression":[{token:"keyword.control.if.erlang",regex:"\\bif\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.if.erlang"}]},{token:"keyword.control.case.erlang",regex:"\\bcase\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.case.erlang"}]},{token:"keyword.control.receive.erlang",regex:"\\breceive\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.receive.erlang"}]},{token:["keyword.control.fun.erlang","text","entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.erlang","text","punctuation.separator.function-arity.erlang"],regex:"\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)"},{token:"keyword.control.fun.erlang",regex:"\\bfun\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clauses.erlang",regex:";|(?=\\bend\\b)",next:"pop"},{include:"#internal-function-parts"}]},{include:"#everything-else"},{defaultToken:"meta.expression.fun.erlang"}]},{token:"keyword.control.try.erlang",regex:"\\btry\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.try.erlang"}]},{token:"keyword.control.begin.erlang",regex:"\\bbegin\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#internal-expression-punctuation"},{include:"#everything-else"},{defaultToken:"meta.expression.begin.erlang"}]},{token:"keyword.control.query.erlang",regex:"\\bquery\\b",push:[{token:"keyword.control.end.erlang",regex:"\\bend\\b",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.expression.query.erlang"}]}],"#function":[{token:["meta.function.erlang","entity.name.function.definition.erlang","meta.function.erlang"],regex:"^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()",push:[{token:"punctuation.terminator.function.erlang",regex:"\\.",next:"pop"},{token:["text","entity.name.function.erlang","text"],regex:"^(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(?=\\()"},{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clauses.erlang",regex:";|(?=\\.)",next:"pop"},{include:"#parenthesized-expression"},{include:"#internal-function-parts"}]},{include:"#everything-else"},{defaultToken:"meta.function.erlang"}]}],"#function-call":[{token:"meta.function-call.erlang",regex:"(?=(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|'[^']*')\\s*\\())",push:[{token:"punctuation.definition.parameters.end.erlang",regex:"\\)",next:"pop"},{token:["entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.guard.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()",push:[{token:"text",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:["entity.name.type.class.module.erlang","text","punctuation.separator.module-function.erlang","text","entity.name.function.erlang","text","punctuation.definition.parameters.begin.erlang"],regex:"(?:([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\()",push:[{token:"text",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{defaultToken:"meta.function-call.erlang"}]}],"#import-export-directive":[{token:["meta.directive.import.erlang","punctuation.section.directive.begin.erlang","meta.directive.import.erlang","keyword.control.directive.import.erlang","meta.directive.import.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.import.erlang","entity.name.type.class.module.erlang","meta.directive.import.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.import.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-function-list"},{defaultToken:"meta.directive.import.erlang"}]},{token:["meta.directive.export.erlang","punctuation.section.directive.begin.erlang","meta.directive.export.erlang","keyword.control.directive.export.erlang","meta.directive.export.erlang","punctuation.definition.parameters.begin.erlang"],regex:"^(\\s*)(-)(\\s*)(export)(\\s*)(\\()",push:[{token:["punctuation.definition.parameters.end.erlang","meta.directive.export.erlang","punctuation.section.directive.end.erlang"],regex:"(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-function-list"},{defaultToken:"meta.directive.export.erlang"}]}],"#internal-expression-punctuation":[{token:["punctuation.separator.clause-head-body.erlang","punctuation.separator.clauses.erlang","punctuation.separator.expressions.erlang"],regex:"(->)|(;)|(,)"}],"#internal-function-list":[{token:"punctuation.definition.list.begin.erlang",regex:"\\[",push:[{token:"punctuation.definition.list.end.erlang",regex:"\\]",next:"pop"},{token:["entity.name.function.erlang","text","punctuation.separator.function-arity.erlang"],regex:"([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(/)",push:[{token:"punctuation.separator.list.erlang",regex:",|(?=\\])",next:"pop"},{include:"#everything-else"}]},{include:"#everything-else"},{defaultToken:"meta.structure.list.function.erlang"}]}],"#internal-function-parts":[{token:"text",regex:"(?=\\()",push:[{token:"punctuation.separator.clause-head-body.erlang",regex:"->",next:"pop"},{token:"punctuation.definition.parameters.begin.erlang",regex:"\\(",push:[{token:"punctuation.definition.parameters.end.erlang",regex:"\\)",next:"pop"},{token:"punctuation.separator.parameters.erlang",regex:","},{include:"#everything-else"}]},{token:"punctuation.separator.guards.erlang",regex:",|;"},{include:"#everything-else"}]},{token:"punctuation.separator.expressions.erlang",regex:","},{include:"#everything-else"}],"#internal-record-body":[{token:"punctuation.definition.class.record.begin.erlang",regex:"\\{",push:[{token:"meta.structure.record.erlang",regex:"(?=\\})",next:"pop"},{token:["variable.other.field.erlang","variable.language.omitted.field.erlang","text","keyword.operator.assignment.erlang"],regex:"(?:([a-z][a-zA-Z\\d@_]*|'[^']*')|(_))(\\s*)(=|::)",push:[{token:"punctuation.separator.class.record.erlang",regex:",|(?=\\})",next:"pop"},{include:"#everything-else"}]},{token:["variable.other.field.erlang","text","punctuation.separator.class.record.erlang"],regex:"([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)((?:,)?)"},{include:"#everything-else"},{defaultToken:"meta.structure.record.erlang"}]}],"#internal-type-specifiers":[{token:"punctuation.separator.value-type.erlang",regex:"/",push:[{token:"text",regex:"(?=,|:|>>)",next:"pop"},{token:["storage.type.erlang","storage.modifier.signedness.erlang","storage.modifier.endianness.erlang","storage.modifier.unit.erlang","punctuation.separator.type-specifiers.erlang"],regex:"(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)"}]}],"#keyword":[{token:"keyword.control.erlang",regex:"\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b"}],"#list":[{token:"punctuation.definition.list.begin.erlang",regex:"\\[",push:[{token:"punctuation.definition.list.end.erlang",regex:"\\]",next:"pop"},{token:"punctuation.separator.list.erlang",regex:"\\||\\|\\||,"},{include:"#everything-else"},{defaultToken:"meta.structure.list.erlang"}]}],"#macro-directive":[{token:["meta.directive.ifdef.erlang","punctuation.section.directive.begin.erlang","meta.directive.ifdef.erlang","keyword.control.directive.ifdef.erlang","meta.directive.ifdef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.ifdef.erlang","entity.name.function.macro.erlang","meta.directive.ifdef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.ifdef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"},{token:["meta.directive.ifndef.erlang","punctuation.section.directive.begin.erlang","meta.directive.ifndef.erlang","keyword.control.directive.ifndef.erlang","meta.directive.ifndef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.ifndef.erlang","entity.name.function.macro.erlang","meta.directive.ifndef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.ifndef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"},{token:["meta.directive.undef.erlang","punctuation.section.directive.begin.erlang","meta.directive.undef.erlang","keyword.control.directive.undef.erlang","meta.directive.undef.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.undef.erlang","entity.name.function.macro.erlang","meta.directive.undef.erlang","punctuation.definition.parameters.end.erlang","meta.directive.undef.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)"}],"#macro-usage":[{token:["keyword.operator.macro.erlang","meta.macro-usage.erlang","entity.name.function.macro.erlang"],regex:"(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)"}],"#module-directive":[{token:["meta.directive.module.erlang","punctuation.section.directive.begin.erlang","meta.directive.module.erlang","keyword.control.directive.module.erlang","meta.directive.module.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.module.erlang","entity.name.type.class.module.definition.erlang","meta.directive.module.erlang","punctuation.definition.parameters.end.erlang","meta.directive.module.erlang","punctuation.section.directive.end.erlang"],regex:"^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)"}],"#number":[{token:"text",regex:"(?=\\d)",push:[{token:"text",regex:"(?!\\d)",next:"pop"},{token:["constant.numeric.float.erlang","punctuation.separator.integer-float.erlang","constant.numeric.float.erlang","punctuation.separator.float-exponent.erlang"],regex:"(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)"},{token:["constant.numeric.integer.binary.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.binary.erlang"],regex:"(2)(#)([0-1]+)"},{token:["constant.numeric.integer.base-3.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-3.erlang"],regex:"(3)(#)([0-2]+)"},{token:["constant.numeric.integer.base-4.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-4.erlang"],regex:"(4)(#)([0-3]+)"},{token:["constant.numeric.integer.base-5.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-5.erlang"],regex:"(5)(#)([0-4]+)"},{token:["constant.numeric.integer.base-6.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-6.erlang"],regex:"(6)(#)([0-5]+)"},{token:["constant.numeric.integer.base-7.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-7.erlang"],regex:"(7)(#)([0-6]+)"},{token:["constant.numeric.integer.octal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.octal.erlang"],regex:"(8)(#)([0-7]+)"},{token:["constant.numeric.integer.base-9.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-9.erlang"],regex:"(9)(#)([0-8]+)"},{token:["constant.numeric.integer.decimal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.decimal.erlang"],regex:"(10)(#)(\\d+)"},{token:["constant.numeric.integer.base-11.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-11.erlang"],regex:"(11)(#)([\\daA]+)"},{token:["constant.numeric.integer.base-12.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-12.erlang"],regex:"(12)(#)([\\da-bA-B]+)"},{token:["constant.numeric.integer.base-13.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-13.erlang"],regex:"(13)(#)([\\da-cA-C]+)"},{token:["constant.numeric.integer.base-14.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-14.erlang"],regex:"(14)(#)([\\da-dA-D]+)"},{token:["constant.numeric.integer.base-15.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-15.erlang"],regex:"(15)(#)([\\da-eA-E]+)"},{token:["constant.numeric.integer.hexadecimal.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.hexadecimal.erlang"],regex:"(16)(#)([\\da-fA-F]+)"},{token:["constant.numeric.integer.base-17.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-17.erlang"],regex:"(17)(#)([\\da-gA-G]+)"},{token:["constant.numeric.integer.base-18.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-18.erlang"],regex:"(18)(#)([\\da-hA-H]+)"},{token:["constant.numeric.integer.base-19.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-19.erlang"],regex:"(19)(#)([\\da-iA-I]+)"},{token:["constant.numeric.integer.base-20.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-20.erlang"],regex:"(20)(#)([\\da-jA-J]+)"},{token:["constant.numeric.integer.base-21.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-21.erlang"],regex:"(21)(#)([\\da-kA-K]+)"},{token:["constant.numeric.integer.base-22.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-22.erlang"],regex:"(22)(#)([\\da-lA-L]+)"},{token:["constant.numeric.integer.base-23.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-23.erlang"],regex:"(23)(#)([\\da-mA-M]+)"},{token:["constant.numeric.integer.base-24.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-24.erlang"],regex:"(24)(#)([\\da-nA-N]+)"},{token:["constant.numeric.integer.base-25.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-25.erlang"],regex:"(25)(#)([\\da-oA-O]+)"},{token:["constant.numeric.integer.base-26.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-26.erlang"],regex:"(26)(#)([\\da-pA-P]+)"},{token:["constant.numeric.integer.base-27.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-27.erlang"],regex:"(27)(#)([\\da-qA-Q]+)"},{token:["constant.numeric.integer.base-28.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-28.erlang"],regex:"(28)(#)([\\da-rA-R]+)"},{token:["constant.numeric.integer.base-29.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-29.erlang"],regex:"(29)(#)([\\da-sA-S]+)"},{token:["constant.numeric.integer.base-30.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-30.erlang"],regex:"(30)(#)([\\da-tA-T]+)"},{token:["constant.numeric.integer.base-31.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-31.erlang"],regex:"(31)(#)([\\da-uA-U]+)"},{token:["constant.numeric.integer.base-32.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-32.erlang"],regex:"(32)(#)([\\da-vA-V]+)"},{token:["constant.numeric.integer.base-33.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-33.erlang"],regex:"(33)(#)([\\da-wA-W]+)"},{token:["constant.numeric.integer.base-34.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-34.erlang"],regex:"(34)(#)([\\da-xA-X]+)"},{token:["constant.numeric.integer.base-35.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-35.erlang"],regex:"(35)(#)([\\da-yA-Y]+)"},{token:["constant.numeric.integer.base-36.erlang","punctuation.separator.base-integer.erlang","constant.numeric.integer.base-36.erlang"],regex:"(36)(#)([\\da-zA-Z]+)"},{token:"invalid.illegal.integer.erlang",regex:"\\d+#[\\da-zA-Z]+"},{token:"constant.numeric.integer.decimal.erlang",regex:"\\d+"}]}],"#parenthesized-expression":[{token:"punctuation.section.expression.begin.erlang",regex:"\\(",push:[{token:"punctuation.section.expression.end.erlang",regex:"\\)",next:"pop"},{include:"#everything-else"},{defaultToken:"meta.expression.parenthesized"}]}],"#record-directive":[{token:["meta.directive.record.erlang","punctuation.section.directive.begin.erlang","meta.directive.record.erlang","keyword.control.directive.import.erlang","meta.directive.record.erlang","punctuation.definition.parameters.begin.erlang","meta.directive.record.erlang","entity.name.type.class.record.definition.erlang","meta.directive.record.erlang","punctuation.separator.parameters.erlang"],regex:"^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(,)",push:[{token:["punctuation.definition.class.record.end.erlang","meta.directive.record.erlang","punctuation.definition.parameters.end.erlang","meta.directive.record.erlang","punctuation.section.directive.end.erlang"],regex:"(\\})(\\s*)(\\))(\\s*)(\\.)",next:"pop"},{include:"#internal-record-body"},{defaultToken:"meta.directive.record.erlang"}]}],"#record-usage":[{token:["keyword.operator.record.erlang","meta.record-usage.erlang","entity.name.type.class.record.erlang","meta.record-usage.erlang","punctuation.separator.record-field.erlang","meta.record-usage.erlang","variable.other.field.erlang"],regex:"(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')"},{token:["keyword.operator.record.erlang","meta.record-usage.erlang","entity.name.type.class.record.erlang"],regex:"(#)(\\s*)([a-z][a-zA-Z\\d@_]*|'[^']*')",push:[{token:"punctuation.definition.class.record.end.erlang",regex:"\\}",next:"pop"},{include:"#internal-record-body"},{defaultToken:"meta.record-usage.erlang"}]}],"#string":[{token:"punctuation.definition.string.begin.erlang",regex:'"',push:[{token:"punctuation.definition.string.end.erlang",regex:'"',next:"pop"},{token:["punctuation.definition.escape.erlang","constant.character.escape.erlang","punctuation.definition.escape.erlang","constant.character.escape.erlang","constant.character.escape.erlang"],regex:"(\\\\)(?:([bdefnrstv\\\\'\"])|(\\^)([@-_])|([0-7]{1,3}))"},{token:"invalid.illegal.string.erlang",regex:"\\\\\\^?.?"},{token:["punctuation.definition.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","punctuation.separator.placeholder-parts.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","constant.other.placeholder.erlang"],regex:"(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])"},{token:["punctuation.definition.placeholder.erlang","punctuation.separator.placeholder-parts.erlang","constant.other.placeholder.erlang","constant.other.placeholder.erlang"],regex:"(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])"},{token:"invalid.illegal.string.erlang",regex:"~.?"},{defaultToken:"string.quoted.double.erlang"}]}],"#symbolic-operator":[{token:"keyword.operator.symbolic.erlang",regex:"\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::"}],"#textual-operator":[{token:"keyword.operator.textual.erlang",regex:"\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b"}],"#tuple":[{token:"punctuation.definition.tuple.begin.erlang",regex:"\\{",push:[{token:"punctuation.definition.tuple.end.erlang",regex:"\\}",next:"pop"},{token:"punctuation.separator.tuple.erlang",regex:","},{include:"#everything-else"},{defaultToken:"meta.structure.tuple.erlang"}]}],"#variable":[{token:["variable.other.erlang","variable.language.omitted.erlang"],regex:"(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)"}]},this.normalizeRules()};s.metaData={comment:"The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace).  Also, the function/module/record/macro names must be given unquoted.  -- desp",fileTypes:["erl","hrl"],keyEquivalent:"^~E",name:"Erlang",scopeName:"source.erlang"},r.inherits(s,i),t.ErlangHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/erlang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/erlang_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./erlang_highlight_rules").ErlangHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/erlang"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-forth.js b/js/ace/mode-forth.js
new file mode 100644
index 0000000..ef2a8ca
--- /dev/null
+++ b/js/ace/mode-forth.js
@@ -0,0 +1 @@
+ace.define("ace/mode/forth_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#forth"}],"#comment":[{token:"comment.line.double-dash.forth",regex:"(?:^|\\s)--\\s.*$",comment:"line comments for iForth"},{token:"comment.line.backslash.forth",regex:"(?:^|\\s)\\\\[\\s\\S]*$",comment:"ANSI line comment"},{token:"comment.line.backslash-g.forth",regex:"(?:^|\\s)\\\\[Gg] .*$",comment:"gForth line comment"},{token:"comment.block.forth",regex:"(?:^|\\s)\\(\\*(?=\\s|$)",push:[{token:"comment.block.forth",regex:"(?:^|\\s)\\*\\)(?=\\s|$)",next:"pop"},{defaultToken:"comment.block.forth"}],comment:"multiline comments for iForth"},{token:"comment.block.documentation.forth",regex:"\\bDOC\\b",caseInsensitive:!0,push:[{token:"comment.block.documentation.forth",regex:"\\bENDDOC\\b",caseInsensitive:!0,next:"pop"},{defaultToken:"comment.block.documentation.forth"}],comment:"documentation comments for iForth"},{token:"comment.line.parentheses.forth",regex:"(?:^|\\s)\\.?\\( [^)]*\\)",comment:"ANSI line comment"}],"#constant":[{token:"constant.language.forth",regex:"(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)",caseInsensitive:!0},{token:"constant.numeric.forth",regex:"(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)"},{token:"constant.character.forth",regex:"(?:^|\\s)(?:[&^]\\S|(?:\"|')\\S(?:\"|'))(?=\\s|$)"}],"#forth":[{include:"#constant"},{include:"#comment"},{include:"#string"},{include:"#word"},{include:"#variable"},{include:"#storage"},{include:"#word-def"}],"#storage":[{token:"storage.type.forth",regex:"(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)",caseInsensitive:!0}],"#string":[{token:"string.quoted.double.forth",regex:'(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")',caseInsensitive:!0},{token:"string.unquoted.forth",regex:"(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)",caseInsensitive:!0}],"#variable":[{token:"variable.language.forth",regex:"\\b(?:I|J)\\b",caseInsensitive:!0}],"#word":[{token:"keyword.control.immediate.forth",regex:"(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.immediate.forth",regex:"(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT'S|])(?=\\s|$)",caseInsensitive:!0},{token:"keyword.control.compile-only.forth",regex:'(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)',caseInsensitive:!0},{token:"keyword.other.compile-only.forth",regex:"(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\['\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]|<COMPILATION|<INTERPRETATION|ASSERT\\(|ASSERT0\\(|ASSERT1\\(|ASSERT2\\(|ASSERT3\\(|COMPILATION>|DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.non-immediate.forth",regex:"(?:^|\\s)(?:'|<IS>|<TO>|CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)",caseInsensitive:!0},{token:"keyword.other.warning.forth",regex:'(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)',caseInsensitive:!0}],"#word-def":[{token:["keyword.other.compile-only.forth","keyword.other.compile-only.forth","meta.block.forth","entity.name.function.forth"],regex:"(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)",caseInsensitive:!0,push:[{token:"keyword.other.compile-only.forth",regex:";(?:CODE)?",caseInsensitive:!0,next:"pop"},{include:"#constant"},{include:"#comment"},{include:"#string"},{include:"#word"},{include:"#variable"},{include:"#storage"},{defaultToken:"meta.block.forth"}]}]},this.normalizeRules()};s.metaData={fileTypes:["frt","fs","ldr"],foldingStartMarker:"/\\*\\*|\\{\\s*$",foldingStopMarker:"\\*\\*/|^\\s*\\}",keyEquivalent:"^~F",name:"Forth",scopeName:"source.forth"},r.inherits(s,i),t.ForthHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/forth",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/forth_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./forth_highlight_rules").ForthHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/forth"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-ftl.js b/js/ace/mode-ftl.js
new file mode 100644
index 0000000..b12a416
--- /dev/null
+++ b/js/ace/mode-ftl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|upper_case|word_list|xhtml|xml",t="c|round|floor|ceiling",n="iso_[a-z_]+",r="first|last|seq_contains|seq_index_of|seq_last_index_of|reverse|size|sort|sort_by|chunk",i="keys|values",s="children|parent|root|ancestors|node_name|node_type|node_namespace",o="byte|double|float|int|long|short|number_to_date|number_to_time|number_to_datetime|eval|has_content|interpret|is_[a-z_]+|namespacenew",u=e+t+n+r+i+s+o,a="default|exists|if_exists|web_safe",f="data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|now|output_encoding|template_name|url_escaping_charset|vars|version",l="gt|gte|lt|lte|as|in|using",c="true|false",h="encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|attributes";this.$rules={start:[{token:"constant.character.entity",regex:/&[^;]+;/},{token:"support.function",regex:"\\?("+u+")"},{token:"support.function.deprecated",regex:"\\?("+a+")"},{token:"language.variable",regex:"\\.(?:"+f+")"},{token:"constant.language",regex:"\\b("+c+")\\b"},{token:"keyword.operator",regex:"\\b(?:"+l+")\\b"},{token:"entity.other.attribute-name",regex:h},{token:"string",regex:/['"]/,next:"qstring"},{token:function(e){return e.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")?"constant.numeric":"variable"},regex:/[\w.+\-]+/},{token:"keyword.operator",regex:"!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qstring:[{token:"constant.character.escape",regex:'\\\\[nrtvef\\\\"$]'},{token:"string",regex:/['"]/,next:"start"},{defaultToken:"string"}]}};r.inherits(o,s);var u=function(){i.call(this);var e="assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|setting|stop|switch|t|visit",t=[{token:"comment",regex:"<#--",next:"ftl-dcomment"},{token:"string.interpolated",regex:"\\${",push:"ftl-start"},{token:"keyword.function",regex:"</?#("+e+")",push:"ftl-start"},{token:"keyword.other",regex:"</?@[a-zA-Z\\.]+",push:"ftl-start"}],n=[{token:"keyword",regex:"/?>",next:"pop"},{token:"string.interpolated",regex:"}",next:"pop"}];for(var r in this.$rules)this.$rules[r].unshift.apply(this.$rules[r],t);this.embedRules(o,"ftl-",n,["start"]),this.addRules({"ftl-dcomment":[{token:"comment",regex:".*?-->",next:"pop"},{token:"comment",regex:".+"}]}),this.normalizeRules()};r.inherits(u,i),t.FtlHighlightRules=u}),ace.define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ftl_highlight_rules").FtlHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/ftl"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-gcode.js b/js/ace/mode-gcode.js
new file mode 100644
index 0000000..3ea31a1
--- /dev/null
+++ b/js/ace/mode-gcode.js
@@ -0,0 +1 @@
+ace.define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",t="PI",n="ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\(.*\\)"},{token:"comment",regex:"([N])([0-9]+)"},{token:"string",regex:"([G])([0-9]+\\.?[0-9]?)"},{token:"string",regex:"([M])([0-9]+\\.?[0-9]?)"},{token:"constant.numeric",regex:"([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"},{token:r,regex:"[A-Z]"},{token:"keyword.operator",regex:"EQ|LT|GT|NE|GE|LE|OR|XOR"},{token:"paren.lparen",regex:"[\\[]"},{token:"paren.rparen",regex:"[\\]]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.GcodeHighlightRules=s}),ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gcode_highlight_rules").GcodeHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-gherkin.js b/js/ace/mode-gherkin.js
new file mode 100644
index 0000000..90a56f5
--- /dev/null
+++ b/js/ace/mode-gherkin.js
@@ -0,0 +1 @@
+ace.define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})",o=function(){this.$rules={start:[{token:"constant.numeric",regex:"(?:(?:[1-9]\\d*)|(?:0))"},{token:"comment",regex:"#.*$"},{token:"keyword",regex:"Feature:|Background:|Scenario:|Scenario Outline:|Examples:|Given|When|Then|And|But|\\*"},{token:"string",regex:'"{3}',next:"qqstring3"},{token:"string",regex:'"',next:"qqstring"},{token:"comment",regex:"@[A-Za-z0-9]+",next:"start"},{token:"comment",regex:"<.+>"},{token:"comment",regex:"\\| ",next:"table-item"},{token:"comment",regex:"\\|$",next:"start"}],qqstring3:[{token:"constant.language.escape",regex:s},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],"table-item":[{token:"string",regex:"[A-Za-z0-9 ]*",next:"start"}]}};r.inherits(o,i),t.GherkinHighlightRules=o}),ace.define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gherkin_highlight_rules").GherkinHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gherkin",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i="  ",s=this.getTokenizer().getLineTokens(t,e),o=s.tokens;return console.log(e),t.match("[ ]*\\|")&&(r+="| "),o.length&&o[o.length-1].type=="comment"?r:(e=="start"&&(t.match("Scenario:|Feature:|Scenario Outline:|Background:")?r+=i:t.match("(Given|Then).+(:)$|Examples:")?r+=i:t.match("\\*.+")&&(r+="* ")),r)}}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-gitignore.js b/js/ace/mode-gitignore.js
new file mode 100644
index 0000000..b09cc2e
--- /dev/null
+++ b/js/ace/mode-gitignore.js
@@ -0,0 +1 @@
+ace.define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),ace.define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-glsl.js b/js/ace/mode-glsl.js
new file mode 100644
index 0000000..f203e9f
--- /dev/null
+++ b/js/ace/mode-glsl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{defaultToken:"string"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{defaultToken:"string"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp_highlight_rules").c_cppHighlightRules,s=function(){var e="attribute|const|uniform|varying|break|continue|do|for|while|if|else|in|out|inout|float|int|void|bool|true|false|lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|samplerCube|struct",t="radians|degrees|sin|cos|tan|asin|acos|atan|pow|exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|normalize|faceforward|reflect|refract|matrixCompMult|lessThan|lessThanEqual|greaterThan|greaterThanEqual|equal|notEqual|any|all|not|dFdx|dFdy|fwidth|texture2D|texture2DProj|texture2DLod|texture2DProjLod|textureCube|textureCubeLod|gl_MaxVertexAttribs|gl_MaxVertexUniformVectors|gl_MaxVaryingVectors|gl_MaxVertexTextureImageUnits|gl_MaxCombinedTextureImageUnits|gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|gl_DepthRangeParameters|gl_DepthRange|gl_Position|gl_PointSize|gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t},"identifier");this.$rules=(new i).$rules,this.$rules.start.forEach(function(e){typeof e.token=="function"&&(e.token=n)})};r.inherits(s,i),t.glslHighlightRules=s}),ace.define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./glsl_highlight_rules").glslHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.$id="ace/mode/glsl"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-golang.js b/js/ace/mode-golang.js
new file mode 100644
index 0000000..c2260b0
--- /dev/null
+++ b/js/ace/mode-golang.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="else|break|case|return|goto|if|const|select|continue|struct|default|switch|for|range|func|import|package|chan|defer|fallthrough|go|interface|map|range|select|type|var",t="string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error",n="make|close|new|panic|recover",r="nil|true|false|iota",s=this.createKeywordMapper({keyword:e,"constant.language":r,"support.function":n,"support.type":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"[`](?:[^`]*)[`]"},{token:"string",merge:!0,regex:"[`](?:[^`]*)$",next:"bqstring"},{token:"constant.numeric",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^="},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],bqstring:[{token:"string",regex:"(?:[^`]*)`",next:"start"},{token:"string",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GolangHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./golang_highlight_rules").GolangHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/golang"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-groovy.js b/js/ace/mode-groovy.js
new file mode 100644
index 0000000..ef0432f
--- /dev/null
+++ b/js/ace/mode-groovy.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/groovy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="assert|with|abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|def|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"support.function":n,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'"""',next:"qqstring"},{token:"string",regex:"'''",next:"qstring"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"constant.language.escape",regex:/\\(?:u[0-9A-Fa-f]{4}|.|$)/},{token:"constant.language.escape",regex:/\$[\w\d]+/},{token:"constant.language.escape",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"{3,5}',next:"start"},{token:"string",regex:".+?"}],qstring:[{token:"constant.language.escape",regex:/\\(?:u[0-9A-Fa-f]{4}|.|$)/},{token:"string",regex:"'{3,5}",next:"start"},{token:"string",regex:".+?"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.GroovyHighlightRules=o}),ace.define("ace/mode/groovy",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/groovy_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./groovy_highlight_rules").GroovyHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/groovy"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-haml.js b/js/ace/mode-haml.js
new file mode 100644
index 0000000..1952632
--- /dev/null
+++ b/js/ace/mode-haml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/ruby_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./ruby_highlight_rules"),o=s.RubyHighlightRules,u=function(){this.$rules={start:[{token:"punctuation.section.comment",regex:/^\s*\/.*/},{token:"punctuation.section.comment",regex:/^\s*#.*/},{token:"string.quoted.double",regex:"==.+?=="},{token:"keyword.other.doctype",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},s.qString,s.qqString,s.tString,{token:["entity.name.tag.haml"],regex:/^\s*%[\w:]+/,next:"tag_single"},{token:["meta.escape.haml"],regex:"^\\s*\\\\."},s.constantNumericHex,s.constantNumericFloat,s.constantOtherSymbol,{token:"text",regex:"=|-|~",next:"embedded_ruby"}],tag_single:[{token:"entity.other.attribute-name.class.haml",regex:"\\.[\\w-]+"},{token:"entity.other.attribute-name.id.haml",regex:"#[\\w-]+"},{token:"punctuation.section",regex:"\\{",next:"section"},s.constantOtherSymbol,{token:"text",regex:/\s/,next:"start"},{token:"empty",regex:"$|(?!\\.|#|\\{|\\[|=|-|~|\\/)",next:"start"}],section:[s.constantOtherSymbol,s.qString,s.qqString,s.tString,s.constantNumericHex,s.constantNumericFloat,{token:"punctuation.section",regex:"\\}",next:"start"}],embedded_ruby:[s.constantNumericHex,s.constantNumericFloat,{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},{token:(new o).getKeywords(),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:["keyword","text","text"],regex:"(?:do|\\{)(?: \\|[^|]+\\|)?$",next:"start"},{token:["text"],regex:"^$",next:"start"},{token:["text"],regex:"^(?!.*\\|\\s*$)",next:"start"}]}};r.inherits(u,i),t.HamlHighlightRules=u}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/haml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haml_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haml_highlight_rules").HamlHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=["//","#"],this.$id="ace/mode/haml"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-handlebars.js b/js/ace/mode-handlebars.js
new file mode 100644
index 0000000..77a5796
--- /dev/null
+++ b/js/ace/mode-handlebars.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function s(e,t){return t.splice(0,3),t.shift()||"start"}var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,o=function(){i.call(this);var e={regex:"(?={{)",push:"handlebars"};for(var t in this.$rules)this.$rules[t].unshift(e);this.$rules.handlebars=[{token:"comment.start",regex:"{{!--",push:[{token:"comment.end",regex:"--}}",next:s},{defaultToken:"comment"}]},{token:"comment.start",regex:"{{!",push:[{token:"comment.end",regex:"}}",next:s},{defaultToken:"comment"}]},{token:"support.function",regex:"{{{",push:[{token:"support.function",regex:"}}}",next:s},{token:"variable.parameter",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"}]},{token:"storage.type.start",regex:"{{[#\\^/&]?",push:[{token:"storage.type.end",regex:"}}",next:s},{token:"variable.parameter",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*"}]}],this.normalizeRules()};r.inherits(o,i),t.HandlebarsHighlightRules=o}),ace.define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour/xml").XmlBehaviour,s=function(){i.call(this)};r.inherits(s,i),t.HtmlBehaviour=s}),ace.define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./handlebars_highlight_rules").HandlebarsHighlightRules,o=e("./behaviour/html").HtmlBehaviour,u=e("./folding/html").FoldMode,a=function(){i.call(this),this.HighlightRules=s,this.$behaviour=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.blockComment={start:"{!--",end:"--}"},this.$id="ace/mode/handlebars"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-haskell.js b/js/ace/mode-haskell.js
new file mode 100644
index 0000000..8df6237
--- /dev/null
+++ b/js/ace/mode-haskell.js
@@ -0,0 +1 @@
+ace.define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["punctuation.definition.entity.haskell","keyword.operator.function.infix.haskell","punctuation.definition.entity.haskell"],regex:"(`)([a-zA-Z_']*?)(`)",comment:"In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10])."},{token:"constant.language.unit.haskell",regex:"\\(\\)"},{token:"constant.language.empty-list.haskell",regex:"\\[\\]"},{token:"keyword.other.haskell",regex:"\\bmodule\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b",next:"pop"},{include:"#module_name"},{include:"#module_exports"},{token:"invalid",regex:"[a-z]+"},{defaultToken:"meta.declaration.module.haskell"}]},{token:"keyword.other.haskell",regex:"\\bclass\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b",next:"pop"},{token:"support.class.prelude.haskell",regex:"\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b"},{token:"entity.other.inherited-class.haskell",regex:"[A-Z][A-Za-z_']*"},{token:"variable.other.generic-type.haskell",regex:"\\b[a-z][a-zA-Z0-9_']*\\b"},{defaultToken:"meta.declaration.class.haskell"}]},{token:"keyword.other.haskell",regex:"\\binstance\\b",push:[{token:"keyword.other.haskell",regex:"\\bwhere\\b|$",next:"pop"},{include:"#type_signature"},{defaultToken:"meta.declaration.instance.haskell"}]},{token:"keyword.other.haskell",regex:"import",push:[{token:"meta.import.haskell",regex:"$|;",next:"pop"},{token:"keyword.other.haskell",regex:"qualified|as|hiding"},{include:"#module_name"},{include:"#module_exports"},{defaultToken:"meta.import.haskell"}]},{token:["keyword.other.haskell","meta.deriving.haskell"],regex:"(deriving)(\\s*\\()",push:[{token:"meta.deriving.haskell",regex:"\\)",next:"pop"},{token:"entity.other.inherited-class.haskell",regex:"\\b[A-Z][a-zA-Z_']*"},{defaultToken:"meta.deriving.haskell"}]},{token:"keyword.other.haskell",regex:"\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b"},{token:"keyword.operator.haskell",regex:"\\binfix[lr]?\\b"},{token:"keyword.control.haskell",regex:"\\b(?:do|if|then|else)\\b"},{token:"constant.numeric.float.haskell",regex:"\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b",comment:"Floats are always decimal"},{token:"constant.numeric.haskell",regex:"\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b"},{token:["meta.preprocessor.c","punctuation.definition.preprocessor.c","meta.preprocessor.c"],regex:"^(\\s*)(#)(\\s*\\w+)",comment:'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.'},{include:"#pragma"},{token:"punctuation.definition.string.begin.haskell",regex:'"',push:[{token:"punctuation.definition.string.end.haskell",regex:'"',next:"pop"},{token:"constant.character.escape.haskell",regex:"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])"},{token:"constant.character.escape.octal.haskell",regex:"\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+"},{token:"constant.character.escape.control.haskell",regex:"\\^[A-Z@\\[\\]\\\\\\^_]"},{defaultToken:"string.quoted.double.haskell"}]},{token:["punctuation.definition.string.begin.haskell","string.quoted.single.haskell","constant.character.escape.haskell","constant.character.escape.octal.haskell","constant.character.escape.hexadecimal.haskell","constant.character.escape.control.haskell","punctuation.definition.string.end.haskell"],regex:"(')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(')"},{token:["meta.function.type-declaration.haskell","entity.name.function.haskell","meta.function.type-declaration.haskell","keyword.other.double-colon.haskell"],regex:"^(\\s*)([a-z_][a-zA-Z0-9_']*|\\([|!%$+\\-.,=</>]+\\))(\\s*)(::)",push:[{token:"meta.function.type-declaration.haskell",regex:"$",next:"pop"},{include:"#type_signature"},{defaultToken:"meta.function.type-declaration.haskell"}]},{token:"support.constant.haskell",regex:"\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b"},{token:"constant.other.haskell",regex:"\\b[A-Z]\\w*\\b"},{include:"#comments"},{token:"support.function.prelude.haskell",regex:"\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b"},{include:"#infix_op"},{token:"keyword.operator.haskell",regex:"[|!%$?~+:\\-.=</>\\\\]+",comment:"In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*."},{token:"punctuation.separator.comma.haskell",regex:","}],"#block_comment":[{token:"punctuation.definition.comment.haskell",regex:"\\{-(?!#)",push:[{include:"#block_comment"},{token:"punctuation.definition.comment.haskell",regex:"-\\}",next:"pop"},{defaultToken:"comment.block.haskell"}]}],"#comments":[{token:"punctuation.definition.comment.haskell",regex:"--.*",push_:[{token:"comment.line.double-dash.haskell",regex:"$",next:"pop"},{defaultToken:"comment.line.double-dash.haskell"}]},{include:"#block_comment"}],"#infix_op":[{token:"entity.name.function.infix.haskell",regex:"\\([|!%$+:\\-.=</>]+\\)|\\(,+\\)"}],"#module_exports":[{token:"meta.declaration.exports.haskell",regex:"\\(",push:[{token:"meta.declaration.exports.haskell",regex:"\\)",next:"pop"},{token:"entity.name.function.haskell",regex:"\\b[a-z][a-zA-Z_']*"},{token:"storage.type.haskell",regex:"\\b[A-Z][A-Za-z_']*"},{token:"punctuation.separator.comma.haskell",regex:","},{include:"#infix_op"},{token:"meta.other.unknown.haskell",regex:"\\(.*?\\)",comment:"So named because I don't know what to call this."},{defaultToken:"meta.declaration.exports.haskell"}]}],"#module_name":[{token:"support.other.module.haskell",regex:"[A-Z][A-Za-z._']*"}],"#pragma":[{token:"meta.preprocessor.haskell",regex:"\\{-#",push:[{token:"meta.preprocessor.haskell",regex:"#-\\}",next:"pop"},{token:"keyword.other.preprocessor.haskell",regex:"\\b(?:LANGUAGE|UNPACK|INLINE)\\b"},{defaultToken:"meta.preprocessor.haskell"}]}],"#type_signature":[{token:["meta.class-constraint.haskell","entity.other.inherited-class.haskell","meta.class-constraint.haskell","variable.other.generic-type.haskell","meta.class-constraint.haskell","keyword.other.big-arrow.haskell"],regex:"(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_']*)(\\)\\s*)(=>)"},{include:"#pragma"},{token:"keyword.other.arrow.haskell",regex:"->"},{token:"keyword.other.big-arrow.haskell",regex:"=>"},{token:"support.type.prelude.haskell",regex:"\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b"},{token:"variable.other.generic-type.haskell",regex:"\\b[a-z][a-zA-Z0-9_']*\\b"},{token:"storage.type.haskell",regex:"\\b[A-Z][a-zA-Z0-9_']*\\b"},{token:"support.constant.unit.haskell",regex:"\\(\\)"},{include:"#comments"}]},this.normalizeRules()};s.metaData={fileTypes:["hs"],keyEquivalent:"^~H",name:"Haskell",scopeName:"source.haskell"},r.inherits(s,i),t.HaskellHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haskell_highlight_rules").HaskellHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/haskell"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-haxe.js b/js/ace/mode-haxe.js
new file mode 100644
index 0000000..c21dfa4
--- /dev/null
+++ b/js/ace/mode-haxe.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/haxe_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std",t="null|true|false",n=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.HaxeHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/haxe",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haxe_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./haxe_highlight_rules").HaxeHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/haxe"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-html.js b/js/ace/mode-html.js
new file mode 100644
index 0000000..c0b56bc
--- /dev/null
+++ b/js/ace/mode-html.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v})
\ No newline at end of file
diff --git a/js/ace/mode-html_ruby.js b/js/ace/mode-html_ruby.js
new file mode 100644
index 0000000..196e193
--- /dev/null
+++ b/js/ace/mode-html_ruby.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/html_ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./ruby_highlight_rules").RubyHighlightRules,o=function(){i.call(this);var e=[{regex:"<%%|%%>",token:"constant.language.escape"},{token:"comment.start.erb",regex:"<%#",push:[{token:"comment.end.erb",regex:"%>",next:"pop",defaultToken:"comment"}]},{token:"support.ruby_tag",regex:"<%+(?!>)[-=]?",push:"ruby-start"}],t=[{token:"support.ruby_tag",regex:"%>",next:"pop"},{token:"comment",regex:"#(?:[^%]|%[^>])*"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(s,"ruby-",t,["start"]),this.normalizeRules()};r.inherits(o,i),t.HtmlRubyHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/coffee").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.$id="ace/mode/ruby"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/html_ruby",["require","exports","module","ace/lib/oop","ace/mode/html_ruby_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_ruby_highlight_rules").HtmlRubyHighlightRules,s=e("./html").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./ruby").Mode,f=function(){s.call(this),this.HighlightRules=i,this.createModeDelegates({"js-":o,"css-":u,"ruby-":a})};r.inherits(f,s),function(){this.$id="ace/mode/html_ruby"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-ini.js b/js/ace/mode-ini.js
new file mode 100644
index 0000000..54c2e92
--- /dev/null
+++ b/js/ace/mode-ini.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ini_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s="\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})",o=function(){this.$rules={start:[{token:"punctuation.definition.comment.ini",regex:"#.*",push_:[{token:"comment.line.number-sign.ini",regex:"$|^",next:"pop"},{defaultToken:"comment.line.number-sign.ini"}]},{token:"punctuation.definition.comment.ini",regex:";.*",push_:[{token:"comment.line.semicolon.ini",regex:"$|^",next:"pop"},{defaultToken:"comment.line.semicolon.ini"}]},{token:["keyword.other.definition.ini","text","punctuation.separator.key-value.ini"],regex:"\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)"},{token:["punctuation.definition.entity.ini","constant.section.group-title.ini","punctuation.definition.entity.ini"],regex:"^(\\[)(.*?)(\\])"},{token:"punctuation.definition.string.begin.ini",regex:"'",push:[{token:"punctuation.definition.string.end.ini",regex:"'",next:"pop"},{token:"constant.language.escape",regex:s},{defaultToken:"string.quoted.single.ini"}]},{token:"punctuation.definition.string.begin.ini",regex:'"',push:[{token:"constant.language.escape",regex:s},{token:"punctuation.definition.string.end.ini",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.ini"}]}]},this.normalizeRules()};o.metaData={fileTypes:["ini","conf"],keyEquivalent:"^~I",name:"Ini",scopeName:"source.ini"},r.inherits(o,i),t.IniHighlightRules=o}),ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++n<f){s=e.getLine(n);if(/^\s*$/.test(s))continue;o=s.match(r);if(o&&o[1].lastIndexOf(u,0)!==0)break;c=n}if(c>l){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),ace.define("ace/mode/ini",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ini_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ini_highlight_rules").IniHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=";",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/ini"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-io.js b/js/ace/mode-io.js
new file mode 100644
index 0000000..f0b16ca
--- /dev/null
+++ b/js/ace/mode-io.js
@@ -0,0 +1 @@
+ace.define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["text","meta.empty-parenthesis.io"],regex:"(\\()(\\))",comment:"we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob"},{token:["text","meta.comma-parenthesis.io"],regex:"(\\,)(\\))",comment:"We want to do the same for ,) -- Seckar; same as above -- Rob"},{token:"keyword.control.io",regex:"\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b"},{token:"punctuation.definition.comment.io",regex:"/\\*",push:[{token:"punctuation.definition.comment.io",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.io"}]},{token:"punctuation.definition.comment.io",regex:"//",push:[{token:"comment.line.double-slash.io",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.io"}]},{token:"punctuation.definition.comment.io",regex:"#",push:[{token:"comment.line.number-sign.io",regex:"$",next:"pop"},{defaultToken:"comment.line.number-sign.io"}]},{token:"variable.language.io",regex:"\\b(?:self|sender|target|proto|protos|parent)\\b",comment:"I wonder if some of this isn't variable.other.language? --Allan; scoping this as variable.language to match Objective-C's handling of 'self', which is inconsistent with C++'s handling of 'this' but perhaps intentionally so -- Rob"},{token:"keyword.operator.io",regex:"<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b"},{token:"constant.other.io",regex:"\\bGL[\\w_]+\\b"},{token:"support.class.io",regex:"\\b[A-Z](?:\\w+)?\\b"},{token:"support.function.io",regex:"\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b"},{token:"support.function.open-gl.io",regex:"\\bgl(?:u|ut)?[A-Z]\\w+\\b"},{token:"punctuation.definition.string.begin.io",regex:'"""',push:[{token:"punctuation.definition.string.end.io",regex:'"""',next:"pop"},{token:"constant.character.escape.io",regex:"\\\\."},{defaultToken:"string.quoted.triple.io"}]},{token:"punctuation.definition.string.begin.io",regex:'"',push:[{token:"punctuation.definition.string.end.io",regex:'"',next:"pop"},{token:"constant.character.escape.io",regex:"\\\\."},{defaultToken:"string.quoted.double.io"}]},{token:"constant.numeric.io",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"variable.other.global.io",regex:"Lobby\\b"},{token:"constant.language.io",regex:"\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b"}]},this.normalizeRules()};s.metaData={fileTypes:["io"],keyEquivalent:"^~I",name:"Io",scopeName:"source.io"},r.inherits(s,i),t.IoHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./io_highlight_rules").IoHighlightRules,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/io"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-jack.js b/js/ace/mode-jack.js
new file mode 100644
index 0000000..65e2fb7
--- /dev/null
+++ b/js/ace/mode-jack.js
@@ -0,0 +1 @@
+ace.define("ace/mode/jack_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"string",regex:'"',next:"string2"},{token:"string",regex:"'",next:"string1"},{token:"constant.numeric",regex:"-?0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"(?:0|[-+]?[1-9][0-9]*)\\b"},{token:"constant.binary",regex:"<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"constant.language.null",regex:"null\\b"},{token:"storage.type",regex:"(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b"},{token:"keyword",regex:"(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b"},{token:"language.builtin",regex:"(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b"},{token:"comment",regex:"--.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"storage.form",regex:"@[a-z]+"},{token:"constant.other.symbol",regex:":+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"},{token:"variable",regex:"[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?"},{token:"keyword.operator",regex:"\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!"},{token:"text",regex:"\\s+"}],string1:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"'",next:"start"},{token:"string",regex:"",next:"start"}],string2:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JackHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jack",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jack_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jack_highlight_rules").JackHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="--",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jack"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-jade.js b/js/ace/mode-jade.js
new file mode 100644
index 0000000..3de177e
--- /dev/null
+++ b/js/ace/mode-jade.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unqoute".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|hue|saturation|lightness|alpha|round|ceil|floor|percentage|color|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare|when|not|and".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:function(e){return s.hasOwnProperty(e)?"keyword":"variable"},regex:"@[a-z0-9_\\-@]*\\b"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]}};r.inherits(o,s),t.LessHighlightRules=o}),ace.define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",t="this|throw|then|try|typeof|super|switch|return|break|by|continue|catch|class|in|instanceof|is|isnt|if|else|extends|for|own|finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|or|on|unless|until|and|yes",n="true|false|null|undefined|NaN|Infinity",r="case|const|default|function|var|void|with|enum|export|implements|interface|let|package|private|protected|public|static|yield|__hasProp|slice|bind|indexOf",i="Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray",s="Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|encodeURIComponent|decodeURI|decodeURIComponent|String|",o="window|arguments|prototype|document",u=this.createKeywordMapper({keyword:t,"constant.language":n,"invalid.illegal":r,"language.support.class":i,"language.support.function":s,"variable.language":o},"identifier"),a={token:["paren.lparen","variable.parameter","paren.rparen","text","storage.type"],regex:/(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()\"'\/])*?)(\))(\s*))?([\-=]>)/.source},f=/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/;this.$rules={start:[{token:"constant.numeric",regex:"(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)"},{stateName:"qdoc",token:"string",regex:"'''",next:[{token:"string",regex:"'''",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqdoc",token:"string",regex:'"""',next:[{token:"string",regex:'"""',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qstring",token:"string",regex:"'",next:[{token:"string",regex:"'",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"qqstring",token:"string.start",regex:'"',next:[{token:"string.end",regex:'"',next:"start"},{token:"paren.string",regex:"#{",push:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{stateName:"js",token:"string",regex:"`",next:[{token:"string",regex:"`",next:"start"},{token:"constant.language.escape",regex:f},{defaultToken:"string"}]},{regex:"[{}]",onMatch:function(e,t,n){this.next="";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift()||"";if(this.next.indexOf("string")!=-1)return"paren.string"}return"paren"}},{token:"string.regex",regex:"///",next:"heregex"},{token:"string.regex",regex:/(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/},{token:"comment",regex:"###(?!#)",next:"comment"},{token:"comment",regex:"#.*"},{token:["punctuation.operator","text","identifier"],regex:"(\\.)(\\s*)("+r+")"},{token:"punctuation.operator",regex:"\\."},{token:["keyword","text","language.support.class","text","keyword","text","language.support.class"],regex:"(class)(\\s+)("+e+")(?:(\\s+)(extends)(\\s+)("+e+"))?"},{token:["entity.name.function","text","keyword.operator","text"].concat(a.token),regex:"("+e+")(\\s*)([=:])(\\s*)"+a.regex},a,{token:"variable",regex:"@(?:"+e+")?"},{token:u,regex:e},{token:"punctuation.operator",regex:"\\,|\\."},{token:"storage.type",regex:"[\\-=]>"},{token:"keyword.operator",regex:"(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])"},{token:"paren.lparen",regex:"[({[]"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?///[imgy]{0,4}",next:"start"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{token:"string.regex",regex:"\\S+"}],comment:[{token:"comment",regex:"###",next:"start"},{defaultToken:"comment"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.CoffeeHighlightRules=s}),ace.define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";function l(e,t){return{token:"entity.name.function.jade",regex:"^\\s*\\:"+e,next:t+"start"}}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./markdown_highlight_rules").MarkdownHighlightRules,o=e("./scss_highlight_rules").ScssHighlightRules,u=e("./less_highlight_rules").LessHighlightRules,a=e("./coffee_highlight_rules").CoffeeHighlightRules,f=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={start:[{token:"keyword.control.import.include.jade",regex:"\\s*\\binclude\\b"},{token:"keyword.other.doctype.jade",regex:"^!!!\\s*(?:[a-zA-Z0-9-_]+)?"},{token:"punctuation.section.comment",regex:"^\\s*//(?:\\s*[^-\\s]|\\s+\\S)(?:.*$)"},{onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/^\s*\/\//,next:"comment_block"},l("markdown","markdown-"),l("sass","sass-"),l("less","less-"),l("coffee","coffee-"),{token:["storage.type.function.jade","entity.name.function.jade","punctuation.definition.parameters.begin.jade","variable.parameter.function.jade","punctuation.definition.parameters.end.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))"},{token:["storage.type.function.jade","entity.name.function.jade"],regex:"^(\\s*mixin)( [\\w\\-]+)"},{token:"source.js.embedded.jade",regex:"^\\s*(?:-|=|!=)",next:"js-start"},{token:"string.interpolated.jade",regex:"[#!]\\{[^\\}]+\\}"},{token:"meta.tag.any.jade",regex:/^\s*(?!\w+\:)(?:[\w]+|(?=\.|#)])/,next:"tag_single"},{token:"suport.type.attribute.id.jade",regex:"#\\w+"},{token:"suport.type.attribute.class.jade",regex:"\\.\\w+"},{token:"punctuation",regex:"\\s*(?:\\()",next:"tag_attributes"}],comment_block:[{regex:/^\s*/,onMatch:function(e,t,n){return e.length<=n[1]?(n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}],tag_single:[{token:"entity.other.attribute-name.class.jade",regex:"\\.[\\w-]+"},{token:"entity.other.attribute-name.id.jade",regex:"#[\\w-]+"},{token:["text","punctuation"],regex:"($)|((?!\\.|#|=|-))",next:"start"}],tag_attributes:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"entity.other.attribute-name.jade",regex:"\\b[a-zA-Z\\-:]+"},{token:["entity.other.attribute-name.jade","punctuation"],regex:"\\b([a-zA-Z:\\.-]+)(=)",next:"attribute_strings"},{token:"punctuation",regex:"\\)",next:"start"}],attribute_strings:[{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"tag_attributes"}],qstring:[{token:"constant.language.escape",regex:e},{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"tag_attributes"}]},this.embedRules(f,"js-",[{token:"text",regex:".$",next:"start"}])};r.inherits(c,i),t.JadeHighlightRules=c}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/jade",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jade_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jade_highlight_rules").JadeHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/jade"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-java.js b/js/ace/mode-java.js
new file mode 100644
index 0000000..d0fe1e4
--- /dev/null
+++ b/js/ace/mode-java.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.JavaHighlightRules=o}),ace.define("ace/mode/java",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/java_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./java_highlight_rules").JavaHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/java"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-javascript.js b/js/ace/mode-javascript.js
new file mode 100644
index 0000000..3be1d81
--- /dev/null
+++ b/js/ace/mode-javascript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c})
\ No newline at end of file
diff --git a/js/ace/mode-json.js b/js/ace/mode-json.js
new file mode 100644
index 0000000..cb177cd
--- /dev/null
+++ b/js/ace/mode-json.js
@@ -0,0 +1 @@
+ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-jsoniq.js b/js/ace/mode-jsoniq.js
new file mode 100644
index 0000000..122d744
--- /dev/null
+++ b/js/ace/mode-jsoniq.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xquery/jsoniq_lexer",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){var r=n.JSONiqTokenizer=function i(e,t){function r(e,t){E=t,S=e,x=e.length,s(0,0,0)}function s(e,t,n){m=t,g=t,y=e,b=t,w=n,N=n,E.reset(S)}function o(){E.startNonterminal("EQName",g);switch(y){case 80:f(80);break;case 94:f(94);break;case 118:f(118);break;case 119:f(119);break;case 122:f(122);break;case 143:f(143);break;case 150:f(150);break;case 163:f(163);break;case 183:f(183);break;case 189:f(189);break;case 214:f(214);break;case 224:f(224);break;case 225:f(225);break;case 241:f(241);break;case 242:f(242);break;case 251:f(251);break;default:u()}E.endNonterminal("EQName",g)}function u(){E.startNonterminal("FunctionName",g);switch(y){case 17:f(17);break;case 68:f(68);break;case 71:f(71);break;case 72:f(72);break;case 73:f(73);break;case 77:f(77);break;case 78:f(78);break;case 82:f(82);break;case 86:f(86);break;case 87:f(87);break;case 88:f(88);break;case 91:f(91);break;case 92:f(92);break;case 101:f(101);break;case 103:f(103);break;case 106:f(106);break;case 107:f(107);break;case 108:f(108);break;case 109:f(109);break;case 110:f(110);break;case 111:f(111);break;case 116:f(116);break;case 117:f(117);break;case 120:f(120);break;case 121:f(121);break;case 124:f(124);break;case 126:f(126);break;case 127:f(127);break;case 129:f(129);break;case 132:f(132);break;case 133:f(133);break;case 134:f(134);break;case 135:f(135);break;case 144:f(144);break;case 146:f(146);break;case 148:f(148);break;case 149:f(149);break;case 151:f(151);break;case 157:f(157);break;case 158:f(158);break;case 160:f(160);break;case 161:f(161);break;case 162:f(162);break;case 168:f(168);break;case 170:f(170);break;case 172:f(172);break;case 176:f(176);break;case 178:f(178);break;case 179:f(179);break;case 180:f(180);break;case 182:f(182);break;case 184:f(184);break;case 196:f(196);break;case 198:f(198);break;case 199:f(199);break;case 200:f(200);break;case 204:f(204);break;case 210:f(210);break;case 211:f(211);break;case 216:f(216);break;case 217:f(217);break;case 218:f(218);break;case 222:f(222);break;case 227:f(227);break;case 233:f(233);break;case 234:f(234);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 248:f(248);break;case 252:f(252);break;case 254:f(254);break;case 258:f(258);break;case 264:f(264);break;case 268:f(268);break;case 272:f(272);break;case 70:f(70);break;case 79:f(79);break;case 81:f(81);break;case 83:f(83);break;case 84:f(84);break;case 89:f(89);break;case 96:f(96);break;case 99:f(99);break;case 100:f(100);break;case 102:f(102);break;case 104:f(104);break;case 123:f(123);break;case 130:f(130);break;case 131:f(131);break;case 139:f(139);break;case 152:f(152);break;case 153:f(153);break;case 159:f(159);break;case 169:f(169);break;case 190:f(190);break;case 197:f(197);break;case 201:f(201);break;case 220:f(220);break;case 223:f(223);break;case 226:f(226);break;case 232:f(232);break;case 238:f(238);break;case 249:f(249);break;case 250:f(250);break;case 255:f(255);break;case 259:f(259);break;case 260:f(260);break;case 261:f(261);break;case 265:f(265);break;case 95:f(95);break;case 174:f(174);break;default:f(219)}E.endNonterminal("FunctionName",g)}function a(){E.startNonterminal("NCName",g);switch(y){case 28:f(28);break;case 68:f(68);break;case 73:f(73);break;case 77:f(77);break;case 78:f(78);break;case 82:f(82);break;case 86:f(86);break;case 87:f(87);break;case 88:f(88);break;case 92:f(92);break;case 103:f(103);break;case 107:f(107);break;case 111:f(111);break;case 116:f(116);break;case 120:f(120);break;case 121:f(121);break;case 124:f(124);break;case 126:f(126);break;case 129:f(129);break;case 135:f(135);break;case 144:f(144);break;case 146:f(146);break;case 148:f(148);break;case 149:f(149);break;case 158:f(158);break;case 160:f(160);break;case 161:f(161);break;case 162:f(162);break;case 170:f(170);break;case 172:f(172);break;case 176:f(176);break;case 178:f(178);break;case 179:f(179);break;case 184:f(184);break;case 196:f(196);break;case 198:f(198);break;case 199:f(199);break;case 218:f(218);break;case 222:f(222);break;case 234:f(234);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 264:f(264);break;case 268:f(268);break;case 71:f(71);break;case 72:f(72);break;case 80:f(80);break;case 91:f(91);break;case 94:f(94);break;case 101:f(101);break;case 106:f(106);break;case 108:f(108);break;case 109:f(109);break;case 110:f(110);break;case 117:f(117);break;case 118:f(118);break;case 119:f(119);break;case 122:f(122);break;case 127:f(127);break;case 132:f(132);break;case 133:f(133);break;case 134:f(134);break;case 143:f(143);break;case 150:f(150);break;case 151:f(151);break;case 157:f(157);break;case 163:f(163);break;case 168:f(168);break;case 180:f(180);break;case 182:f(182);break;case 183:f(183);break;case 189:f(189);break;case 200:f(200);break;case 204:f(204);break;case 210:f(210);break;case 211:f(211);break;case 214:f(214);break;case 216:f(216);break;case 217:f(217);break;case 224:f(224);break;case 225:f(225);break;case 227:f(227);break;case 233:f(233);break;case 241:f(241);break;case 242:f(242);break;case 248:f(248);break;case 251:f(251);break;case 254:f(254);break;case 258:f(258);break;case 260:f(260);break;case 272:f(272);break;case 70:f(70);break;case 79:f(79);break;case 81:f(81);break;case 83:f(83);break;case 84:f(84);break;case 89:f(89);break;case 96:f(96);break;case 99:f(99);break;case 100:f(100);break;case 102:f(102);break;case 104:f(104);break;case 123:f(123);break;case 130:f(130);break;case 131:f(131);break;case 139:f(139);break;case 152:f(152);break;case 153:f(153);break;case 159:f(159);break;case 169:f(169);break;case 190:f(190);break;case 197:f(197);break;case 201:f(201);break;case 220:f(220);break;case 223:f(223);break;case 226:f(226);break;case 232:f(232);break;case 238:f(238);break;case 249:f(249);break;case 250:f(250);break;case 255:f(255);break;case 259:f(259);break;case 261:f(261);break;case 265:f(265);break;case 95:f(95);break;case 174:f(174);break;default:f(219)}E.endNonterminal("NCName",g)}function f(e){y==e?(l(),E.terminal(i.TOKEN[y],b,w>x?x:w),m=b,g=w,y=0):d(b,w,0,y,e)}function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}function c(e){var t;for(;;){t=C(e);if(t!=30)break}return t}function h(e){y==0&&(y=c(e),b=T,w=N)}function p(e){y==0&&(y=C(e),b=T,w=N)}function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n<x?S.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<x?S.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,N=n)}r>>=12;if(r==0){N=n-1;var f=N<x?S.charCodeAt(N):0;return f>=56320&&f<57344&&--N,d(T,N,s,-1,-1)}if(t)for(var v=r>>9;v>0;--v){--N;var f=N<x?S.charCodeAt(N):0;f>=56320&&f<57344&&--N}else N-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return S},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=S.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+S.substring(e.getBegin(),Math.min(S.length,e.getBegin()+64))+"..."},this.parse_start=function(){E.startNonterminal("start",g),h(14);switch(y){case 58:f(58);break;case 57:f(57);break;case 59:f(59);break;case 43:f(43);break;case 45:f(45);break;case 44:f(44);break;case 37:f(37);break;case 41:f(41);break;case 277:f(277);break;case 274:f(274);break;case 42:f(42);break;case 46:f(46);break;case 52:f(52);break;case 65:f(65);break;case 66:f(66);break;case 49:f(49);break;case 51:f(51);break;case 56:f(56);break;case 54:f(54);break;case 36:f(36);break;case 276:f(276);break;case 40:f(40);break;case 5:f(5);break;case 4:f(4);break;case 6:f(6);break;case 15:f(15);break;case 16:f(16);break;case 18:f(18);break;case 19:f(19);break;case 20:f(20);break;case 8:f(8);break;case 9:f(9);break;case 7:f(7);break;case 35:f(35);break;default:o()}E.endNonterminal("start",g)},this.parse_StartTag=function(){E.startNonterminal("StartTag",g),h(8);switch(y){case 61:f(61);break;case 53:f(53);break;case 29:f(29);break;case 60:f(60);break;case 37:f(37);break;case 41:f(41);break;default:f(35)}E.endNonterminal("StartTag",g)},this.parse_TagContent=function(){E.startNonterminal("TagContent",g),p(11);switch(y){case 25:f(25);break;case 9:f(9);break;case 10:f(10);break;case 58:f(58);break;case 57:f(57);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;default:f(35)}E.endNonterminal("TagContent",g)},this.parse_AposAttr=function(){E.startNonterminal("AposAttr",g),p(10);switch(y){case 23:f(23);break;case 27:f(27);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;case 41:f(41);break;default:f(35)}E.endNonterminal("AposAttr",g)},this.parse_QuotAttr=function(){E.startNonterminal("QuotAttr",g),p(9);switch(y){case 22:f(22);break;case 26:f(26);break;case 21:f(21);break;case 31:f(31);break;case 275:f(275);break;case 278:f(278);break;case 274:f(274);break;case 37:f(37);break;default:f(35)}E.endNonterminal("QuotAttr",g)},this.parse_CData=function(){E.startNonterminal("CData",g),p(1);switch(y){case 14:f(14);break;case 67:f(67);break;default:f(35)}E.endNonterminal("CData",g)},this.parse_XMLComment=function(){E.startNonterminal("XMLComment",g),p(0);switch(y){case 12:f(12);break;case 50:f(50);break;default:f(35)}E.endNonterminal("XMLComment",g)},this.parse_PI=function(){E.startNonterminal("PI",g),p(3);switch(y){case 13:f(13);break;case 62:f(62);break;case 63:f(63);break;default:f(35)}E.endNonterminal("PI",g)},this.parse_Pragma=function(){E.startNonterminal("Pragma",g),p(2);switch(y){case 11:f(11);break;case 38:f(38);break;case 39:f(39);break;default:f(35)}E.endNonterminal("Pragma",g)},this.parse_Comment=function(){E.startNonterminal("Comment",g),p(4);switch(y){case 55:f(55);break;case 44:f(44);break;case 32:f(32);break;default:f(35)}E.endNonterminal("Comment",g)},this.parse_CommentDoc=function(){E.startNonterminal("CommentDoc",g),p(6);switch(y){case 33:f(33);break;case 34:f(34);break;case 55:f(55);break;case 44:f(44);break;default:f(35)}E.endNonterminal("CommentDoc",g)},this.parse_QuotString=function(){E.startNonterminal("QuotString",g),p(5);switch(y){case 3:f(3);break;case 2:f(2);break;case 1:f(1);break;case 37:f(37);break;default:f(35)}E.endNonterminal("QuotString",g)},this.parse_AposString=function(){E.startNonterminal("AposString",g),p(7);switch(y){case 21:f(21);break;case 31:f(31);break;case 23:f(23);break;case 24:f(24);break;case 41:f(41);break;default:f(35)}E.endNonterminal("AposString",g)},this.parse_Prefix=function(){E.startNonterminal("Prefix",g),h(13),l(),a(),E.endNonterminal("Prefix",g)},this.parse__EQName=function(){E.startNonterminal("_EQName",g),h(12),l(),o(),E.endNonterminal("_EQName",g)};var v,m,g,y,b,w,E,S,x,T,N};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<279;i+=32){var s=i,o=(i>>5)*2066+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[67,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,37,31,37,38,39,40,41,42,43,44,45,46,31,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,31,62,63,64,65,37],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,67,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,37,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,37,31,37,38,39,40,41,42,43,44,45,46,31,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,31,62,63,64,65,37,37,37,37,37,37,37,37,37,37,37,37,31,31,37,37,37,37,37,37,37,66,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,37,31,37,31,31,37],r.INITIAL=[1,2,49155,57348,5,6,7,8,9,10,11,12,13,14,15],r.TRANSITION=[19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,17408,19288,17439,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22126,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17672,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19469,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,36919,18234,18262,18278,18294,18320,18336,18361,18397,18419,18432,18304,18448,18485,18523,18553,18583,18599,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,18825,18841,18871,18906,18944,18960,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19074,36169,17439,36866,17466,36890,36866,22314,19105,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22126,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17672,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19469,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,36919,18234,18262,18278,18294,18320,18336,18361,18397,18419,18432,18304,18448,18485,18523,18553,18583,18599,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,18825,18841,18871,18906,18944,18960,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22182,19288,19121,36866,17466,18345,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19273,19552,19304,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19332,17423,19363,36866,17466,17537,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,18614,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,19391,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,19427,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36154,19288,19457,36866,17466,17740,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22780,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22375,22197,18469,36866,17466,36890,36866,21991,24018,22987,17556,17575,22288,17486,17509,17525,18373,21331,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,19485,19501,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19537,22390,19568,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19596,19611,19457,36866,17466,36890,36866,18246,19627,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22242,20553,19457,36866,17466,36890,36866,18648,30477,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36472,19288,19457,36866,17466,17809,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,21770,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,19643,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,19672,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,20538,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,17975,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22345,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19726,19742,21529,24035,23112,26225,23511,27749,27397,24035,34360,24035,24036,23114,35166,23114,23114,19758,23511,35247,23511,23511,28447,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,19821,23511,23511,23511,23511,23512,19441,36539,24035,24035,24035,24035,19846,19869,23114,23114,23114,28618,32187,19892,23511,23511,23511,34585,20402,36647,24035,24035,24036,23114,33757,23114,23114,23029,20271,23511,27070,23511,23511,30562,24035,24035,29274,26576,23114,23114,31118,23036,29695,23511,23511,32431,23634,30821,24035,23110,19913,23114,23467,31261,23261,34299,19932,24035,32609,19965,35389,19984,27689,19830,29391,29337,20041,22643,35619,33728,20062,20121,20166,35100,26145,20211,23008,19876,20208,20227,25670,20132,26578,27685,20141,20243,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36094,19288,19457,36866,17466,21724,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22735,19552,20287,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22750,19288,21529,24035,23112,28056,23511,29483,28756,24035,24035,24035,24036,23114,23114,23114,23114,20327,23511,23511,23511,23511,31156,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,20371,23511,23511,23511,23511,27443,20395,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,29457,29700,23511,23511,23511,23511,33444,20402,24035,24035,24035,24036,23114,23114,23114,23114,28350,20421,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,20447,20475,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,20523,22257,20569,20783,21715,17603,20699,20837,20614,20630,21149,20670,21405,17486,17509,17525,18373,19179,20695,20716,20732,20755,19194,18042,21641,20592,20779,20598,21412,17470,17591,20896,17468,17619,20799,20700,21031,20744,20699,20828,18075,21259,20581,20853,18048,20868,20884,17756,17784,17800,17825,17854,21171,21200,20931,20947,21378,20955,20971,18086,20645,21002,20986,18178,17960,18012,18381,18064,29176,21044,21438,21018,21122,21393,21060,21844,21094,20654,17493,18150,18166,18214,25967,20763,21799,21110,21830,21138,21246,21301,18336,18361,21165,21187,20812,21216,21232,21287,21317,18553,21347,21363,21428,21454,21271,21483,21499,21515,21575,21467,18712,21591,21633,21078,18189,18198,20679,21657,21701,21074,21687,21740,21756,21786,21815,21860,21876,21892,21946,21962,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36457,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,36813,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,21981,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,22151,22007,18884,17900,17922,17944,18178,17960,18012,18381,18064,27898,17884,18890,17906,17928,22042,25022,18130,36931,36963,17493,18150,18166,22070,22112,25026,18134,36935,18262,18278,18294,18320,18336,18361,22142,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36109,19288,18469,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22167,19288,19457,36866,17466,17768,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22227,36487,22273,36866,17466,36890,36866,19316,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18749,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,22304,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,19580,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22330,19089,19457,36866,17466,18721,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22765,19347,19457,36866,17466,36890,36866,18114,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34541,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,22540,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29908,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22561,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,23837,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22584,23511,23511,23511,23511,29116,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,27443,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,22839,23511,23511,23511,23511,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36442,19288,21605,24035,23112,28137,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,31568,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22690,19288,19457,36866,17466,36890,36866,21991,27584,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,22659,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22360,19552,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22675,22811,19457,36866,17466,36890,36866,19133,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,22827,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36064,19288,22865,22881,32031,22897,22913,22956,29939,24035,24035,24035,23003,23114,23114,23114,23024,22420,23511,23511,23511,23052,29116,23073,29268,24035,25563,26915,23106,23131,23114,23114,23159,23181,23197,23248,23511,23511,23282,23305,22493,32364,24035,33472,30138,26325,31770,33508,27345,33667,23114,23321,23473,23351,35793,36576,23511,23375,22500,24145,24035,29197,20192,24533,23440,23114,19017,23459,22839,23489,23510,23511,33563,23528,32076,25389,24035,26576,23561,23583,23114,32683,22516,23622,23655,23511,23634,35456,37144,23110,23683,34153,20499,32513,25824,23705,24035,24035,23111,23114,19874,27078,33263,19830,24035,23112,19872,27741,23266,24036,23114,30243,20507,32241,20150,31862,27464,35108,23727,23007,35895,34953,26578,27685,20141,24569,31691,19787,33967,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36427,19552,21605,24035,23112,32618,23511,29483,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,29116,19803,24035,24035,24035,27027,26576,23114,23114,23114,31471,23756,22468,23511,23511,23511,34687,23772,22493,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34564,23788,24035,24035,24035,21559,23828,23114,23114,23114,25086,22839,23853,23511,23511,23511,23876,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,31761,23909,23953,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36049,19288,21605,30825,23112,23987,23511,24003,31001,27617,24034,24035,24036,24052,24089,23114,23114,22420,24109,24168,23511,23511,29116,24188,27609,20017,29516,24035,26576,24222,19968,23114,24252,33811,22468,24270,33587,23511,24320,27443,22493,24035,24035,24035,24035,24339,23113,23114,23114,23114,28128,28618,29700,23511,23511,23511,28276,34564,20402,24035,24035,32929,24036,23114,23114,23114,24357,23029,22839,23511,23511,23511,24377,25645,24035,34112,24035,26576,23114,26643,23114,32683,22516,23511,25638,23511,23711,24035,24395,27809,23114,24414,20499,24432,30917,23628,24035,30680,23111,23114,30233,27078,25748,24452,24035,23112,19872,27741,23266,24036,23114,24475,19829,26577,26597,26154,24519,24556,24596,23007,20046,20132,26578,24634,20141,24569,31691,24679,24727,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36412,19288,21605,19943,34861,32618,26027,29483,32016,32050,36233,24776,35574,24801,24819,32671,31289,22420,24868,24886,20087,26849,29116,19803,24035,24035,24035,36228,26576,23114,23114,23114,24981,33811,22468,23511,23511,23511,29028,27443,22493,24923,27965,24035,24035,32797,24946,23443,23114,23114,29636,24997,22849,28252,23511,23511,23511,25042,25110,24035,24035,34085,24036,25133,23114,23114,25152,23029,22839,25169,23511,36764,23511,25645,30403,24035,25186,26576,31806,24093,25212,32683,22516,32713,26245,34293,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,24035,32406,23111,23114,28676,30944,27689,25234,24035,23112,19872,37063,23266,24036,23114,30243,20379,26100,29218,20211,30105,25257,25284,23007,20046,20132,26578,27685,20141,24569,24834,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36034,19288,21671,25314,25072,25330,25346,25362,29939,29951,35288,29984,23812,27216,25405,25424,30456,22584,26292,25461,25480,31592,29116,25516,34963,25545,27007,25579,33937,25614,25661,25686,34872,25702,25718,25734,25769,25795,25811,25840,22493,26533,25856,24035,25876,30763,27481,25909,23114,28987,25936,25954,29700,25983,23511,31412,26043,26063,22568,29241,29592,26116,31216,35383,26170,34783,26194,26221,22839,26241,26261,22477,26283,26308,27306,31035,24655,26576,29854,33386,26341,32683,22516,32153,30926,26361,19996,26381,35463,26397,26424,34646,26478,35605,31386,26494,35567,31964,22940,23689,25218,30309,32289,19830,33605,23112,32109,27733,27084,24496,35886,35221,26525,36602,26549,26558,26574,26594,26613,26629,26666,26700,26578,27685,23740,24285,31691,26733,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36397,19552,18991,25887,28117,32618,26776,29483,29939,26802,24035,24035,24036,28664,23114,23114,23114,22420,30297,23511,23511,23511,29116,19803,24035,24035,24035,25559,26576,23114,23114,23114,30525,33811,22468,23511,23511,23511,28725,27443,22493,24035,24035,27249,24035,24035,23113,23114,23114,26827,23114,28618,29700,23511,23511,26845,23511,34564,20402,24035,24035,26979,24036,23114,23114,23114,24974,23029,22839,23511,23511,23511,26865,25645,24035,24035,24035,26576,23114,23114,23114,32683,22516,23511,23511,23511,23634,24035,24035,23110,23114,23114,20499,23511,23261,23628,33305,24035,25598,23114,19874,34253,27689,19830,24035,23112,19872,27741,23266,24036,23114,26886,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,26931,24569,26439,26947,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36019,19288,26995,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,27043,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,27061,23511,23511,23511,23511,23512,24694,24035,24035,29978,24035,24035,23113,23114,33114,23114,23114,30010,29700,23511,35913,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,27155,26576,23114,23114,30447,23036,29695,23511,23511,30935,20099,24152,25529,27100,34461,27121,22625,29156,26009,27137,30422,31903,31655,28870,27171,32439,31731,19830,27232,22612,27265,26786,25494,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,20342,27288,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,27322,27339,28020,27361,27382,29939,24035,24035,32581,24036,23114,23114,23114,27425,22420,23511,23511,23511,27442,28306,19803,24035,24035,24035,24035,26710,23114,23114,23114,23114,32261,22468,23511,23511,23511,23511,35719,24694,29510,24035,24035,24035,24035,26717,23114,23114,23114,23114,28618,32217,23511,23511,23511,23511,34585,20402,24035,24035,24035,27459,23114,23114,23114,36252,23029,20271,23511,23511,23511,28840,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,27480,34483,28401,29761,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36382,19288,21605,27497,27517,28504,28898,27569,29939,29401,27600,27323,27633,19025,27662,23114,27705,22420,20483,27721,23511,27765,28306,19803,23540,24035,24610,27781,27805,26650,23114,28573,32990,25920,22468,26870,23511,26684,34262,34737,25057,34622,24035,24035,23971,24206,27825,27847,23114,23114,27865,27885,35766,27914,23511,23511,32766,32844,27934,28795,26909,27955,26092,27988,25445,28005,28036,28052,21965,23511,32196,19897,28072,28102,36534,21541,23801,28153,28180,28197,28221,23036,32695,28251,28268,28292,23667,34825,23930,24580,28322,28344,31627,28366,25996,23628,24035,24035,23111,23114,19874,27078,27689,35625,33477,33359,27674,28393,33992,24036,23114,30243,19829,28417,28433,28463,23008,19876,20208,23007,20046,20132,28489,28520,20141,24569,31691,19787,28550,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,24035,23112,32618,23511,31507,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,24694,28589,24035,24035,24035,24035,28608,23114,23114,23114,23114,28618,20431,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36004,19288,28634,31951,28565,28702,28718,28741,32544,20175,28792,32086,20105,28811,29059,29862,28856,22420,28886,30354,23359,28922,28306,28952,23888,26320,36506,24035,29331,28968,36609,23114,29003,31661,27061,30649,27366,23511,29023,27918,24694,24035,24035,23893,33094,30867,23113,23114,23114,29044,34184,30010,29700,23511,23511,29081,29102,34585,20402,27789,24035,24035,24036,23114,29132,23114,23114,23029,20271,23511,29153,23511,23511,30562,30174,24035,24035,27409,25438,23114,23114,29172,36668,31332,23511,23511,29192,30144,24035,23110,30203,23114,23467,31544,23261,23628,24035,22545,23111,23114,29213,27078,27689,29234,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,29257,23008,19876,20208,28768,29290,29320,34776,29353,20141,22435,29378,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36367,19288,21605,34616,19006,32618,31497,31507,36216,20184,24035,34393,29424,34668,23114,34900,29447,22420,30360,23511,37089,29473,28306,19803,29499,24398,24035,24035,26576,31799,29532,29550,23114,33811,22468,32298,29571,31184,23511,23512,37127,36628,29589,24035,24135,24035,23113,29608,23114,27831,29634,28618,29652,30037,23511,24172,29671,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,29555,29690,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,29719,24035,23110,29738,23114,23467,34035,29756,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,29777,34364,28181,30243,29799,31920,27272,27185,23008,31126,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29828,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35989,19552,19687,35139,28649,29878,29894,29924,29939,23224,23085,31969,24036,35173,24752,24803,23114,22420,31190,30318,24870,23511,28306,29967,23967,24035,24035,24035,26576,3e4,23114,23114,23114,33811,22468,30026,23511,23511,23511,23512,26078,24035,24035,24035,30053,37137,30071,23114,23114,33368,25136,28618,30723,23511,23511,37096,31356,34585,20402,30092,30127,30160,24036,35740,30219,24960,30259,23029,20271,34042,30285,30342,30376,23289,30055,30400,30419,30438,32640,33532,33514,30472,18792,26267,24323,23057,30493,23639,20008,30196,33188,30517,20075,23511,30541,23628,30578,33928,28776,30594,19874,30610,30637,19830,30677,27646,19872,25779,23266,23232,35016,30243,30696,29812,30712,30746,27206,30779,30807,23007,33395,20132,26578,27685,31703,22928,31691,19787,31079,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36352,19288,23335,30841,26131,30888,30904,30986,29939,24035,24704,31017,20025,23114,26178,31051,31095,22420,23511,22524,31142,31172,28534,31206,35497,25196,24035,28592,24503,23114,31239,31285,23114,31305,31321,31355,31372,31407,23511,30556,24694,24035,27501,19805,24035,24035,23113,23114,31428,24066,23114,28618,29700,23511,31837,18809,23511,34585,31448,24035,24035,24035,23090,23114,23114,23114,23114,31619,35038,23511,23511,23511,23511,33714,24035,33085,24035,29431,23114,31467,23114,23143,31487,23511,31523,23511,35195,36783,24035,30111,23567,23114,23467,31543,31560,23628,24035,24035,23111,23114,19874,30953,31584,34508,24035,31608,26345,37055,23266,31643,31677,31719,31747,31786,31822,26898,23008,19876,31859,23007,20046,20132,26578,27685,20141,24569,31691,31878,31936,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35974,19288,21605,27972,35663,31985,29655,32001,36715,24785,25893,23545,31912,19853,19916,25938,24540,22420,31843,29674,29573,32735,28936,19803,24035,24035,32047,24035,26576,23114,23114,27544,23114,33811,22468,23511,23511,32161,23511,23512,32066,24035,33313,24035,24035,24035,23113,27426,32102,23114,23114,28618,32125,23511,32144,23511,23511,33569,20402,24035,27045,24035,24036,23114,23114,28328,23114,30076,32177,23511,23511,30384,23511,30562,24035,24035,24035,26576,23114,23114,23114,23595,32212,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,22635,25753,32233,32257,32277,19829,26577,26597,20211,23008,19876,32322,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,32352,35285,32380,34196,33016,30661,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,32404,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,32422,23511,23511,23511,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,30269,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,19949,24035,23111,32455,19874,31269,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36337,19552,19209,21617,26509,32475,32491,32529,29939,24035,32578,25241,32597,23114,32634,29007,32656,22420,23511,32729,26365,32751,28306,32788,32882,24035,24035,32813,36727,23114,33182,23114,27553,33235,32829,23511,32706,23511,28906,28377,26962,32881,32904,32898,32920,24035,32953,23114,32977,26408,23114,28164,33006,23511,33039,35774,23511,32306,20402,33076,30872,24035,24036,25408,33110,28979,23114,23029,20271,35835,33130,33054,23511,30562,33148,24035,24035,33167,23114,23114,33775,23036,20459,23511,23511,25464,24646,24035,24035,22446,23114,23114,25627,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,31391,33204,33220,33251,33287,26577,26597,20211,33329,19876,33345,23007,20046,20132,26578,27685,28473,22599,31691,33411,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35959,19288,21907,27243,29843,32618,33427,31507,29939,33460,34090,24035,24036,33493,24416,33530,23114,22420,33548,24379,33585,23511,28306,19803,33603,24202,24035,24035,25593,33749,28205,23114,23114,32388,22468,33853,33060,23511,23511,31339,33621,24035,24035,34397,24618,30757,33663,23114,23114,33683,35684,28618,26678,23511,23511,32506,33699,34585,20402,24035,32562,26973,24036,23114,23114,33377,33773,23029,20271,23511,23511,30621,23511,23860,24035,33791,21553,26576,36558,23114,33809,23036,32857,26047,23511,33827,23634,24035,24035,23110,23114,23114,31252,23511,33845,23628,24035,24459,23111,23114,33869,27078,30791,29783,24035,24742,19872,33895,23266,26462,19710,33879,33919,26577,26597,24123,24930,21930,20208,30501,33953,25268,20252,33983,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36322,19552,23390,33634,35154,34008,34024,34058,35544,34106,34128,26811,33151,34144,34169,34212,23114,34228,34244,34278,34315,23511,34331,34347,34380,34413,24035,24663,26576,34429,34453,34477,29534,33811,22468,34499,34524,34557,25170,34580,35436,23937,34601,24035,24341,26453,23113,34638,34662,23114,24236,28618,34684,34703,34729,23511,35352,34753,34799,24035,34815,32558,34848,34888,35814,34923,23165,29137,23606,30326,30730,34939,33023,30562,36848,34979,24035,24847,34996,23114,23114,35032,29695,35054,23511,23511,35091,33296,35124,24296,28235,24361,36276,32772,35067,35189,27301,30855,24852,22452,35211,35237,35316,25500,35270,23405,24304,35304,29362,24036,23114,35332,19829,26577,26597,20211,23008,19876,20208,35368,28823,23920,32336,35405,20141,24569,31691,35421,35479,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35944,22795,21605,33647,35877,35513,30962,35529,34073,35557,24035,24035,20405,31107,23114,23114,23114,35590,34713,23511,23511,23511,35641,19803,29408,32937,25298,24035,35657,23115,27849,24760,35679,26205,22468,23511,35700,24907,24901,35075,31893,34980,24035,24035,24035,24035,23113,35009,23114,23114,23114,28618,35716,30970,23511,23511,23511,34585,23215,24035,24035,24035,24036,35735,23114,23114,23114,27105,35756,35790,23511,23511,23511,35254,35446,24035,24035,31223,35809,23114,23114,23036,36825,35830,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,31031,20355,19872,33903,23266,24036,23114,28686,19829,26577,26597,20211,23008,23424,20208,24711,31065,24486,26578,27685,20141,19773,35851,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36307,19288,21605,35494,19702,32618,33437,31507,29939,25117,24035,27939,24036,27869,23114,26829,23114,22420,23494,23511,33132,23511,28306,19803,24035,34832,24035,24035,26576,23114,25153,23114,23114,33811,22468,23511,23511,35911,23511,23512,24694,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,35929,19288,21605,25860,23112,36185,23511,36201,29939,24035,24035,24035,24036,23114,23114,23114,23114,22420,23511,23511,23511,23511,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,26748,24035,24035,24035,24035,24035,36249,23114,23114,23114,23114,28618,28835,23511,23511,23511,23511,34585,20402,24035,27151,24035,26760,23114,27989,23114,23114,36268,20271,23511,24436,23511,29703,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36292,19288,21605,36503,21922,32618,34534,31507,36522,24035,33793,24035,35864,23114,23114,36555,23417,22420,23511,23511,36574,26020,28306,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,33811,22468,23511,23511,23511,23511,23512,36592,24035,24035,36625,24035,24035,23113,23114,32961,23114,23114,29618,29700,23511,29086,23511,23511,34585,20402,36644,24035,24035,24036,29740,23114,23114,23114,29065,36663,31527,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36079,19288,21605,31451,23112,36684,23511,36700,29939,24035,24035,24035,30185,23114,23114,23114,27526,22420,23511,23511,23511,32865,28306,19803,36743,24035,27017,24035,26576,27535,23114,31432,23114,33811,22468,33271,23511,32128,23511,23512,24694,24035,27196,24035,24035,24035,23113,32459,23114,23114,23114,28618,29700,33829,36762,23511,23511,34585,20402,24035,36746,24035,29722,23114,23114,34437,23114,34907,20271,23511,23511,18801,23511,23206,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,36837,24035,24035,33739,23114,23114,25094,23511,23261,23628,24035,36780,23111,24073,19874,27078,35344,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22720,19288,36799,36866,17466,36890,36864,21991,22211,22987,17556,17575,22288,17486,17509,17525,18373,17631,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36883,36906,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,22705,19288,19457,36866,17466,36890,36866,19375,22971,22987,17556,17575,22288,17486,17509,17525,18373,18855,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36124,19288,36951,36866,17466,36890,36866,21991,22404,22987,17556,17575,22288,17486,17509,17525,18373,18567,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36979,36995,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,19457,36866,17466,36890,36866,21991,22971,22987,17556,17575,22288,17486,17509,17525,18373,18027,22984,17553,17572,22285,18462,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,17619,22083,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,36139,19288,21529,24035,23112,23033,23511,31507,25377,24035,24035,24035,24036,23114,23114,23114,23114,37040,23511,23511,23511,23511,28086,19803,24035,24035,24035,24035,26576,23114,23114,23114,23114,24254,37079,23511,23511,23511,23511,23512,34766,24035,24035,24035,24035,24035,23113,23114,23114,23114,23114,28618,29700,23511,23511,23511,23511,34585,20402,24035,24035,24035,24036,23114,23114,23114,23114,23029,20271,23511,23511,23511,23511,30562,24035,24035,24035,26576,23114,23114,23114,23036,29695,23511,23511,23511,23634,24035,24035,23110,23114,23114,23467,23511,23261,23628,24035,24035,23111,23114,19874,27078,27689,19830,24035,23112,19872,27741,23266,24036,23114,30243,19829,26577,26597,20211,23008,19876,20208,23007,20046,20132,26578,27685,20141,24569,31691,19787,29304,20268,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,37112,37160,18469,36866,17466,36890,36866,17656,37174,22987,17556,17575,22288,17486,17509,17525,18373,18537,22984,17553,17572,22285,18780,17990,18622,19411,20306,17996,17689,17470,17591,20896,17468,36883,36906,36867,19404,20299,36866,17647,17862,18921,19514,17705,20311,37017,17728,17756,17784,17800,17825,17854,18403,18928,19521,17712,37008,37024,17878,18884,17900,17922,17944,18178,17960,18012,18381,18064,18218,17884,18890,17906,17928,18102,25022,18130,36931,36963,17493,18150,18166,18214,25010,25026,18134,36935,18262,18278,18294,18320,18336,18361,18397,18274,22096,18304,18448,18485,18523,18553,18583,19149,18638,18497,19656,18664,18680,18507,18696,19164,18712,18737,17681,22026,20906,20915,22054,17838,17450,22022,18765,19225,18841,18871,18906,19241,19257,18976,19041,19056,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,19058,53264,18,49172,57366,24,8192,28,102432,127011,110630,114730,106539,127011,127011,127011,53264,18,18,0,0,57366,0,24,24,24,0,28,28,28,28,102432,0,0,127011,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2170880,3002368,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2576384,2215936,2215936,2215936,2416640,2424832,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2543616,2215936,2215936,2215936,2215936,2215936,2629632,2215936,2617344,2215936,2215936,2215936,2215936,2215936,2215936,2691072,2215936,2707456,2215936,2715648,2215936,2723840,2764800,2215936,2215936,2797568,2215936,2822144,2215936,2215936,2854912,2215936,2215936,2215936,2912256,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,180224,0,0,2174976,0,0,2170880,2617344,2170880,2170880,2170880,2170880,2170880,2170880,2691072,2170880,2707456,2170880,2715648,2170880,2723840,2764800,2170880,2170880,2797568,2170880,2170880,2797568,2170880,2822144,2170880,2170880,2854912,2170880,2170880,2170880,2912256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2609152,2215936,2215936,2215936,2215936,2215936,2215936,2654208,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,184599,280,0,2174976,0,0,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,544,0,546,0,0,2179072,0,0,0,552,0,0,2170880,2170880,2170880,3117056,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,0,0,0,2158592,2158592,2232320,2232320,0,2240512,2240512,0,0,0,644,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,3129344,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2400256,2215936,2215936,2215936,2215936,2711552,2170880,2170880,2170880,2170880,2170880,2760704,2768896,2789376,2813952,2170880,2170880,2170880,2875392,2904064,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2453504,2457600,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,167936,0,0,0,0,2174976,0,0,2215936,2215936,2514944,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2592768,2215936,2215936,2215936,2215936,2215936,2215936,2215936,32768,0,0,0,0,0,2174976,32768,0,2633728,2215936,2215936,2215936,2215936,2215936,2215936,2711552,2215936,2215936,2215936,2215936,2215936,2760704,2768896,2789376,2813952,2215936,2215936,2215936,2875392,2904064,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,0,65819,2215936,2215936,3031040,2215936,3055616,2215936,2215936,2215936,2215936,3092480,2215936,2215936,3125248,2215936,2215936,2215936,2215936,2215936,2215936,3002368,2215936,2215936,2170880,2170880,2494464,2170880,2170880,0,0,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,0,0,2379776,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2445312,2170880,2465792,2473984,2170880,2170880,2170880,2170880,2170880,2170880,2523136,2170880,2170880,2641920,2170880,2170880,2170880,2699264,2170880,2727936,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2879488,2170880,2916352,2170880,2170880,2170880,2879488,2170880,2916352,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3026944,2170880,2170880,3063808,2170880,2170880,3112960,2170880,2170880,3133440,2170880,2170880,3112960,2170880,2170880,3133440,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,2379776,2215936,2523136,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2596864,2215936,2621440,2215936,2215936,2641920,2215936,2215936,0,0,0,0,0,0,2179072,548,0,0,0,0,287,2170880,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3117056,2170880,2170880,2170880,2170880,2215936,2215936,2699264,2215936,2727936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2879488,2215936,2916352,2215936,2215936,0,0,0,0,188416,0,2179072,0,0,0,0,0,287,2170880,0,2171019,2171019,2171019,2400395,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3031179,2171019,3055755,2171019,2171019,2215936,3133440,2215936,2215936,2215936,3162112,2215936,2215936,3182592,3186688,2215936,0,0,0,0,0,0,0,0,0,0,2171019,2171019,2171019,2171019,2171019,2171019,2523275,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2597003,2171019,2621579,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,4337664,28,2170880,2170880,2170880,2629632,2170880,2170880,2170880,2170880,2719744,2744320,2170880,2170880,2170880,2834432,2838528,2170880,2908160,2170880,2170880,2936832,2215936,2215936,2215936,2215936,2719744,2744320,2215936,2215936,2215936,2834432,2838528,2215936,2908160,2215936,2215936,2936832,2215936,2215936,2985984,2215936,2994176,2215936,2215936,3014656,2215936,3059712,3076096,3088384,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2445312,2215936,2465792,2473984,2215936,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,2171166,2171166,2171166,2171019,2171019,2494603,2171019,2171019,2215936,2215936,2215936,3215360,0,0,0,0,0,0,0,0,0,0,0,0,0,2379776,2170880,2170880,2170880,2170880,2985984,2170880,2994176,2170880,2170880,3016168,2170880,3059712,3076096,3088384,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,124,124,0,128,128,2170880,2170880,2170880,3215360,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2486272,2170880,2170880,2506752,2170880,2170880,2170880,2535424,2539520,2170880,2170880,2588672,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,2170880,2170880,3051520,2170880,2170880,2170880,2170880,2170880,2170880,3170304,0,2387968,2392064,2170880,2170880,2433024,2170880,2170880,2170880,3170304,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2486272,2215936,2215936,2506752,2215936,2215936,2215936,2535424,2539520,2215936,2215936,2588672,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,136,0,2215936,2215936,2920448,2215936,2215936,2215936,2990080,2215936,2215936,2215936,2215936,3051520,2215936,2215936,2215936,2215936,2215936,2215936,2215936,3108864,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,3026944,2215936,2215936,3063808,2215936,2215936,3112960,2215936,2215936,2215936,3170304,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2453504,2457600,2170880,2170880,2170880,2486272,2170880,2170880,2506752,2170880,2170880,2170880,2537049,2539520,2170880,2170880,2588672,2170880,2170880,2170880,1508,2170880,2170880,2170880,1512,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,2170880,2170880,2580480,2170880,2605056,2637824,2170880,2170880,18,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2686976,2748416,2170880,2170880,2170880,2924544,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3121152,2170880,2170880,3145728,3158016,3166208,2170880,2420736,2428928,2170880,2478080,2170880,2170880,2170880,2170880,0,0,2170880,2170880,2170880,2170880,2646016,2670592,0,0,3145728,3158016,3166208,2387968,2392064,2215936,2215936,2433024,2215936,2461696,2215936,2215936,2215936,2510848,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,0,2170880,2215936,2215936,2580480,2215936,2605056,2637824,2215936,2215936,2686976,2748416,2215936,2215936,2215936,2924544,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,286,2170880,2215936,2215936,2215936,2215936,2215936,3121152,2215936,2215936,3145728,3158016,3166208,2387968,2392064,2170880,2170880,2433024,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,1625,2170880,2170880,2580480,2170880,2605056,2637824,2170880,647,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2576384,2170880,2170880,2170880,2170880,2170880,2609152,2170880,2170880,2686976,0,0,2748416,2170880,2170880,0,2170880,2924544,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,0,0,28,28,2170880,3141632,2215936,2420736,2428928,2215936,2478080,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2646016,2670592,2752512,2756608,2846720,2961408,2215936,2998272,2215936,3010560,2215936,2215936,2215936,3141632,2170880,2420736,2428928,2752512,2756608,0,2846720,2961408,2170880,2998272,2170880,3010560,2170880,2170880,2170880,3141632,2170880,2170880,2490368,2215936,2490368,2215936,2215936,2215936,2547712,2555904,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,245760,0,3129344,2170880,2170880,2490368,2170880,2170880,2170880,0,0,2547712,2555904,2170880,2170880,2170880,0,0,0,0,0,0,0,0,0,2220032,0,0,45056,0,2584576,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2158592,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,0,1482,97,97,97,97,97,97,97,1354,97,97,97,97,97,97,97,97,1148,97,97,97,97,97,97,97,2584576,2170880,2170880,1512,0,2170880,2170880,2170880,2170880,2170880,2170880,2441216,2170880,2527232,2170880,2600960,2170880,2850816,2170880,2170880,2170880,3022848,2215936,2441216,2215936,2527232,2215936,2600960,2215936,2850816,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,287,2170880,2215936,3022848,2170880,2441216,2170880,2527232,0,0,2170880,2600960,2170880,0,2850816,2170880,2170880,2170880,2170880,2170880,2523136,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2596864,2170880,2621440,2170880,2170880,2641920,2170880,2170880,2170880,3022848,2170880,2519040,2170880,2170880,2170880,2170880,2170880,2215936,2519040,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2453504,2457600,2170880,2170880,2170880,2170880,2170880,2170880,2514944,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2592768,2170880,2170880,2519040,0,2024,2170880,2170880,0,2170880,2170880,2170880,2396160,2170880,2170880,2170880,2170880,3018752,2396160,2215936,2215936,2215936,2215936,3018752,2396160,0,2024,2170880,2170880,2170880,2170880,3018752,2170880,2650112,2965504,2170880,2215936,2650112,2965504,2215936,0,0,2170880,2650112,2965504,2170880,2551808,2170880,2551808,2215936,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,141,45,45,67,67,67,67,67,224,67,67,238,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,0,2551808,2170880,2170880,2215936,0,2170880,2170880,2215936,0,2170880,2170880,2215936,0,2170880,2977792,2977792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53264,18,49172,57366,24,8192,29,102432,127011,110630,114730,106539,127011,127011,127011,53264,18,18,49172,0,0,0,24,24,24,0,28,28,28,28,102432,127,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,0,0,0,0,2220032,110630,0,0,0,114730,106539,136,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,4256099,4256099,24,24,0,28,28,2170880,2461696,2170880,2170880,2170880,2510848,2170880,2170880,0,2170880,2170880,2580480,2170880,2605056,2637824,2170880,2170880,2170880,2547712,2555904,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3129344,2215936,2215936,543,543,545,545,0,0,2179072,0,550,551,551,0,287,2171166,2171166,18,0,0,0,0,0,0,0,0,2220032,0,0,645,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,149,2584576,2170880,2170880,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2441216,2170880,2527232,2170880,2600960,2519040,0,0,2170880,2170880,0,2170880,2170880,2170880,2396160,2170880,2170880,2170880,2170880,3018752,2396160,2215936,2215936,2215936,2215936,3018752,2396160,0,0,2170880,2170880,2170880,2170880,3018752,2170880,2650112,2965504,53264,18,49172,57366,24,155648,28,102432,155648,155687,114730,106539,0,0,155648,53264,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,0,0,0,0,2220032,0,94208,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,208896,18,278528,24,24,0,28,28,53264,18,159765,57366,24,8192,28,102432,0,110630,114730,106539,0,0,0,53264,18,18,49172,0,57366,0,24,24,24,0,28,139394,28,28,102432,131,0,0,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,32768,53264,0,18,18,24,24,0,28,28,0,546,0,0,2183168,0,0,552,832,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2170880,2609152,2170880,2170880,2170880,2170880,2170880,2170880,2654208,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,1084,0,1088,0,1092,0,0,0,0,0,41606,0,0,0,0,45,45,45,45,45,937,0,0,0,0,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,644,0,0,0,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,826,0,828,0,0,2183168,0,0,830,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2592768,2170880,2170880,2170880,2170880,2633728,2170880,2170880,2170880,2170880,2170880,2170880,2711552,2170880,2170880,2170880,2170880,2170880,2760704,53264,18,49172,57366,24,8192,28,172066,172032,110630,172066,106539,0,0,172032,53264,18,18,49172,0,57366,0,24,24,24,16384,28,28,28,28,102432,0,98304,0,0,2220032,110630,0,0,0,0,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,45056,0,0,0,53264,18,49172,57366,25,8192,30,102432,0,110630,114730,106539,0,0,176219,53264,18,18,49172,0,57366,0,124,124,124,0,128,128,128,128,102432,128,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,0,546,0,0,2183168,0,65536,552,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2646016,2670592,2752512,2756608,2846720,2961408,2170880,2998272,2170880,3010560,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,3198976,2215936,0,0,0,0,0,0,65536,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,143,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,67,1824,67,1826,67,67,67,67,17,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,32768,120,121,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,67,67,37139,37139,24853,24853,0,0,2179072,548,0,65820,65820,0,287,97,0,0,97,97,0,97,97,97,45,45,45,45,2033,45,67,67,67,67,0,0,97,97,97,97,45,45,67,67,0,369,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,978,0,546,70179,0,2183168,0,0,552,0,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,1013,67,67,67,67,67,67,67,67,67,67,473,67,67,67,67,483,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,97,97,0,0,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,97,97,1359,97,97,97,67,67,1584,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,1659,45,45,45,45,45,45,45,45,45,1667,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,45,1668,45,45,45,45,67,67,1694,67,67,67,67,67,67,67,67,67,67,67,67,67,774,67,67,1713,97,97,97,97,97,97,97,0,97,97,1723,97,97,97,97,0,45,45,45,45,45,45,1538,45,45,45,45,45,1559,45,45,1561,45,45,45,45,45,45,45,687,45,45,45,45,45,45,45,45,448,45,45,45,45,45,45,67,67,67,67,1771,1772,67,67,67,67,67,67,67,67,97,97,97,97,0,0,0,97,67,67,67,67,67,1821,67,67,67,67,67,67,1827,67,67,67,0,0,0,0,0,0,97,97,1614,97,97,97,97,97,603,97,97,605,97,97,608,97,97,97,97,0,1532,45,45,45,45,45,45,45,45,45,45,450,45,45,45,45,67,67,97,97,97,97,97,97,0,0,1839,97,97,97,97,0,0,97,97,97,97,97,45,45,45,45,45,45,45,67,67,67,67,67,67,67,97,1883,97,1885,97,0,1888,0,97,97,0,97,97,1848,97,97,97,97,1852,45,45,45,45,45,45,45,384,391,45,45,45,45,45,45,45,385,45,45,45,45,45,45,45,45,1237,45,45,45,45,45,45,67,0,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,1951,45,45,45,45,45,45,45,45,67,67,67,67,1963,97,2023,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,1994,67,1995,67,67,67,67,67,67,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,97,97,0,0,0,0,2220032,110630,0,0,0,114730,106539,137,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2793472,2805760,2170880,2830336,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3031040,2170880,3055616,2170880,2170880,67,67,37139,37139,24853,24853,0,0,281,549,0,65820,65820,0,287,97,0,0,97,97,0,97,97,97,45,45,2031,2032,45,45,67,67,67,67,67,67,67,67,67,67,67,67,1769,67,0,546,70179,549,549,0,0,552,0,97,97,97,97,97,97,97,45,45,45,45,45,45,1858,45,641,0,0,0,0,41606,926,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,456,67,0,0,0,1313,0,0,0,1096,1319,0,0,0,0,97,97,97,97,97,97,97,97,1110,97,97,97,97,67,67,67,67,1301,1476,0,0,0,0,1307,1478,0,0,0,0,0,0,0,0,97,97,97,97,1486,97,1487,97,1313,1480,0,0,0,0,1319,0,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,67,67,67,1476,0,1478,0,1480,0,97,97,97,97,97,97,97,45,1853,45,1855,45,45,45,45,53264,18,49172,57366,26,8192,31,102432,0,110630,114730,106539,0,0,225368,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,32768,53264,18,18,49172,163840,57366,0,24,24,229376,0,28,28,28,229376,102432,0,0,0,0,2220167,110630,0,0,0,114730,106539,0,2171019,2171019,2171019,2171019,2592907,2171019,2171019,2171019,2171019,2633867,2171019,2171019,2171019,2171019,2171019,2171019,2654347,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3117195,2171019,2171019,2171019,2171019,2240641,0,0,0,0,0,0,0,0,368,0,140,2171019,2171019,2171019,2416779,2424971,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2617483,2171019,2171019,2642059,2171019,2171019,2171019,2699403,2171019,2728075,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3215499,2215936,2215936,2215936,2215936,2215936,2437120,2215936,2215936,2171019,2822283,2171019,2171019,2855051,2171019,2171019,2171019,2912395,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3002507,2171019,2171019,2215936,2215936,2494464,2215936,2215936,2215936,2171166,2171166,2416926,2425118,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2576670,2171166,2617630,2171166,2171166,2171166,2171166,2171166,2171166,2691358,2171166,2707742,2171166,2715934,2171166,2724126,2765086,2171166,2171166,2797854,2171166,2822430,2171166,2171166,2855198,2171166,2171166,2171166,2912542,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2793758,2806046,2171166,2830622,2171166,2171166,2171166,2171166,2171166,2171166,2171166,3109150,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2543902,2171166,2171166,2171166,2171166,2171166,2629918,2793611,2805899,2171019,2830475,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,0,546,0,0,2183168,0,0,552,0,2171166,2171166,2171166,2400542,2171166,2171166,2171166,0,2171166,2171166,2171166,0,2171166,2920734,2171166,2171166,2171166,2990366,2171166,2171166,2171166,2171166,3117342,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,0,53264,0,18,18,4329472,2232445,0,2240641,4337664,2711691,2171019,2171019,2171019,2171019,2171019,2760843,2769035,2789515,2814091,2171019,2171019,2171019,2875531,2904203,2171019,2171019,3092619,2171019,2171019,3125387,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3199115,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2453504,2457600,2215936,2215936,2215936,2215936,2215936,2215936,2793472,2805760,2215936,2830336,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,2170880,2170880,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2494464,2170880,2170880,2171166,2171166,2634014,2171166,2171166,2171166,2171166,2171166,2171166,2711838,2171166,2171166,2171166,2171166,2171166,2760990,2769182,2789662,2814238,2171166,2171166,2171166,2875678,2904350,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,3199262,2171166,0,0,0,0,0,0,0,0,0,2379915,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2445451,2171019,2465931,2474123,2171019,2171019,3113099,2171019,2171019,3133579,2171019,2171019,2171019,3162251,2171019,2171019,3182731,3186827,2171019,2379776,2879627,2171019,2916491,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3027083,2171019,2171019,3063947,2699550,2171166,2728222,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2879774,2171166,2916638,2171166,2171166,2171166,2171166,2171166,2609438,2171166,2171166,2171166,2171166,2171166,2171166,2654494,2171166,2171166,2171166,2171166,2171166,2445598,2171166,2466078,2474270,2171166,2171166,2171166,2171166,2171166,2171166,2523422,2171019,2437259,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2543755,2171019,2171019,2171019,2584715,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2908299,2171019,2171019,2936971,2171019,2171019,2986123,2171019,2994315,2171019,2171019,3014795,2171019,3059851,3076235,3088523,2171166,2171166,2986270,2171166,2994462,2171166,2171166,3014942,2171166,3059998,3076382,3088670,2171166,2171166,2171166,2171166,2171166,2171166,3027230,2171166,2171166,3064094,2171166,2171166,3113246,2171166,2171166,3133726,2506891,2171019,2171019,2171019,2535563,2539659,2171019,2171019,2588811,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2691211,2171019,2707595,2171019,2715787,2171019,2723979,2764939,2171019,2171019,2797707,2215936,2215936,3170304,0,0,0,0,0,0,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2453790,2457886,2171166,2171166,2171166,2486558,2171166,2171166,2507038,2171166,2171166,2171166,2535710,2539806,2171166,2171166,2588958,2171166,2171166,2171166,2171166,2515230,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2593054,2171166,2171166,2171166,2171166,3051806,2171166,2171166,2171166,2171166,2171166,2171166,3170590,0,2388107,2392203,2171019,2171019,2433163,2171019,2461835,2171019,2171019,2171019,2510987,2171019,2171019,2171019,2171019,2580619,2171019,2605195,2637963,2171019,2171019,2171019,2920587,2171019,2171019,2171019,2990219,2171019,2171019,2171019,2171019,3051659,2171019,2171019,2171019,2453643,2457739,2171019,2171019,2171019,2171019,2171019,2171019,2515083,2171019,2171019,2171019,2171019,2646155,2670731,2752651,2756747,2846859,2961547,2171019,2998411,2171019,3010699,2171019,2171019,2687115,2748555,2171019,2171019,2171019,2924683,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3121291,2171019,2171019,2171019,3170443,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2486272,2215936,2215936,2506752,3145867,3158155,3166347,2387968,2392064,2215936,2215936,2433024,2215936,2461696,2215936,2215936,2215936,2510848,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,0,553,2170880,2215936,2215936,2215936,2215936,2215936,3121152,2215936,2215936,3145728,3158016,3166208,2388254,2392350,2171166,2171166,2433310,2171166,2461982,2171166,2171166,2171166,2511134,2171166,2171166,0,2171166,2171166,2580766,2171166,2605342,2638110,2171166,2171166,2171166,2171166,3031326,2171166,3055902,2171166,2171166,2171166,2171166,3092766,2171166,2171166,3125534,2171166,2171166,2171166,3162398,2171166,2171166,3182878,3186974,2171166,0,0,0,2171019,2171019,2171019,2171019,3109003,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2215936,2215936,2215936,2400256,2215936,2215936,2215936,2215936,2171166,2687262,0,0,2748702,2171166,2171166,0,2171166,2924830,2171166,2171166,2171166,2171166,2171166,2171166,2171166,2597150,2171166,2621726,2171166,2171166,2642206,2171166,2171166,2171166,2171166,3121438,2171166,2171166,3146014,3158302,3166494,2171019,2420875,2429067,2171019,2478219,2171019,2171019,2171019,2171019,2547851,2556043,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,3129483,2215936,2171019,3141771,2215936,2420736,2428928,2215936,2478080,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2646016,2670592,2752512,2756608,2846720,2961408,2215936,2998272,2215936,3010560,2215936,2215936,2215936,3141632,2171166,2421022,2429214,2171166,2478366,2171166,2171166,2171166,2171166,0,0,2171166,2171166,2171166,2171166,2646302,2670878,0,0,0,0,37,110630,0,0,0,114730,106539,0,45,45,45,45,45,1405,1406,45,45,45,45,1409,45,45,45,45,45,1415,45,45,45,45,45,45,45,45,45,45,1238,45,45,45,45,67,2752798,2756894,0,2847006,2961694,2171166,2998558,2171166,3010846,2171166,2171166,2171166,3141918,2171019,2171019,2490507,3129344,2171166,2171166,2490654,2171166,2171166,2171166,0,0,2547998,2556190,2171166,2171166,2171166,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,167,45,45,45,45,185,187,45,45,198,45,45,0,2171166,2171166,2171166,2171166,2171166,2171166,3129630,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2576523,2171019,2171019,2171019,2171019,2171019,2609291,2171019,2215936,2215936,2215936,2215936,2215936,2215936,3002368,2215936,2215936,2171166,2171166,2494750,2171166,2171166,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,147,2584576,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,2171166,0,0,0,2171166,2171166,2171166,3002654,2171166,2171166,2171019,2171019,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2175257,0,0,2584862,2171166,2171166,0,0,2171166,2171166,2171166,2171166,2171166,2171019,2441355,2171019,2527371,2171019,2601099,2171019,2850955,2171019,2171019,2171019,3022987,2215936,2441216,2215936,2527232,2215936,2600960,2215936,2850816,2215936,2215936,0,0,0,0,0,0,2179072,0,0,0,0,69632,287,2170880,2215936,3022848,2171166,2441502,2171166,2527518,0,0,2171166,2601246,2171166,0,2851102,2171166,2171166,2171166,2171166,2720030,2744606,2171166,2171166,2171166,2834718,2838814,2171166,2908446,2171166,2171166,2937118,3023134,2171019,2519179,2171019,2171019,2171019,2171019,2171019,2215936,2519040,2215936,2215936,2215936,2215936,2215936,2171166,2171166,2171166,3215646,0,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2171019,2486411,2171019,2171019,2171019,2629771,2171019,2171019,2171019,2171019,2719883,2744459,2171019,2171019,2171019,2834571,2838667,2171019,2519326,0,0,2171166,2171166,0,2171166,2171166,2171166,2396299,2171019,2171019,2171019,2171019,3018891,2396160,2215936,2215936,2215936,2215936,3018752,2396446,0,0,2171166,2171166,2171166,2171166,3019038,2171019,2650251,2965643,2171019,2215936,2650112,2965504,2215936,0,0,2171166,2650398,2965790,2171166,2551947,2171019,2551808,2215936,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,144,45,45,67,67,67,67,67,228,67,67,67,67,67,67,67,67,67,1929,97,97,97,97,0,0,0,2552094,2171166,2171019,2215936,0,2171166,2171019,2215936,0,2171166,2171019,2215936,0,2171166,2977931,2977792,2978078,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,1321,97,131072,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,28,28,0,140,0,2379776,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2445312,2170880,2465792,2473984,2170880,2170880,2170880,2584576,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2170880,2170880,2170880,3162112,2170880,2170880,3182592,3186688,2170880,0,140,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3002368,2170880,2170880,2215936,2215936,2494464,2215936,2215936,2215936,2215936,2215936,2215936,3215360,544,0,0,0,544,0,546,0,0,0,546,0,0,2183168,0,0,552,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,0,2170880,2170880,2170880,0,2170880,2920448,2170880,2170880,2170880,2990080,2170880,2170880,552,0,0,0,552,0,287,0,2170880,2170880,2170880,2170880,2170880,2437120,2170880,2170880,18,0,0,0,0,0,0,0,0,2220032,0,0,644,0,2215936,2215936,3170304,544,0,546,0,552,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,0,140,0,0,53264,18,49172,57366,24,8192,28,102432,249856,110630,114730,106539,0,0,32768,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,151640,53264,18,18,49172,0,57366,0,24,24,24,0,28,28,28,28,0,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2416640,53264,18,49172,57366,24,8192,28,102432,253952,110630,114730,106539,0,0,32856,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,192512,53264,18,18,49172,0,57366,0,2232445,184320,2232445,0,2240641,2240641,184320,2240641,102432,0,0,0,221184,2220032,110630,0,0,0,114730,106539,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3108864,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2215936,0,0,0,45056,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,0,53264,0,18,18,24,24,0,127,127,53264,18,49172,258071,24,8192,28,102432,0,110630,114730,106539,0,0,32768,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,204800,53264,18,49172,57366,24,27,28,102432,0,110630,114730,106539,0,0,0,53264,18,49172,57366,24,8192,28,33,0,33,33,33,0,0,0,53264,18,18,49172,0,57366,0,24,24,24,16384,28,28,28,28,0,0,0,0,0,0,0,0,0,0,139,2170880,2170880,2170880,2416640,67,67,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,97,0,0,97,97,0,97,97,97,45,2030,45,45,45,45,67,1573,67,67,67,67,67,67,67,67,67,67,67,1699,67,67,67,67,25403,546,70179,0,0,66365,66365,552,0,97,97,97,97,97,97,97,97,1355,97,97,97,1358,97,97,97,641,0,0,0,925,41606,0,0,0,0,45,45,45,45,45,45,45,1187,45,45,45,45,45,0,1480,0,0,0,0,1319,0,97,97,97,97,97,97,97,97,97,592,97,97,97,97,97,97,97,97,97,97,1531,45,45,45,45,45,45,45,45,45,45,45,45,1680,45,45,45,641,0,924,0,925,41606,0,0,0,0,45,45,45,45,45,45,1186,45,45,45,45,45,45,67,67,37139,37139,24853,24853,0,70179,282,0,0,65820,65820,369,287,97,0,0,97,97,0,97,2028,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1767,67,67,67,0,0,0,0,0,0,1612,97,97,97,97,97,97,0,1785,97,97,97,97,97,97,0,0,97,97,97,97,1790,97,0,0,2170880,2170880,3051520,2170880,2170880,2170880,2170880,2170880,2170880,3170304,241664,2387968,2392064,2170880,2170880,2433024,53264,19,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,274432,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,270336,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,1134711,53264,18,49172,57366,24,8192,28,102432,0,1126440,1126440,1126440,0,0,1126400,53264,18,49172,57366,24,8192,28,102432,36,110630,114730,106539,0,0,217088,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,94,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,96,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,24666,53264,18,18,49172,0,57366,0,24,24,24,126,28,28,28,28,102432,53264,122,123,49172,0,57366,0,24,24,24,0,28,28,28,28,102432,2170880,2170880,4256099,0,0,0,0,0,0,0,0,2220032,0,0,0,0,0,0,0,0,1319,0,0,0,0,97,97,97,97,97,97,97,1109,97,97,97,97,1113,132,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,146,150,45,45,45,45,45,175,45,180,45,186,45,189,45,45,203,67,256,67,67,270,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,293,297,97,97,97,97,97,322,97,327,97,333,97,0,0,97,2026,0,2027,97,97,45,45,45,45,45,45,67,67,67,1685,67,67,67,67,67,67,67,1690,67,336,97,97,350,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,2424832,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2617344,2170880,45,439,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,525,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,97,97,97,97,622,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,1527,369,648,45,45,45,45,45,45,45,45,45,659,45,45,45,45,408,45,45,45,45,45,45,45,45,45,45,45,1239,45,45,45,67,729,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,762,67,746,67,67,67,67,67,67,67,67,67,759,67,67,67,67,0,0,0,1477,0,1086,0,0,0,1479,0,1090,67,67,796,67,67,799,67,67,67,67,67,67,67,67,67,67,67,67,1291,67,67,67,811,67,67,67,67,67,816,67,67,67,67,67,67,67,37689,544,25403,546,70179,0,0,66365,66365,552,833,97,97,97,97,97,97,97,97,1380,0,0,0,45,45,45,45,45,1185,45,45,45,45,45,45,45,386,45,45,45,45,45,45,45,45,1810,45,45,45,45,45,45,67,97,97,844,97,97,97,97,97,97,97,97,97,857,97,97,97,0,97,97,97,0,97,97,97,97,97,97,97,97,97,97,45,45,45,97,97,97,894,97,97,897,97,97,97,97,97,97,97,97,97,0,0,0,1382,45,45,45,97,909,97,97,97,97,97,914,97,97,97,97,97,97,97,923,67,67,1079,67,67,67,67,67,37689,1085,25403,1089,66365,1093,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,148,1114,97,97,97,97,97,97,1122,97,97,97,97,97,97,97,97,97,606,97,97,97,97,97,97,97,97,97,97,1173,97,97,97,97,97,12288,0,925,0,1179,0,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,145,45,45,67,67,67,67,67,1762,67,67,67,1766,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,67,97,97,97,97,97,0,1934,67,67,1255,67,67,67,67,67,67,67,67,67,67,67,67,67,1035,67,67,67,67,67,67,1297,67,67,67,67,67,67,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,97,1327,97,97,97,97,97,97,97,97,97,97,97,97,33344,97,97,97,1335,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,97,97,1377,97,97,97,97,97,97,0,1179,0,45,45,45,45,670,45,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,67,67,1438,67,67,1442,67,67,67,67,67,67,67,67,67,67,67,67,1592,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,0,0,1305,0,0,0,0,0,1311,0,0,0,1317,0,0,0,0,0,0,0,97,97,1322,97,97,1491,97,97,1495,97,97,97,97,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,1551,45,1553,45,1504,97,97,97,97,97,97,97,97,97,97,1513,97,97,97,97,0,45,45,45,45,1536,45,45,45,45,1540,45,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,67,67,67,1700,67,67,67,97,1648,97,97,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,1541,0,97,97,97,97,0,1940,0,97,97,97,97,97,97,45,45,2011,45,45,45,2015,67,67,2017,67,67,67,2021,97,67,67,812,67,67,67,67,67,67,67,67,67,67,67,37689,544,97,97,97,910,97,97,97,97,97,97,97,97,97,97,97,923,0,0,0,45,45,45,45,1184,45,45,45,45,1188,45,45,45,45,1414,45,45,45,1417,45,1419,45,45,45,45,45,443,45,45,45,45,45,45,453,45,45,67,67,67,67,1244,67,67,67,67,1248,67,67,67,67,67,67,67,0,37139,24853,0,0,0,282,41098,65820,97,1324,97,97,97,97,1328,97,97,97,97,97,97,97,97,97,0,0,930,45,45,45,45,97,97,97,97,1378,97,97,97,97,0,1179,0,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,45,975,45,45,45,45,67,67,1923,67,1925,67,67,1927,67,97,97,97,97,97,0,0,97,97,97,97,1985,45,45,45,45,45,45,1560,45,45,45,45,45,45,45,45,45,946,45,45,950,45,45,45,0,97,97,97,1939,0,0,0,97,1943,97,97,1945,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,990,45,45,45,67,257,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,337,97,97,97,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,0,0,370,2170880,2170880,2170880,2416640,401,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,459,461,67,67,67,67,67,67,67,67,475,67,480,67,67,67,67,67,67,1054,67,67,67,67,67,67,67,67,67,67,1698,67,67,67,67,67,484,67,67,487,67,67,67,67,67,67,67,67,67,67,67,67,67,1459,67,67,97,556,558,97,97,97,97,97,97,97,97,572,97,577,97,97,0,0,1896,97,97,97,97,97,97,1903,45,45,45,45,983,45,45,45,45,988,45,45,45,45,45,45,1195,45,45,45,45,45,45,45,45,45,45,1549,45,45,45,45,45,581,97,97,584,97,97,97,97,97,97,97,97,97,97,97,97,97,1153,97,97,369,0,45,45,45,45,45,45,45,45,45,45,45,662,45,45,45,684,45,45,45,45,45,45,45,45,45,45,45,45,1004,45,45,45,67,67,67,749,67,67,67,67,67,67,67,67,67,761,67,67,67,67,67,67,1068,67,67,67,1071,67,67,67,67,1076,794,795,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,544,97,97,97,97,847,97,97,97,97,97,97,97,97,97,859,97,0,0,2025,97,20480,97,97,2029,45,45,45,45,45,45,67,67,67,1575,67,67,67,67,67,67,67,67,67,1775,67,67,67,97,97,97,97,892,893,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1515,97,993,994,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,992,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,67,1607,67,67,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,97,97,596,97,45,1556,1557,45,45,45,45,45,45,45,45,45,45,45,45,45,45,696,45,1596,1597,67,67,67,67,67,67,67,67,67,67,67,67,67,67,499,67,97,97,97,1621,97,97,97,97,97,97,97,97,97,97,97,97,97,1346,97,97,97,97,1740,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,45,45,67,97,97,97,97,97,97,1836,0,97,97,97,97,97,0,0,97,97,97,1984,97,45,45,45,45,45,45,1808,45,45,45,45,45,45,45,45,67,739,67,67,67,67,67,744,45,45,1909,45,45,45,45,45,45,45,67,1917,67,1918,67,67,67,67,67,67,1247,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,1922,67,67,67,67,67,67,67,97,1930,97,1931,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,1576,67,67,67,67,1580,67,67,0,97,97,1938,97,0,0,0,97,97,97,97,97,97,45,45,45,699,45,45,45,704,45,45,45,45,45,45,45,45,987,45,45,45,45,45,45,45,67,67,97,97,97,97,0,0,97,97,97,2006,97,97,97,97,0,45,1533,45,45,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,722,723,45,45,45,45,45,45,2045,67,67,67,2047,0,0,97,97,97,2051,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,45,45,45,45,45,45,409,45,45,45,45,45,45,45,45,45,1957,45,67,67,67,67,67,1836,97,97,45,67,0,97,45,67,0,97,45,67,0,97,45,45,67,67,67,1761,67,67,67,1764,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,45,45,420,45,45,422,45,45,425,45,45,45,45,45,45,45,387,45,45,45,45,397,45,45,45,67,460,67,67,67,67,67,67,67,67,67,67,67,67,67,67,515,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,97,0,2039,97,97,97,97,97,45,45,45,45,1426,45,45,45,67,67,67,67,67,67,67,67,67,1689,67,67,67,97,557,97,97,97,97,97,97,97,97,97,97,97,97,97,97,612,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,896,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,97,45,939,45,45,45,45,943,45,45,45,45,45,45,45,45,45,45,1916,67,67,67,67,67,45,67,67,67,67,67,67,67,1015,67,67,67,67,1019,67,67,67,67,67,67,1271,67,67,67,67,67,67,1277,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,67,67,67,804,67,67,67,67,67,1077,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2170880,2170880,2437120,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2543616,2170880,2170880,2170880,2170880,2170880,2629632,1169,97,1171,97,97,97,97,97,97,97,12288,0,925,0,1179,0,0,0,0,925,41606,0,0,0,0,45,45,45,45,936,45,45,67,67,214,67,220,67,67,233,67,243,67,248,67,67,67,67,67,67,1298,67,67,67,67,0,0,0,0,0,0,97,97,97,97,97,1617,97,0,0,0,45,45,45,1183,45,45,45,45,45,45,45,45,45,393,45,45,45,45,45,45,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,1281,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,776,1323,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,907,45,1412,45,45,45,45,45,45,45,1418,45,45,45,45,45,45,686,45,45,45,690,45,45,695,45,45,67,67,67,67,67,1465,67,67,67,67,67,67,67,67,67,67,67,97,97,97,1712,97,97,97,97,1741,97,97,97,45,45,45,45,45,45,45,45,45,426,45,45,45,45,45,45,67,67,67,1924,67,67,67,67,67,97,97,97,97,97,0,0,97,97,1983,97,97,45,45,1987,45,1988,45,0,97,97,97,97,0,0,0,1942,97,97,97,97,97,45,45,45,700,45,45,45,45,45,45,45,45,45,45,711,45,45,153,45,45,166,45,176,45,181,45,45,188,191,196,45,204,255,258,263,67,271,67,67,0,37139,24853,0,0,0,282,41098,65820,97,97,97,294,97,300,97,97,313,97,323,97,328,97,97,335,338,343,97,351,97,97,0,53264,0,18,18,24,24,356,28,28,0,0,0,0,0,0,0,0,41098,0,140,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,45,1411,67,67,486,67,67,67,67,67,67,67,67,67,67,67,67,67,1251,67,67,501,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,67,67,67,67,1443,67,67,67,67,67,67,67,67,67,67,1263,67,67,67,67,67,97,97,583,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1526,97,598,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,0,97,97,1796,97,97,97,97,97,97,97,45,45,45,45,45,1744,45,45,45,369,0,651,45,653,45,654,45,656,45,45,45,660,45,45,45,45,1558,45,45,45,45,45,45,45,45,1566,45,45,681,45,683,45,45,45,45,45,45,45,45,691,692,694,45,45,45,716,45,45,45,45,45,45,45,45,45,45,45,45,709,45,45,712,45,714,45,45,45,718,45,45,45,45,45,45,45,726,45,45,45,733,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,747,67,67,67,67,67,67,67,67,67,760,67,67,67,0,0,0,0,0,0,97,1613,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,97,0,1179,0,45,45,45,45,67,764,67,67,67,67,768,67,770,67,67,67,67,67,67,67,67,97,97,97,97,0,0,0,1977,67,778,779,781,67,67,67,67,67,67,788,789,67,67,792,793,67,67,67,813,67,67,67,67,67,67,67,67,67,824,37689,544,25403,546,70179,0,0,66365,66365,552,0,836,97,838,97,839,97,841,97,97,97,845,97,97,97,97,97,97,97,97,97,858,97,97,0,1728,97,97,97,0,97,97,97,97,97,97,97,97,97,97,45,1802,45,97,97,862,97,97,97,97,866,97,868,97,97,97,97,97,97,0,0,97,97,1788,97,97,97,0,0,97,97,876,877,879,97,97,97,97,97,97,886,887,97,97,890,891,97,97,97,97,97,97,97,899,97,97,97,903,97,97,97,0,97,97,97,0,97,97,97,97,97,97,97,1646,97,97,97,97,911,97,97,97,97,97,97,97,97,97,922,923,45,955,45,957,45,45,45,45,45,45,45,45,45,45,45,45,195,45,45,45,45,45,981,982,45,45,45,45,45,45,989,45,45,45,45,45,170,45,45,45,45,45,45,45,45,45,45,411,45,45,45,45,45,67,1023,67,67,67,67,67,67,1031,67,1033,67,67,67,67,67,67,67,817,819,67,67,67,67,67,37689,544,67,1065,67,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,1078,67,67,1081,1082,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,0,2171166,2171166,2171166,2171166,2171166,2437406,2171166,2171166,97,1115,97,1117,97,97,97,97,97,97,1125,97,1127,97,97,97,0,97,97,97,0,97,97,97,97,1644,97,97,97,0,97,97,97,0,97,97,1642,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,97,316,97,97,97,97,97,97,97,97,97,1159,97,97,97,97,97,97,97,97,97,97,97,97,97,1502,97,97,97,97,97,1172,97,97,1175,1176,97,97,12288,0,925,0,1179,0,0,0,0,925,41606,0,0,0,0,45,45,45,935,45,45,45,1233,45,45,45,1236,45,45,45,45,45,45,45,67,67,67,67,67,67,1873,67,67,45,45,1218,45,45,45,1223,45,45,45,45,45,45,45,1230,45,45,67,67,215,219,222,67,230,67,67,244,246,249,67,67,67,67,67,67,1882,97,97,97,97,0,0,0,97,97,97,97,97,97,45,1904,45,1905,45,67,67,67,67,67,1258,67,1260,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,67,67,67,1283,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,67,818,67,67,67,67,67,67,37689,544,67,67,1295,67,67,67,67,67,67,67,67,0,0,0,0,0,0,2174976,0,0,97,97,97,1326,97,97,97,97,97,97,97,97,97,97,97,97,97,1514,97,97,97,97,97,1338,97,1340,97,97,97,97,97,97,97,97,97,97,97,1500,97,97,1503,97,1363,97,97,97,97,97,97,97,1370,97,97,97,97,97,97,97,563,97,97,97,97,97,97,578,97,1375,97,97,97,97,97,97,97,97,0,1179,0,45,45,45,45,685,45,45,45,45,45,45,45,45,45,45,45,1003,45,45,45,45,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1778,97,97,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,609,97,97,97,45,1542,45,45,45,45,45,45,45,1548,45,45,45,45,45,1554,45,1570,1571,45,67,67,67,67,67,67,1578,67,67,67,67,67,67,67,1055,67,67,67,67,67,1061,67,67,1582,67,67,67,67,67,67,67,1588,67,67,67,67,67,1594,67,67,67,67,67,97,2038,0,97,97,97,97,97,2044,45,45,45,995,45,45,45,45,1e3,45,45,45,45,45,45,45,1809,45,1811,45,45,45,45,45,67,1610,1611,67,1476,0,1478,0,1480,0,97,97,97,97,97,97,1618,1647,1649,97,97,97,1652,97,1654,1655,97,0,45,45,45,1658,45,45,67,67,216,67,67,67,67,234,67,67,67,67,252,254,1845,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,945,45,947,45,45,45,45,45,67,67,67,67,67,1881,97,97,97,97,97,0,0,0,97,97,97,97,97,1902,45,45,45,45,45,45,1908,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1921,67,67,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,0,97,1937,97,97,1940,0,0,97,97,97,97,97,97,1947,1948,1949,45,45,45,1952,45,1954,45,45,45,45,1959,1960,1961,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,67,67,67,757,67,67,67,67,67,67,1964,67,1966,67,67,67,67,1971,1972,1973,97,0,0,0,97,97,1104,97,97,97,97,97,97,97,97,97,97,884,97,97,97,889,97,97,1978,97,0,0,1981,97,97,97,97,45,45,45,45,45,45,736,45,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,45,67,67,67,67,0,2049,97,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,45,933,45,45,45,45,1234,45,45,45,45,45,45,45,45,45,45,67,97,97,288,97,97,97,97,97,97,317,97,97,97,97,97,97,0,0,97,1787,97,97,97,97,0,0,45,45,378,45,45,45,45,45,390,45,45,45,45,45,45,45,424,45,45,45,431,433,45,45,45,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,67,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,97,97,632,97,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,97,97,855,97,97,97,97,67,97,97,97,97,97,97,1837,0,97,97,97,97,97,0,0,0,1897,97,97,97,97,97,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,97,2010,45,45,45,45,45,45,2016,67,67,67,67,67,67,2022,45,2046,67,67,67,0,0,2050,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,0,932,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,45,45,133,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,701,702,45,45,705,706,45,45,45,45,45,45,703,45,45,45,45,45,45,45,45,45,719,45,45,45,45,45,725,45,45,45,369,649,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1216,25403,546,70179,0,0,66365,66365,552,834,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,97,97,0,97,97,97,97,97,97,97,1799,97,97,45,45,45,1569,45,45,45,1572,67,67,67,67,67,67,67,67,67,67,67,0,0,0,1306,0,67,67,67,1598,67,67,67,67,67,67,67,67,1606,67,67,1609,97,97,97,1650,97,97,1653,97,97,97,0,45,45,1657,45,45,45,1206,45,45,45,45,45,45,45,45,45,45,45,45,1421,45,45,45,1703,67,67,67,67,67,67,67,67,67,67,97,97,1711,97,97,0,1895,0,97,97,97,97,97,97,45,45,45,45,45,958,45,960,45,45,45,45,45,45,45,45,1913,45,45,1915,67,67,67,67,67,67,67,466,67,67,67,67,67,67,481,67,45,1749,45,45,45,45,45,45,45,45,1755,45,45,45,45,45,173,45,45,45,45,45,45,45,45,45,45,974,45,45,45,45,45,67,67,67,67,67,1773,67,67,67,67,67,67,67,97,97,97,97,1886,0,0,0,97,97,67,2035,2036,67,67,97,0,0,97,2041,2042,97,97,45,45,45,45,1662,45,45,45,45,45,45,45,45,45,45,45,1397,45,45,45,45,151,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,437,205,45,67,67,67,218,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,67,97,97,97,97,298,97,97,97,97,97,97,97,97,97,97,97,870,97,97,97,97,97,97,97,97,352,97,0,53264,0,18,18,24,24,0,28,28,0,0,0,0,0,0,365,0,41098,0,140,45,45,45,45,45,1427,45,45,67,67,67,67,67,67,67,1435,520,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1037,617,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,923,45,1232,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,1919,67,1759,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1021,45,154,45,162,45,45,45,45,45,45,45,45,45,45,45,45,964,45,45,45,206,45,67,67,67,67,221,67,229,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,67,67,755,67,67,67,67,67,67,67,67,785,67,67,67,67,67,67,67,67,802,67,67,67,807,67,67,67,97,97,97,97,353,97,0,53264,0,18,18,24,24,0,28,28,0,0,0,0,0,0,366,0,0,0,140,2170880,2170880,2170880,2416640,402,45,45,45,45,45,45,45,410,45,45,45,45,45,45,45,674,45,45,45,45,45,45,45,45,389,45,394,45,45,398,45,45,45,45,441,45,45,45,45,45,447,45,45,45,454,45,45,67,67,67,67,67,67,67,67,67,67,67,1768,67,67,67,67,67,488,67,67,67,67,67,67,67,496,67,67,67,67,67,67,67,1774,67,67,67,67,67,97,97,97,97,0,0,97,97,97,0,97,97,97,97,97,97,97,97,67,67,523,67,67,527,67,67,67,67,67,533,67,67,67,540,97,97,97,585,97,97,97,97,97,97,97,593,97,97,97,97,97,97,1784,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,0,0,0,18,18,24,24,0,28,28,97,97,620,97,97,624,97,97,97,97,97,630,97,97,97,637,713,45,45,45,45,45,45,721,45,45,45,45,45,45,45,45,1197,45,45,45,45,45,45,45,45,730,732,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1581,67,45,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,67,775,67,67,67,67,1066,67,67,67,67,67,67,67,67,67,67,67,67,479,67,67,67,67,67,67,1080,67,67,67,67,37689,0,25403,0,66365,0,0,0,0,0,0,0,287,0,0,0,287,0,2379776,2170880,2170880,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,97,920,97,97,0,0,0,0,45,1181,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,45,1219,45,45,45,45,45,45,1226,45,45,45,45,45,45,959,45,45,45,45,45,45,45,45,45,184,45,45,45,45,202,45,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1266,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1279,67,67,67,67,67,272,67,0,37139,24853,0,0,0,0,41098,65820,67,67,67,67,67,1286,67,67,67,67,67,67,67,67,67,1293,67,67,67,1296,67,67,67,67,67,67,67,0,0,0,0,0,281,94,0,0,97,97,97,1366,97,97,97,97,97,97,97,97,97,1373,97,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,0,97,1376,97,97,97,97,97,97,97,0,0,0,45,45,1384,45,45,67,208,67,67,67,67,67,67,237,67,67,67,67,67,67,67,1069,1070,67,67,67,67,67,67,67,0,37140,24854,0,0,0,0,41098,65821,45,1423,45,45,45,45,45,45,67,67,1431,67,67,67,67,67,67,67,1083,37689,0,25403,0,66365,0,0,0,1436,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1830,67,1452,1453,67,67,67,67,1456,67,67,67,67,67,67,67,67,67,771,67,67,67,67,67,67,1461,67,67,67,1464,67,1466,67,67,67,67,67,67,1470,67,67,67,67,67,67,1587,67,67,67,67,67,67,67,67,1595,1489,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1129,97,1505,1506,97,97,97,97,1510,97,97,97,97,97,97,97,97,97,1163,1164,97,97,97,97,97,1516,97,97,97,1519,97,1521,97,97,97,97,97,97,1525,97,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,67,67,67,1600,67,67,67,67,67,67,67,67,67,67,67,1301,0,0,0,1307,97,97,1620,97,97,97,97,97,97,97,1627,97,97,97,97,97,97,913,97,97,97,97,919,97,97,97,0,97,97,97,1781,97,97,0,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,0,1792,1860,45,1862,1863,45,1865,45,67,67,67,67,67,67,67,67,1875,67,1877,1878,67,1880,67,97,97,97,97,97,1887,0,1889,97,97,18,0,139621,0,0,0,0,0,0,364,237568,0,367,0,97,1893,0,0,0,97,1898,1899,97,1901,97,45,45,45,45,45,2014,45,67,67,67,67,67,2020,67,97,1989,45,1990,45,45,45,67,67,67,67,67,67,1996,67,1997,67,67,67,67,67,273,67,0,37139,24853,0,0,0,0,41098,65820,67,67,97,97,97,97,0,0,97,97,2005,0,97,2007,97,97,18,0,139621,0,0,0,642,0,133,364,0,0,367,41606,0,97,97,2056,2057,0,2059,45,67,0,97,45,67,0,97,45,45,67,209,67,67,67,223,67,67,67,67,67,67,67,67,67,786,67,67,67,791,67,67,45,45,940,45,45,45,45,45,45,45,45,45,45,45,45,45,45,727,45,45,67,67,67,67,67,67,67,67,1016,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,0,133,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,142,45,45,67,210,67,67,67,225,67,67,239,67,67,67,250,67,67,67,67,67,464,67,67,67,67,67,476,67,67,67,67,67,67,67,1709,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,97,1843,0,67,259,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,289,97,97,97,303,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,97,339,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,0,358,0,0,0,0,0,0,41098,0,140,45,45,45,45,45,1953,45,1955,45,45,45,67,67,67,67,67,67,67,1687,1688,67,67,67,67,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1203,45,458,67,67,67,67,67,67,67,67,67,470,477,67,67,67,67,67,67,67,1970,97,97,97,1974,0,0,0,97,1103,97,97,97,97,97,97,97,97,97,97,97,1372,97,97,97,97,67,522,67,67,67,67,67,67,67,67,67,67,67,536,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,1701,67,555,97,97,97,97,97,97,97,97,97,567,574,97,97,97,97,97,301,97,309,97,97,97,97,97,97,97,97,97,900,97,97,97,905,97,97,97,619,97,97,97,97,97,97,97,97,97,97,97,633,97,97,18,0,139621,0,0,362,0,0,0,364,0,0,367,41606,369,649,45,45,45,45,45,45,45,45,45,45,45,45,663,664,67,67,67,67,750,751,67,67,67,67,758,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,67,1057,1058,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,67,67,67,67,67,67,512,67,67,67,97,97,97,97,895,97,97,97,97,97,97,97,97,97,97,97,902,97,97,97,97,67,67,1051,67,67,67,67,67,67,67,67,67,67,67,1062,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1302,0,0,0,1308,97,97,97,97,1145,97,97,97,97,97,97,97,97,97,97,97,1139,97,97,97,97,1156,97,97,97,97,97,97,1161,97,97,97,97,97,1166,97,97,18,640,139621,0,641,0,0,0,0,364,0,0,367,41606,67,67,67,67,1257,67,67,67,67,67,67,67,67,67,67,67,0,0,1305,0,0,97,97,1337,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1630,97,67,1474,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,2380062,2171166,2171166,97,1529,97,97,0,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,45,45,67,67,67,67,1707,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1891,1739,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,1198,45,1200,45,45,45,45,97,97,1894,0,0,97,97,97,97,97,97,45,45,45,45,45,672,45,45,45,45,45,45,45,45,45,45,45,1420,45,45,45,45,67,67,1965,67,1967,67,67,67,97,97,97,97,0,1976,0,97,97,45,67,0,97,45,67,0,97,45,67,0,97,45,97,97,1979,0,0,97,1982,97,97,97,1986,45,45,45,45,45,735,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,1770,67,67,2e3,97,97,97,2002,0,97,97,97,0,97,97,97,97,97,97,1798,97,97,97,45,45,45,2034,67,67,67,67,97,0,0,2040,97,97,97,97,45,45,45,45,1752,45,45,45,1753,1754,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,675,45,45,45,45,45,45,438,45,45,45,45,45,445,45,45,45,45,45,45,45,45,67,1430,67,67,67,67,67,67,67,67,67,524,67,67,67,67,67,531,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,1096,97,97,97,621,97,97,97,97,97,628,97,97,97,97,97,97,0,53264,0,18,18,24,24,356,28,28,665,45,45,45,45,45,45,45,45,45,676,45,45,45,45,45,942,45,45,45,45,45,45,45,45,45,45,707,708,45,45,45,45,763,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,809,810,67,67,67,67,783,67,67,67,67,67,67,67,67,67,67,67,0,1303,0,0,0,97,861,97,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,45,45,956,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,67,67,67,67,1027,67,67,67,67,1032,67,67,67,67,67,67,67,67,37689,0,25403,0,66365,0,0,1097,1064,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,67,1098,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,331,97,97,97,97,1158,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,1309,0,0,0,1315,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1374,97,45,45,1543,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1240,67,67,1583,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1252,67,97,97,97,1635,97,97,97,0,97,97,97,97,97,97,97,97,1800,97,45,45,45,97,97,1793,97,97,97,97,97,97,97,97,97,97,45,45,45,1743,45,45,45,1746,45,0,97,97,97,97,97,1851,97,45,45,45,45,1856,45,45,45,45,1864,45,45,67,67,1869,67,67,67,67,1874,67,0,97,97,45,67,2058,97,45,67,0,97,45,67,0,97,45,45,67,211,67,67,67,67,67,67,240,67,67,67,67,67,67,67,1444,67,67,67,67,67,67,67,67,67,509,67,67,67,67,67,67,67,67,67,268,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,290,97,97,97,305,97,97,319,97,97,97,330,97,97,18,640,139621,0,641,0,0,0,0,364,0,643,367,41606,97,97,348,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,45,45,380,45,45,45,45,45,45,395,45,45,45,400,369,0,45,45,45,45,45,45,45,45,658,45,45,45,45,45,972,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,745,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,67,67,37689,1086,25403,1090,66365,1094,0,0,97,843,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,1121,97,97,97,97,1126,97,97,97,97,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1400,45,67,67,67,1011,67,67,67,67,67,67,67,67,67,67,67,0,1304,0,0,0,1190,45,45,1193,1194,45,45,45,45,45,1199,45,1201,45,45,45,45,1911,45,45,45,45,45,67,67,67,67,67,67,67,1579,67,67,67,67,45,1205,45,45,45,45,45,45,45,45,1211,45,45,45,45,45,984,45,45,45,45,45,45,45,45,45,45,45,1550,45,45,45,45,45,1217,45,45,45,45,45,45,1225,45,45,45,45,1229,45,45,45,1388,45,45,45,45,45,45,1396,45,45,45,45,45,444,45,45,45,45,45,45,45,45,45,67,67,1574,67,67,67,67,67,67,67,67,67,67,1590,67,67,67,67,67,1254,67,67,67,67,67,1259,67,1261,67,67,67,67,1265,67,67,67,67,67,67,1708,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,97,0,0,67,67,67,67,1285,67,67,67,67,1289,67,67,67,67,67,67,67,67,37689,1087,25403,1091,66365,1095,0,0,97,97,97,97,1339,97,1341,97,97,97,97,1345,97,97,97,97,97,561,97,97,97,97,97,573,97,97,97,97,97,97,1717,97,0,97,97,97,97,97,97,97,591,97,97,97,97,97,97,97,97,97,1329,97,97,97,97,97,97,97,97,97,97,1351,97,97,97,97,97,97,1357,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,568,97,97,97,97,97,97,97,1365,97,97,97,97,1369,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1399,45,45,45,1413,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1669,45,1422,45,45,1425,45,45,1428,45,1429,67,67,67,67,67,67,67,67,1468,67,67,67,67,67,67,67,67,529,67,67,67,67,67,67,539,67,67,1475,67,0,0,0,0,0,0,0,0,0,0,0,0,140,2170880,2170880,2170880,2416640,97,97,1530,97,0,45,45,1534,45,45,45,45,45,45,45,45,1956,45,45,67,67,67,67,67,67,67,67,67,1599,67,67,1601,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,67,1632,97,1634,0,97,97,97,1640,97,97,97,1643,97,97,1645,97,97,97,97,97,912,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,1660,1661,45,45,45,45,1665,1666,45,45,45,45,45,1670,1692,1693,67,67,67,67,67,1697,67,67,67,67,67,67,67,1702,97,97,1714,1715,97,97,97,97,0,1721,1722,97,97,97,97,97,97,1353,97,97,97,97,97,97,97,97,1362,1726,97,0,0,97,97,97,0,97,97,97,1734,97,97,97,97,97,848,849,97,97,97,97,856,97,97,97,97,97,354,0,53264,0,18,18,24,24,0,28,28,45,45,1750,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1681,45,0,1846,97,97,97,97,97,97,45,45,1854,45,45,45,45,1859,67,67,67,1879,67,67,97,97,1884,97,97,0,0,0,97,97,97,1105,97,97,97,97,97,97,97,97,97,97,1344,97,97,97,1347,97,1892,97,0,0,0,97,97,97,1900,97,97,45,45,45,45,45,997,45,45,45,45,45,45,45,45,45,45,1002,45,45,1005,1006,45,67,67,67,67,67,1926,67,67,1928,97,97,97,97,97,0,0,97,97,97,0,97,97,97,97,97,97,1737,97,0,97,97,97,97,0,0,0,97,97,1944,97,97,1946,45,45,45,1544,45,45,45,45,45,45,45,45,45,45,45,45,190,45,45,45,152,155,45,163,45,45,177,179,182,45,45,45,193,197,45,45,45,1672,45,45,45,45,45,1677,45,1679,45,45,45,45,996,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,67,260,264,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,295,299,302,97,310,97,97,324,326,329,97,97,97,0,97,97,1639,0,1641,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,97,97,97,1523,97,97,97,97,97,97,97,97,1719,97,97,97,97,97,97,97,97,1720,97,97,97,97,97,97,97,312,97,97,97,97,97,97,97,97,1123,97,97,97,97,97,97,97,340,344,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,373,375,419,45,45,45,45,45,45,45,45,45,428,45,45,435,45,45,45,1751,45,45,45,45,45,45,45,45,45,45,45,45,1410,45,45,45,67,67,67,505,67,67,67,67,67,67,67,67,67,514,67,67,67,67,67,67,1969,67,97,97,97,97,0,0,0,97,97,45,67,0,97,45,67,0,97,2064,2065,0,2066,45,521,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,465,67,67,67,474,67,67,67,67,67,67,67,1467,67,67,67,67,67,67,67,67,67,97,97,97,97,97,1933,0,97,97,97,602,97,97,97,97,97,97,97,97,97,611,97,97,18,640,139621,358,641,0,0,0,0,364,0,0,367,0,618,97,97,97,97,97,97,97,97,97,97,631,97,97,97,97,97,881,97,97,97,97,97,97,97,97,97,97,569,97,97,97,97,97,369,0,45,652,45,45,45,45,45,657,45,45,45,45,45,45,1235,45,45,45,45,45,45,45,45,67,67,67,1432,67,67,67,67,67,67,67,766,67,67,67,67,67,67,67,67,773,67,67,67,0,1305,0,1311,0,1317,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,97,0,97,97,97,1724,97,97,97,777,67,67,782,67,67,67,67,67,67,67,67,67,67,67,67,535,67,67,67,67,67,67,67,814,67,67,67,67,67,67,67,67,67,37689,544,25403,546,70179,0,0,66365,66365,552,0,97,837,97,97,97,97,97,97,1496,97,97,97,97,97,97,97,97,97,97,918,97,97,97,97,0,842,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1168,97,97,97,97,864,97,97,97,97,97,97,97,97,871,97,97,97,0,1637,97,97,0,97,97,97,97,97,97,97,97,97,97,1801,45,45,97,875,97,97,880,97,97,97,97,97,97,97,97,97,97,97,1151,1152,97,97,97,67,67,67,1040,67,67,67,67,67,67,67,67,67,67,67,67,790,67,67,67,1180,0,649,45,45,45,45,45,45,45,45,45,45,45,45,45,200,45,45,67,67,67,1454,67,67,67,67,67,67,67,67,67,67,67,67,806,67,67,67,0,0,0,1481,0,1094,0,0,97,1483,97,97,97,97,97,97,304,97,97,318,97,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,97,97,1332,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,1633,97,0,97,97,97,0,97,97,97,97,97,97,97,97,97,1381,0,0,45,45,45,45,97,97,1727,0,97,97,97,0,97,97,97,97,97,97,97,97,626,97,97,97,97,97,97,636,45,45,1760,67,67,67,67,67,67,67,1765,67,67,67,67,67,67,67,1299,67,67,67,0,0,0,0,0,0,97,97,97,97,1616,97,97,1803,45,45,45,45,1807,45,45,45,45,45,1813,45,45,45,67,67,1684,67,67,67,67,67,67,67,67,67,67,67,822,67,67,37689,544,67,67,1818,67,67,67,67,1822,67,67,67,67,67,1828,67,67,67,67,67,97,0,0,97,97,97,97,97,45,45,45,2012,2013,45,45,67,67,67,2018,2019,67,67,97,67,97,97,97,1833,97,97,0,0,97,97,1840,97,97,0,0,97,97,97,0,97,97,1733,97,1735,97,97,97,0,97,97,97,1849,97,97,97,45,45,45,45,45,1857,45,45,45,1910,45,1912,45,45,1914,45,67,67,67,67,67,67,67,67,67,67,1017,67,67,1020,67,45,1861,45,45,45,45,45,67,67,67,67,67,1872,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,67,1446,67,67,67,67,67,1876,67,67,67,67,67,97,97,97,97,97,0,0,0,1890,97,97,97,97,97,1134,97,97,97,97,97,97,97,97,97,97,570,97,97,97,97,580,1935,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1906,45,67,67,67,67,2048,0,97,97,97,97,45,45,67,67,0,0,0,0,925,41606,0,0,0,931,45,45,45,45,45,45,1674,45,1676,45,45,45,45,45,45,45,446,45,45,45,45,45,45,45,67,67,67,67,1871,67,67,67,67,0,97,97,45,67,0,97,2060,2061,0,2063,45,67,0,97,45,45,156,45,45,45,45,45,45,45,45,45,192,45,45,45,45,1673,45,45,45,45,45,45,45,45,45,45,45,429,45,45,45,45,67,67,67,269,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,349,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,45,374,45,45,67,67,213,217,67,67,67,67,67,242,67,247,67,253,45,45,698,45,45,45,45,45,45,45,45,45,45,45,45,45,399,45,45,0,0,0,0,925,41606,0,929,0,0,45,45,45,45,45,45,1391,45,45,1395,45,45,45,45,45,45,423,45,45,45,45,45,45,45,436,45,67,67,67,67,1041,67,1043,67,67,67,67,67,67,67,67,67,67,1776,67,67,97,97,97,1099,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,888,97,97,97,1131,97,97,97,97,1135,97,1137,97,97,97,97,97,97,97,1497,97,97,97,97,97,97,97,97,97,883,97,97,97,97,97,97,1310,0,0,0,1316,0,0,0,0,1100,0,0,0,97,97,97,97,97,1107,97,97,97,97,97,97,97,97,1343,97,97,97,97,97,97,1348,0,0,1317,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,1112,97,45,1804,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1868,67,1870,67,67,67,67,67,1817,67,67,1819,67,67,67,67,67,67,67,67,67,67,67,67,823,67,37689,544,67,97,1832,97,97,1834,97,0,0,97,97,97,97,97,0,0,97,97,97,0,1732,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,97,1177,0,0,925,0,0,0,0,97,97,97,97,0,0,1941,97,97,97,97,97,97,45,45,45,1991,1992,45,67,67,67,67,67,67,67,67,67,1998,134,0,0,0,37,110630,0,0,0,114730,106539,41098,45,45,45,45,941,45,45,944,45,45,45,45,45,45,952,45,45,207,67,67,67,67,67,226,67,67,67,67,67,67,67,67,67,820,67,67,67,67,37689,544,369,650,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1682,25403,546,70179,0,0,66365,66365,552,835,97,97,97,97,97,97,97,1522,97,97,97,97,97,97,97,97,0,97,97,97,97,97,97,1725,67,67,67,1695,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,1036,67,67,67,265,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,97,296,97,97,97,97,314,97,97,97,97,332,334,97,97,97,97,97,1146,1147,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,97,97,345,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,0,364,0,367,41098,369,140,45,372,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,1213,45,45,45,45,404,406,45,45,45,45,45,45,45,45,45,45,45,45,45,434,45,45,45,440,45,45,45,45,45,45,45,45,451,452,45,45,45,67,1683,67,67,67,1686,67,67,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,67,67,67,67,490,492,67,67,67,67,67,67,67,67,67,67,67,1447,67,67,1450,67,67,67,67,67,526,67,67,67,67,67,67,67,67,537,538,67,67,67,67,67,506,67,67,508,67,67,511,67,67,67,67,0,1476,0,0,0,0,0,1478,0,0,0,0,0,0,0,0,97,97,1484,97,97,97,97,97,97,865,97,97,97,97,97,97,97,97,97,97,1499,97,97,97,97,97,97,97,97,97,587,589,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,97,97,97,97,623,97,97,97,97,97,97,97,97,634,635,97,97,97,97,97,1160,97,97,97,97,97,97,97,97,97,97,97,1628,97,97,97,97,369,0,45,45,45,45,45,655,45,45,45,45,45,45,45,45,999,45,1001,45,45,45,45,45,45,45,45,715,45,45,45,720,45,45,45,45,45,45,45,45,728,25403,546,70179,0,0,66365,66365,552,0,97,97,97,97,97,840,97,97,97,97,97,1174,97,97,97,97,0,0,925,0,0,0,0,0,0,0,1100,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,97,938,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,680,45,968,45,970,45,973,45,45,45,45,45,45,45,45,45,45,962,45,45,45,45,45,979,45,45,45,45,45,985,45,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,688,45,45,45,45,45,45,45,1007,1008,67,67,67,67,67,1014,67,67,67,67,67,67,67,67,67,1045,67,67,67,67,67,67,67,1038,67,67,67,67,67,67,1044,67,1046,67,1049,67,67,67,67,67,67,800,67,67,67,67,67,67,808,67,67,0,0,0,1102,97,97,97,97,97,1108,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,97,1371,97,97,97,97,97,97,97,97,1132,97,97,97,97,97,97,1138,97,1140,97,1143,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,45,1191,45,45,45,45,45,1196,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,991,45,67,67,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,1048,67,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,97,1386,45,1387,45,45,45,45,45,45,45,45,45,45,45,45,45,455,45,457,45,45,1424,45,45,45,45,45,67,67,67,67,1433,67,1434,67,67,67,67,67,767,67,67,67,67,67,67,67,67,67,67,67,1591,67,1593,67,67,45,45,1805,45,45,45,45,45,45,45,45,45,1814,45,45,1816,67,67,67,67,1820,67,67,67,67,67,67,67,67,67,1829,67,67,67,67,67,815,67,67,67,67,821,67,67,67,37689,544,67,1831,97,97,97,97,1835,0,0,97,97,97,97,97,0,0,97,97,97,1731,97,97,97,97,97,97,97,97,97,853,97,97,97,97,97,97,0,97,97,97,97,1850,97,97,45,45,45,45,45,45,45,45,1547,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,961,45,45,45,45,965,45,967,1907,45,45,45,45,45,45,45,45,45,67,67,67,67,67,1920,0,1936,97,97,97,0,0,0,97,97,97,97,97,97,45,45,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,67,67,97,97,97,97,0,0,28672,97,45,67,67,67,67,0,0,97,97,97,97,45,45,67,67,2054,97,97,291,97,97,97,97,97,97,320,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,97,12288,0,925,926,1179,0,45,377,45,45,45,381,45,45,392,45,45,396,45,45,45,45,971,45,45,45,45,45,45,45,45,45,45,45,45,1756,45,45,45,67,67,67,67,463,67,67,67,467,67,67,478,67,67,482,67,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,1472,67,502,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1460,67,97,97,97,97,560,97,97,97,564,97,97,575,97,97,579,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,97,97,0,0,925,0,0,930,97,599,97,97,97,97,97,97,97,97,97,97,97,97,97,97,872,97,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1758,0,362,0,0,925,41606,0,0,0,0,45,45,934,45,45,45,164,168,174,178,45,45,45,45,45,194,45,45,45,165,45,45,45,45,45,45,45,45,45,199,45,45,45,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,67,1060,67,67,67,67,67,67,1052,1053,67,67,67,67,67,67,67,67,67,67,1063,97,1157,97,97,97,97,97,97,97,97,97,97,97,97,1167,97,97,97,97,97,1379,97,97,97,0,0,0,45,1383,45,45,45,1806,45,45,45,45,45,45,1812,45,45,45,45,67,67,67,67,67,1577,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,1282,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1471,67,45,1402,45,45,45,45,45,45,45,45,45,45,45,45,45,45,417,45,67,1462,67,67,67,67,67,67,67,67,67,67,67,67,67,67,37689,544,97,1517,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1128,97,97,97,97,1636,97,97,97,0,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,1705,67,67,67,67,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,97,1842,0,0,1779,97,97,97,1782,97,0,0,97,97,97,97,97,97,0,0,97,97,97,1789,97,97,0,0,0,97,1847,97,97,97,97,97,45,45,45,45,45,45,45,45,1675,45,45,45,45,45,45,45,45,737,738,67,740,67,741,67,743,67,67,67,67,67,67,1968,67,67,97,97,97,97,0,0,0,97,97,45,67,0,97,45,67,2062,97,45,67,0,97,45,67,67,97,97,2001,97,0,0,2004,97,97,0,97,97,97,97,1797,97,97,97,97,97,45,45,45,67,261,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,97,292,97,97,97,97,311,315,321,325,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,97,97,1330,97,97,1333,1334,97,341,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,0,363,364,0,367,41098,369,140,45,45,45,45,1221,45,45,45,45,45,45,45,45,45,45,45,413,45,45,416,45,376,45,45,45,45,382,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,45,45,403,45,45,45,45,45,45,45,45,45,45,414,45,45,45,418,67,67,67,462,67,67,67,67,468,67,67,67,67,67,67,67,67,1602,67,1604,67,67,67,67,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,500,67,67,67,67,67,1067,67,67,67,67,67,1072,67,67,67,67,67,67,274,0,37139,24853,0,0,0,0,41098,65820,67,67,504,67,67,67,67,67,67,67,510,67,67,67,517,519,541,67,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,554,97,97,97,559,97,97,97,97,565,97,97,97,97,97,97,97,1718,0,97,97,97,97,97,97,97,898,97,97,97,97,97,97,906,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,597,97,97,97,97,97,1520,97,97,97,97,97,97,97,97,97,97,0,45,1656,45,45,45,97,97,601,97,97,97,97,97,97,97,607,97,97,97,614,616,638,97,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,369,0,45,45,45,45,45,45,45,45,45,45,661,45,45,45,407,45,45,45,45,45,45,45,45,45,45,45,45,45,1815,45,67,45,667,45,45,45,45,45,45,45,45,45,45,678,45,45,45,421,45,45,45,45,45,45,45,45,45,45,45,45,976,977,45,45,45,682,45,45,45,45,45,45,45,45,45,45,693,45,45,697,67,67,748,67,67,67,67,754,67,67,67,67,67,67,67,67,67,1274,67,67,67,67,67,67,67,67,765,67,67,67,67,769,67,67,67,67,67,67,67,67,67,1589,67,67,67,67,67,67,67,67,780,67,67,784,67,67,67,67,67,67,67,67,67,67,67,1777,67,97,97,97,97,97,97,846,97,97,97,97,852,97,97,97,97,97,97,97,1742,45,45,45,45,45,45,45,1747,97,97,97,863,97,97,97,97,867,97,97,97,97,97,97,97,308,97,97,97,97,97,97,97,97,97,97,12288,1178,925,0,1179,0,97,97,97,878,97,97,882,97,97,97,97,97,97,97,97,97,97,12288,0,925,0,1179,0,908,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,925,0,0,0,954,45,45,45,45,45,45,45,45,45,45,963,45,45,966,45,45,157,45,45,171,45,45,45,45,45,45,45,45,45,45,948,45,45,45,45,45,1022,67,67,1026,67,67,67,1030,67,67,67,67,67,67,67,67,67,1603,1605,67,67,67,1608,67,67,67,1039,67,67,1042,67,67,67,67,67,67,67,67,67,67,471,67,67,67,67,67,0,1100,0,97,97,97,97,97,97,97,97,97,97,97,97,97,904,97,97,97,97,1116,97,97,1120,97,97,97,1124,97,97,97,97,97,97,562,97,97,97,571,97,97,97,97,97,97,97,97,97,1133,97,97,1136,97,97,97,97,97,97,97,97,915,917,97,97,97,97,97,0,97,1170,97,97,97,97,97,97,97,97,0,0,925,0,0,0,0,0,41606,0,0,0,0,45,45,45,45,45,45,1993,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,1278,67,0,0,0,45,45,1182,45,45,45,45,45,45,45,45,45,1189,1204,45,45,45,1207,45,45,1209,45,1210,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,45,689,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,236,67,67,67,67,67,67,67,801,67,67,67,805,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,1249,67,67,67,67,67,67,507,67,67,67,67,67,67,67,67,67,67,1300,0,0,0,0,0,1267,67,67,1269,67,1270,67,67,67,67,67,67,67,67,67,1280,97,1349,97,1350,97,97,97,97,97,97,97,97,97,1360,97,97,97,0,1980,97,97,97,97,97,45,45,45,45,45,45,673,45,45,45,45,677,45,45,45,45,1401,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,953,67,1437,67,1440,67,67,67,67,1445,67,67,67,1448,67,67,67,67,67,67,1029,67,67,67,67,67,67,67,67,67,67,1825,67,67,67,67,67,1473,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,1320,0,834,97,97,97,97,1490,97,1493,97,97,97,97,1498,97,97,97,1501,97,97,97,0,97,1638,97,0,97,97,97,97,97,97,97,97,916,97,97,97,97,97,97,0,1528,97,97,97,0,45,45,45,1535,45,45,45,45,45,45,45,1867,67,67,67,67,67,67,67,67,67,97,97,97,97,1932,0,0,1555,45,45,45,45,45,45,45,45,45,45,45,45,45,1567,45,45,158,45,45,172,45,45,45,183,45,45,45,45,201,45,45,67,212,67,67,67,67,231,235,241,245,67,67,67,67,67,67,493,67,67,67,67,67,67,67,67,67,67,472,67,67,67,67,67,97,97,97,97,1651,97,97,97,97,97,0,45,45,45,45,45,45,45,1539,45,45,45,67,1704,67,1706,67,67,67,67,67,67,67,97,97,97,97,97,97,0,0,97,97,97,1841,97,0,1844,97,97,97,97,1716,97,97,97,0,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1385,1748,45,45,45,45,45,45,45,45,45,45,45,45,45,1757,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,97,97,1780,97,97,97,0,0,1786,97,97,97,97,97,0,0,97,97,1730,0,97,97,97,97,97,1736,97,1738,67,97,97,97,97,97,97,0,1838,97,97,97,97,97,0,0,97,1729,97,0,97,97,97,97,97,97,97,97,1162,97,97,97,1165,97,97,97,45,1950,45,45,45,45,45,45,45,45,1958,67,67,67,1962,67,67,67,67,67,1246,67,67,67,67,67,67,67,67,67,67,67,97,1710,97,97,97,1999,67,97,97,97,97,0,2003,97,97,97,0,97,97,2008,2009,45,67,67,67,67,0,0,97,97,97,97,45,2052,67,2053,0,0,0,0,925,41606,0,0,930,0,45,45,45,45,45,45,1392,45,1394,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,45,1563,1565,45,45,45,1568,0,97,2055,45,67,0,97,45,67,0,97,45,67,28672,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,679,45,45,67,67,266,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,346,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,0,362,0,364,0,367,41098,369,140,371,45,45,45,379,45,45,45,388,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,449,45,45,45,45,45,67,67,542,37139,37139,24853,24853,0,70179,0,0,0,65820,65820,369,287,97,97,97,97,97,1622,97,97,97,97,97,97,97,1629,97,97,0,1794,1795,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1745,45,45,97,639,18,0,139621,0,0,0,0,0,0,364,0,0,367,41606,45,731,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,251,67,67,67,67,67,798,67,67,67,67,67,67,67,67,67,67,67,67,1073,67,67,67,860,97,97,97,97,97,97,97,97,97,97,97,97,97,97,873,0,0,1101,97,97,97,97,97,97,97,97,97,97,97,97,97,921,97,0,67,67,67,67,1245,67,67,67,67,67,67,67,67,67,67,67,67,1250,67,67,1253,0,0,1312,0,0,0,1318,0,0,0,0,0,0,97,97,97,97,1106,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,97,1155,97,97,1325,97,97,97,97,97,97,97,97,97,97,97,97,97,1141,97,97,67,67,1439,67,1441,67,67,67,67,67,67,67,67,67,67,67,67,1264,67,67,67,97,97,1492,97,1494,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,97,67,67,67,2037,67,97,0,0,97,97,97,2043,97,45,45,45,442,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,232,67,67,67,67,67,67,67,67,1823,67,67,67,67,67,67,67,67,97,97,97,97,1975,0,0,97,874,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1142,97,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,65,86,117,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,63,84,115,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,61,82,113,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,59,80,111,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,57,78,109,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,55,76,107,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,53,74,105,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,51,72,103,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,49,70,101,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,47,68,99,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,45,67,97,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,213085,53264,18,49172,57366,24,8192,28,102432,0,0,0,44,0,0,32863,53264,18,49172,57366,24,8192,28,102432,0,41,41,41,0,0,1138688,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,0,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,89,53264,18,18,49172,0,57366,0,24,24,24,0,127,127,127,127,102432,67,262,67,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,342,97,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,360,0,0,364,0,367,41098,369,140,45,45,45,45,717,45,45,45,45,45,45,45,45,45,45,45,412,45,45,45,45,45,67,1009,67,67,67,67,67,67,67,67,67,67,67,67,67,1292,67,67,1294,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,97,97,97,1615,97,97,97,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,66,87,118,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,64,85,116,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,62,83,114,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,60,81,112,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,58,79,110,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,56,77,108,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,54,75,106,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,52,73,104,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,50,71,102,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,48,69,100,53264,18,49172,57366,24,8192,28,102432,37,110630,114730,106539,46,67,98,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,233472,53264,18,49172,57366,24,8192,28,102432,0,110630,114730,106539,0,0,69724,53264,18,18,49172,0,57366,262144,24,24,24,0,28,28,28,28,102432,45,45,161,45,45,45,45,45,45,45,45,45,45,45,45,45,710,45,45,28,139621,359,0,0,0,364,0,367,41098,369,140,45,45,45,45,1389,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,45,67,503,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1449,67,67,97,600,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1154,97,0,0,0,0,925,41606,927,0,0,0,45,45,45,45,45,45,1866,67,67,67,67,67,67,67,67,67,67,772,67,67,67,67,67,45,45,969,45,45,45,45,45,45,45,45,45,45,45,45,45,951,45,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,45,0,0,0,1314,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1488,67,67,267,67,67,67,67,0,37139,24853,0,0,0,0,41098,65820,97,347,97,97,97,97,0,53264,0,18,18,24,24,0,28,28,139621,0,361,0,0,364,0,367,41098,369,140,45,45,45,45,734,45,45,45,67,67,67,67,67,742,67,67,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,1214,45,45,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1361,97,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,45,45,0,0,0,0,2220032,0,0,1130496,0,0,0,0,2170880,2171020,2170880,2170880,18,0,0,131072,0,0,0,90112,0,2220032,0,0,0,0,0,0,0,0,97,97,97,1485,97,97,97,97,0,45,45,45,45,45,1537,45,45,45,45,45,1390,45,1393,45,45,45,45,1398,45,45,45,2170880,2171167,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2576384,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,0,0,0,0,0,2174976,0,0,0,0,0,0,2183168,0,0,0,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,2721252,2744320,2170880,2170880,2170880,2834432,2840040,2170880,2908160,2170880,2170880,2936832,2170880,2170880,2985984,2170880,2994176,2170880,2170880,3014656,2170880,3059712,3076096,3088384,2170880,2170880,2170880,2170880,0,0,0,0,2220032,0,0,0,1142784,0,0,0,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3215360,2215936,2215936,2215936,2215936,2215936,2437120,2215936,2215936,2215936,3117056,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,2215936,0,543,0,545,0,0,2183168,0,0,831,0,2170880,2170880,2170880,2400256,2170880,2170880,2170880,2170880,3031040,2170880,3055616,2170880,2170880,2170880,2170880,3092480,2170880,2170880,3125248,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,2170880,3198976,2170880,0,0,0,0,0,0,67,67,37139,37139,24853,24853,0,0,0,0,0,65820,65820,0,287,97,97,97,97,97,1783,0,0,97,97,97,97,97,97,0,0,97,97,97,97,97,97,1791,0,0,546,70179,0,0,0,0,552,0,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,97,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,147456,0,0,147456,0,0,0,0,925,41606,0,928,0,0,45,45,45,45,45,45,998,45,45,45,45,45,45,45,45,45,1562,45,1564,45,45,45,45,0,2158592,2158592,0,0,0,0,2232320,2232320,2232320,0,2240512,2240512,2240512,2240512,0,0,0,0,0,0,0,0,0,0,0,2170880,2170880,2170880,2416640],r.EXPECTED=[291,300,304,341,315,309,305,295,319,323,327,329,296,333,337,339,342,346,350,294,356,360,312,367,352,371,363,375,379,383,387,391,395,726,399,405,518,684,405,405,405,405,808,405,405,405,512,405,405,405,431,405,405,406,405,405,404,405,405,405,405,405,405,405,908,631,410,415,405,414,419,608,405,429,602,405,435,443,405,441,641,478,405,447,451,450,456,643,461,460,762,679,465,469,741,473,477,482,486,492,932,931,523,498,504,720,405,510,596,405,516,941,580,522,929,527,590,589,897,939,534,538,547,551,555,559,563,567,571,969,575,708,690,689,579,584,634,405,594,731,405,600,882,405,606,895,786,452,612,405,615,620,876,624,628,638,647,651,655,659,663,667,676,683,688,695,694,791,405,699,437,405,706,714,405,712,825,870,405,718,724,769,768,823,730,735,745,751,422,755,759,425,766,902,810,587,775,888,887,405,773,992,405,779,962,405,785,781,986,790,795,797,506,500,499,801,805,814,820,829,833,837,841,845,849,853,857,861,616,865,869,868,488,405,874,816,405,880,738,405,886,892,543,405,901,906,913,912,918,494,541,922,926,936,945,949,953,957,530,966,973,960,702,701,405,979,981,405,985,747,405,990,998,914,405,996,1004,672,975,974,1014,1002,1008,670,1012,405,405,405,405,405,401,1018,1022,1026,1106,1071,1111,1111,1111,1082,1145,1030,1101,1034,1038,1106,1106,1106,1106,1046,1206,1052,1106,1072,1111,1111,1042,1134,1065,1111,1112,1056,1160,1207,1062,1204,1208,1069,1106,1106,1106,1076,1111,1207,1161,1122,1205,1064,1094,1106,1106,1107,1111,1111,1111,1078,1086,1207,1092,1098,1046,1058,1106,1106,1110,1111,1111,1116,1120,1161,1126,1202,1104,1106,1145,1146,1129,1138,1088,1151,1048,1157,1153,1132,1141,1165,1107,1111,1172,1179,1109,1183,1175,1143,1147,1187,1108,1191,1195,1144,1199,1168,1212,1216,1220,1224,1228,1232,1236,1557,1247,1241,1241,1038,1434,1241,1241,1241,1241,1254,1275,1617,1241,1280,1287,1241,1241,1241,1287,1241,2114,1291,1241,1243,1241,2049,1824,2094,2095,1520,1309,1241,1241,1302,1241,1321,1311,1241,1241,1313,1778,1325,1336,1241,1241,1325,1330,1353,1241,1241,1695,1354,1241,1241,1241,1294,1686,1331,1241,1696,1368,1241,1338,1370,1241,1392,1399,1364,2017,1406,2016,1405,1716,1406,1407,1422,1417,1421,1241,1241,1241,1349,1426,1241,1774,1756,1241,1773,1241,1241,1345,1964,1812,1432,1241,1241,1345,1993,1459,1241,1241,1241,1395,1848,1767,1465,1241,1241,1394,1847,1242,1477,1241,1241,1428,1241,1445,1492,1241,1241,1438,1241,1499,1241,1241,1241,1455,1241,1818,1448,1241,1250,1241,2026,1623,1449,1241,1612,1616,1241,1614,1241,1257,1241,1241,1985,1292,1586,1512,1241,1517,2050,1526,1674,1519,1524,1647,2051,1532,1537,1551,1544,1550,1555,1561,1571,1578,1584,1590,1591,1653,1595,1602,1606,1610,1634,1628,1640,1633,1645,1241,1241,1241,1469,1241,1970,1651,1241,1270,1241,1241,1819,1449,1241,1293,1664,1241,1241,1481,1485,1574,1672,1241,1241,1513,1317,1487,1684,1241,1241,1533,1299,1694,1241,1241,1295,1241,1241,1241,1546,1700,1241,1241,1707,1241,1713,1241,1849,1715,1241,1720,1241,1276,1267,1241,1241,2107,1657,1864,1241,1881,1241,1326,1292,1241,1685,1358,1724,1338,1241,1363,1362,1342,1340,1361,1339,1833,1372,1360,1833,1833,1342,1343,1835,1341,1731,1738,1344,1241,1745,1241,1379,1241,1241,2092,1241,1388,1761,1754,1241,1386,1241,1400,1760,1241,1241,1241,1598,1734,1241,1241,1241,1635,1645,1241,1780,1766,1241,1241,1332,1771,1241,1241,1629,2079,1241,1242,1784,1241,1241,1680,1639,2063,1790,1241,1241,1741,1241,1241,1800,1241,1241,1762,1473,1241,1806,1241,1241,1786,1240,1709,1241,1241,1241,1668,1811,1241,1940,1241,1401,1974,1241,1408,1413,1382,1241,1816,1241,1241,1802,2086,1811,1241,1817,1945,1823,2095,2095,2047,2094,2046,2080,1241,1409,1312,1376,2096,2048,1241,1241,1807,1241,1241,1241,2035,1241,1241,1828,1241,2057,2061,1241,1241,1843,1241,2059,1241,1241,1241,1690,1847,1241,1241,1241,1703,2102,1848,1241,1241,1853,1292,1848,1241,2016,1857,1241,2002,1868,1241,1436,1241,1241,1271,1305,1241,1874,1241,1241,1884,2037,1892,1241,1890,1241,1461,1241,1241,1795,1241,1241,1891,1241,1878,1241,1888,1241,1888,1905,1896,2087,1912,1903,1241,1911,1906,1916,1905,2027,1863,1925,2088,1859,1861,1922,1927,1931,1935,1494,1241,1241,1918,1907,1939,1917,1944,1949,1241,1241,1451,1955,1241,1241,1241,1796,1727,2061,1241,1241,1899,1241,1660,1968,1241,1241,1951,1678,1978,1241,1241,1241,1839,1241,1241,1984,1982,1241,1488,1241,1241,1624,1450,1989,1241,1241,1241,1870,1995,1292,1241,1241,1958,1261,1241,1996,1241,1241,1241,2039,2008,1241,1241,1750,2e3,1241,1256,2001,1960,1241,1564,1241,1504,1241,1241,1442,1241,1241,1564,1528,1263,1241,1508,1241,1241,1468,1498,2006,1540,2015,1539,2014,1748,2013,1539,1831,2014,2012,1500,1567,2022,2021,1241,1580,1241,1241,2033,2037,1791,2045,2031,1241,1621,1241,1641,2044,1241,1241,1241,2093,1241,1241,2055,1241,1241,2067,1241,1283,1241,1241,1241,2101,2071,1241,1241,1241,2073,1848,2040,1241,1241,1241,2077,1241,1241,2106,1241,1241,2084,1241,2111,1241,1241,1381,1380,1241,1241,1241,2100,1241,2129,2118,2122,2126,2197,2133,3010,2825,2145,2698,2156,2226,2160,2161,2165,2174,2293,2194,2630,2201,2203,2152,3019,2226,2263,2209,2213,2218,2269,2292,2269,2269,2184,2226,2238,2148,2151,3017,2245,2214,2269,2269,2185,2226,2292,2269,2291,2269,2269,2269,2292,2205,3019,2226,2226,2160,2160,2160,2261,2160,2160,2160,2262,2276,2160,2160,2277,2216,2283,2216,2269,2269,2268,2269,2267,2269,2269,2269,2271,2568,2292,2269,2293,2269,2182,2190,2269,2186,2226,2226,2226,2226,2227,2160,2160,2160,2160,2263,2160,2275,2277,2282,2215,2217,2269,2269,2291,2269,2269,2293,2291,2269,2220,2269,2295,2294,2269,2269,2305,2233,2262,2278,2218,2269,2234,2226,2226,2228,2160,2160,2160,2289,2220,2294,2294,2269,2269,2304,2269,2160,2160,2287,2269,2269,2305,2269,2269,2312,2269,2269,2225,2226,2160,2287,2289,2219,2304,2295,2314,2234,2226,2314,2269,2226,2226,2160,2288,2219,2222,2304,2296,2269,2224,2160,2160,2269,2302,2294,2314,2224,2226,2288,2220,2294,2269,2290,2269,2269,2293,2269,2269,2269,2269,2270,2221,2313,2225,2227,2160,2300,2269,2225,2261,2309,2234,2229,2223,2318,2318,2318,2328,2336,2340,2344,2350,2637,2712,2358,2362,2372,2135,2378,2398,2135,2135,2135,2135,2136,2417,2241,2135,2378,2135,2135,2980,2984,2135,3006,2135,2135,2135,2945,2931,2425,2400,2135,2135,2135,2954,2135,2481,2433,2135,2135,2988,2824,2135,2135,2482,2434,2135,2135,2440,2445,2452,2135,2135,2998,3002,2961,2441,2446,2453,2463,2974,2135,2135,2135,2140,2642,2709,2459,2470,2465,2135,2135,3005,2135,2135,2987,2823,2458,2469,2464,2975,2135,2135,2135,2353,2488,2447,2324,2974,2135,2409,2459,2448,2135,2961,2487,2446,2476,2323,2973,2135,2135,2135,2354,2476,2974,2135,2135,2135,2957,2135,2135,2960,2135,2135,2135,2363,2409,2459,2474,2465,2487,2571,2973,2135,2135,2168,2973,2135,2135,2135,2959,2135,2135,2135,2506,2135,2957,2488,2170,2135,2135,2135,2960,2135,2818,2493,2135,2135,3033,2135,2135,2135,2934,2819,2494,2135,2135,2135,2976,2780,2499,2135,2135,2135,3e3,2968,2135,2935,2135,2135,2135,2364,2507,2135,2135,2934,2135,2135,2780,2492,2507,2135,2135,2506,2780,2135,2135,2782,2780,2135,2782,2135,2783,2374,2514,2135,2135,2135,3007,2530,2974,2135,2135,2135,3008,2135,2135,2134,2135,2526,2531,2975,2135,2135,3042,2581,2575,2956,2135,2135,2135,2394,2135,2508,2535,2840,2844,2495,2135,2135,2136,2684,2537,2842,2846,2135,2136,2561,2581,2551,2536,2841,2845,2975,3043,2582,2843,2555,2135,3040,3044,2538,2844,2975,2135,2135,2253,2644,2672,2542,2554,2135,2135,2346,2873,2551,2555,2135,2135,2135,2381,2559,2565,2538,2553,2135,2560,2914,2576,2590,2135,2135,2135,2408,2136,2596,2624,2135,2135,2135,2409,2135,2618,2597,3008,2135,2135,2380,2956,2601,2135,2135,2135,2410,2620,2624,2135,2136,2383,2135,2135,2783,2623,2135,2135,2393,2888,2136,2621,3008,2135,2618,2618,2622,2135,2135,2405,2414,2619,2384,2624,2135,2136,2950,2135,2138,2135,2139,2135,2604,2623,2135,2140,2878,2665,2957,2622,2135,2135,2428,2762,2606,2612,2135,2135,2501,2586,2604,3038,2135,2604,3036,2387,2958,2386,2135,2141,2135,2421,2387,2385,2135,2385,2384,2384,2135,2386,2628,2384,2135,2135,2501,2596,2591,2135,2135,2135,2400,2135,2634,2135,2135,2559,2580,2575,2648,2135,2135,2135,2429,2649,2135,2135,2135,2435,2654,2658,2135,2135,2135,2436,2649,2178,2659,2135,2135,2595,2601,2669,2677,2135,2135,2616,2957,2879,2665,2691,2135,2363,2367,2900,2878,2664,2690,2975,2877,2643,2670,2974,2671,2975,2135,2135,2619,2608,2669,2673,2135,2135,2653,2177,2672,2135,2135,2135,2486,2168,2251,2255,2695,2974,2709,2135,2135,2135,2487,2169,2399,2716,2975,2135,2363,2770,2776,2640,2717,2135,2135,2729,2135,2135,2641,2718,2135,2135,2135,2505,2135,2640,2257,2974,2135,2727,2975,2135,2365,2332,2895,2957,2135,2959,2135,2365,2749,2754,2959,2958,2958,2135,2380,2793,2799,2135,2735,2738,2135,2381,2135,2135,2940,2974,2135,2744,2135,2135,2739,2519,2976,2745,2135,2135,2135,2509,2755,2135,2135,2135,2510,2772,2778,2135,2135,2740,2520,2135,2771,2777,2135,2135,2759,2750,2792,2798,2135,2135,2781,2392,2779,2135,2135,2135,2521,2135,2679,2248,2135,2135,2681,2480,2135,2135,2786,3e3,2135,2679,2683,2135,2135,2416,2135,2135,2135,2525,2135,2730,2135,2135,2135,2560,2581,2135,2805,2135,2135,2804,2962,2832,2974,2135,2382,2135,2135,2958,2135,2135,2960,2135,2829,2833,2975,2961,2965,2969,2973,2968,2972,2135,2135,2135,2641,2135,2515,2966,2970,2851,2478,2135,2135,2808,2135,2809,2135,2135,2135,2722,2852,2479,2135,2135,2815,2135,2135,2766,2853,2480,2135,2857,2479,2135,2388,2723,2135,2364,2331,2894,2858,2480,2135,2135,2850,2478,2135,2135,2135,2806,2864,2135,2399,2256,2974,2865,2135,2135,2862,2135,2135,2135,2685,2807,2865,2135,2135,2807,2863,2135,2135,2135,2686,2884,2807,2135,2809,2807,2135,2135,2807,2806,2705,2810,2808,2700,2869,2702,2702,2702,2704,2883,2135,2135,2135,2730,2884,2135,2135,2135,2731,2321,2546,2135,2135,2876,2255,2889,2322,2547,2135,2401,2135,2135,2135,2949,2367,2893,2544,2973,2906,2973,2135,2135,2877,2663,2368,2901,2907,2974,2366,2899,2905,2972,2920,2974,2135,2135,2911,2900,2920,2363,2913,2918,2465,2941,2975,2135,2135,2924,2928,2974,2945,2931,2135,2135,2135,2765,2136,2955,2135,2135,2939,2931,2380,2135,2135,2380,2135,2135,2135,2780,2507,2137,2135,2137,2135,2139,2135,2806,2810,2135,2135,2135,2992,2135,2135,2962,2966,2970,2974,2135,2135,2787,3014,2135,2521,2993,2135,2135,2135,2803,2135,2135,2135,2618,2607,2997,3001,2135,2135,2963,2967,2971,2975,2135,2135,2791,2797,2135,3009,2999,3003,2787,3001,2135,2135,2964,2968,2785,2999,3003,2135,2135,2135,2804,2785,2999,3004,2135,2135,2135,2807,2135,2135,3023,2135,2135,2135,2811,2135,2135,3027,2135,2135,2135,2837,2968,3028,2135,2135,2135,2875,2135,2784,3029,2135,2408,2457,2446,0,14,0,-2120220672,1610612736,-2074083328,-2002780160,-2111830528,1073872896,1342177280,1075807216,4096,16384,2048,8192,0,8192,0,0,0,0,1,0,0,0,2,0,-2145386496,8388608,1073741824,0,2147483648,2147483648,2097152,2097152,2097152,536870912,0,0,134217728,33554432,1536,268435456,268435456,268435456,268435456,128,256,32,0,65536,131072,524288,16777216,268435456,2147483648,1572864,1835008,640,32768,65536,262144,1048576,2097152,196608,196800,196608,196608,0,131072,131072,131072,196608,196624,196608,196624,196608,196608,128,4096,16384,16384,2048,0,4,0,0,2147483648,2097152,0,1024,32,32,0,65536,1572864,1048576,32768,32768,32768,32768,196608,196608,196608,64,64,196608,196608,131072,131072,131072,131072,268435456,268435456,64,196736,196608,196608,196608,131072,196608,196608,16384,4,4,4,2,32,32,65536,1048576,12582912,1073741824,0,0,2,8,16,96,2048,32768,0,0,131072,268435456,268435456,268435456,256,256,196608,196672,196608,196608,196608,196608,4,0,256,256,256,256,32,32,32768,32,32,32,32,32768,268435456,268435456,268435456,196608,196608,196608,196624,196608,196608,196608,16,16,16,268435456,196608,64,64,64,196608,196608,196608,196672,268435456,64,64,196608,196608,16,196608,196608,196608,268435456,64,196608,131072,262144,4194304,25165824,33554432,134217728,268435456,268435456,196608,262152,8,256,512,3072,16384,200,-1073741816,8392713,40,8392718,520,807404072,40,520,100663304,0,0,-540651761,-540651761,257589048,0,262144,0,0,3,8,256,0,4,6,4100,8388612,0,0,0,3,4,8,256,512,1024,0,2097152,0,0,-537854471,-537854471,0,100663296,0,0,1,2,0,0,0,16384,0,0,0,96,14336,0,0,0,7,8,234881024,0,0,0,8,0,0,0,0,262144,0,0,16,64,384,512,0,1,1,0,12582912,0,0,0,0,33554432,67108864,-606084144,-606084144,-606084138,0,0,28,32,768,1966080,-608174080,0,0,0,14,35056,16,64,896,24576,98304,98304,131072,262144,524288,1048576,4194304,25165824,1048576,62914560,134217728,-805306368,0,384,512,16384,65536,131072,262144,29360128,33554432,134217728,268435456,1073741824,2147483648,262144,524288,1048576,29360128,33554432,524288,1048576,16777216,33554432,134217728,268435456,1073741824,0,0,0,123856,1966080,0,64,384,16384,65536,131072,16384,65536,524288,268435456,2147483648,0,0,524288,2147483648,0,0,1,16,0,256,524288,0,0,0,25,96,128,-537854471,0,0,0,32,7404800,-545259520,0,0,0,60,0,249,64768,1048576,6291456,6291456,25165824,100663296,402653184,1073741824,96,128,1280,2048,4096,57344,6291456,57344,6291456,8388608,16777216,33554432,201326592,1342177280,2147483648,0,57344,6291456,8388608,100663296,134217728,2147483648,0,0,0,1,8,16,64,128,64,128,256,1024,131072,131072,131072,262144,524288,16777216,57344,6291456,8388608,67108864,134217728,64,256,1024,2048,4096,57344,64,256,0,24576,32768,6291456,67108864,134217728,0,1,64,256,24576,32768,4194304,32768,4194304,67108864,0,0,64,256,0,0,24576,32768,0,16384,4194304,67108864,64,16384,0,0,1,64,256,16384,4194304,67108864,0,0,0,16384,0,16384,16384,0,-470447874,-470447874,-470447874,0,0,128,0,0,8,96,2048,32768,262144,8388608,35056,1376256,-471859200,0,0,14,16,224,2048,32768,2097152,4194304,8388608,-486539264,0,96,128,2048,32768,262144,2097152,262144,2097152,8388608,33554432,536870912,1073741824,2147483648,0,1610612736,2147483648,0,0,1,524288,1048576,12582912,0,0,0,151311,264503296,2097152,8388608,33554432,1610612736,2147483648,262144,8388608,33554432,536870912,67108864,4194304,0,4194304,0,4194304,4194304,0,0,524288,8388608,536870912,1073741824,2147483648,1,4097,8388609,96,2048,32768,1073741824,2147483648,0,96,2048,2147483648,0,0,96,2048,0,0,1,12582912,0,0,0,0,1641895695,1641895695,0,0,0,249,7404800,15,87808,1835008,1639972864,0,768,5120,16384,65536,1835008,1835008,12582912,16777216,1610612736,0,3,4,8,768,4096,65536,0,0,256,512,786432,8,256,512,4096,16384,1835008,16384,1835008,12582912,1610612736,0,0,0,256,0,0,0,4,8,16,32,1,2,8,256,16384,524288,16384,524288,1048576,12582912,1610612736,0,0,0,8388608,0,0,0,524288,4194304,0,0,0,8388608,-548662288,-548662288,-548662288,0,0,256,16384,65536,520093696,-1073741824,0,0,0,16777216,0,16,32,960,4096,4980736,520093696,1073741824,0,32,896,4096,57344,1048576,6291456,8388608,16777216,100663296,134217728,268435456,2147483648,0,512,786432,4194304,33554432,134217728,268435456,0,786432,4194304,134217728,268435456,0,524288,4194304,268435456,0,0,0,0,0,4194304,4194304,-540651761,0,0,0,2,4,8,16,96,128,264503296,-805306368,0,0,0,8,256,512,19456,131072,3072,16384,131072,262144,8388608,16777216,512,1024,2048,16384,131072,262144,131072,262144,8388608,33554432,201326592,268435456,0,3,4,256,1024,2048,57344,16384,131072,8388608,33554432,134217728,268435456,0,3,256,1024,16384,131072,33554432,134217728,1073741824,2147483648,0,0,256,524288,2147483648,0,3,256,33554432,134217728,1073741824,0,1,2,33554432,1,2,134217728,1073741824,0,1,2,134217728,0,0,0,64,0,0,0,16,32,896,4096,786432,4194304,16777216,33554432,201326592,268435456,1073741824,2147483648,0,0,0,15,0,4980736,4980736,4980736,70460,70460,3478332,0,0,1008,4984832,520093696,60,4864,65536,0,0,0,12,16,32,256,512,4096,65536,0,0,0,67108864,0,0,0,12,0,256,512,65536,0,0,1024,512,131072,131072,4,16,32,65536,0,4,16,32,0,0,0,4,16,0,0,16384,67108864,0,0,1,24,96,128,256,1024],r.TOKEN=["(0)","JSONChar","JSONCharRef","JSONPredefinedCharRef","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","'$$'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'-->'","'.'","'/'","'/>'","':'","':)'","';'","'<!--'","'<![CDATA['","'<?'","'='","'>'","'?'","'?>'","'NaN'","'['","']'","']]>'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'|'","'}'","'}}'"]},{}],2:[function(e,t,n){"use strict";var r=e("./JSONiqTokenizer").JSONiqTokenizer,i=e("./lexer").Lexer,s="NaN|after|allowing|ancestor|ancestor-or-self|and|append|array|as|ascending|at|attribute|base-uri|before|boundary-space|break|by|case|cast|castable|catch|child|collation|comment|constraint|construction|contains|context|continue|copy|copy-namespaces|count|decimal-format|decimal-separator|declare|default|delete|descendant|descendant-or-self|descending|digit|div|document|document-node|element|else|empty|empty-sequence|encoding|end|eq|every|except|exit|external|false|first|following|following-sibling|for|from|ft-option|function|ge|greatest|group|grouping-separator|gt|idiv|if|import|in|index|infinity|insert|instance|integrity|intersect|into|is|item|json|json-item|jsoniq|last|lax|le|least|let|loop|lt|minus-sign|mod|modify|module|namespace|namespace-node|ne|next|node|nodes|not|null|object|of|only|option|or|order|ordered|ordering|paragraphs|parent|pattern-separator|per-mille|percent|preceding|preceding-sibling|previous|processing-instruction|rename|replace|return|returning|revalidation|satisfies|schema|schema-attribute|schema-element|score|select|self|sentences|sliding|some|stable|start|strict|switch|text|then|times|to|treat|true|try|tumbling|type|typeswitch|union|unordered|updating|validate|value|variable|version|when|where|while|window|with|words|xquery|zero-digit".split("|"),o=s.map(function(e){return{name:"'"+e+"'",token:"keyword"}}),u=s.map(function(e){return{name:"'"+e+"'",token:"text",next:function(e){e.pop()}}}),a="constant.language",f="constant",l="comment",c="xml-pe",h="constant.buildin",p=function(e){return"'"+e+"'"},d={start:[{name:p("(#"),token:h,next:function(e){e.push("Pragma")}},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p("(:~"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:p("<?"),token:c,next:function(e){e.push("PI")}},{name:p("''"),token:"string",next:function(e){e.push("AposString")}},{name:p('"'),token:"string",next:function(e){e.push("QuotString")}},{name:"Annotation",token:"support.function"},{name:"ModuleDecl",token:"keyword",next:function(e){e.push("Prefix")}},{name:"OptionDecl",token:"keyword",next:function(e){e.push("_EQName")}},{name:"AttrTest",token:"support.type"},{name:"Variable",token:"variable"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:"IntegerLiteral",token:f},{name:"DecimalLiteral",token:f},{name:"DoubleLiteral",token:f},{name:"Operator",token:"keyword.operator"},{name:"EQName",token:function(e){return s.indexOf(e)!==-1?"keyword":"support.function"}},{name:p("("),token:"lparen"},{name:p(")"),token:"rparen"},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:p("}"),token:"text",next:function(e){e.length>1&&e.pop()}},{name:p("{"),token:"text",next:function(e){e.push("start")}}].concat(o),_EQName:[{name:"EQName",token:"text",next:function(e){e.pop()}}].concat(u),Prefix:[{name:"NCName",token:"text",next:function(e){e.pop()}}].concat(u),StartTag:[{name:p(">"),token:"meta.tag",next:function(e){e.push("TagContent")}},{name:"QName",token:"entity.other.attribute-name"},{name:p("="),token:"text"},{name:p("''"),token:"string",next:function(e){e.push("AposAttr")}},{name:p('"'),token:"string",next:function(e){e.push("QuotAttr")}},{name:p("/>"),token:"meta.tag.r",next:function(e){e.pop()}}],TagContent:[{name:"ElementContentChar",token:"text"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"text"},{name:p("}}"),token:"text"},{name:p("{"),token:"text",next:function(e){e.push("start")}},{name:"EndTag",token:"meta.tag",next:function(e){e.pop(),e.pop()}}],AposAttr:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],QuotAttr:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],Pragma:[{name:"PragmaContents",token:h},{name:p("#"),token:h},{name:p("#)"),token:h,next:function(e){e.pop()}}],Comment:[{name:"CommentContents",token:"comment"},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p(":)"),token:"comment",next:function(e){e.pop()}}],CommentDoc:[{name:"DocCommentContents",token:"comment.doc"},{name:"DocTag",token:"comment.doc.tag"},{name:p("(:"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p(":)"),token:"comment.doc",next:function(e){e.pop()}}],XMLComment:[{name:"DirCommentContents",token:l},{name:p("-->"),token:l,next:function(e){e.pop()}}],CData:[{name:"CDataSectionContents",token:a},{name:p("]]>"),token:a,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:c},{name:p("?"),token:c},{name:p("?>"),token:c,next:function(e){e.pop()}}],AposString:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"JSONPredefinedCharRef",token:"constant.language.escape"},{name:"JSONCharRef",token:"constant.language.escape"},{name:"JSONChar",token:"string"}]};n.JSONiqLexer=function(){return new i(r,d)}},{"./JSONiqTokenizer":1,"./lexer":3}],3:[function(e,t,n){"use strict";var r=function(e){var t=e;this.tokens=[],this.reset=function(){t=t,this.tokens=[]},this.startNonterminal=function(){},this.endNonterminal=function(){},this.terminal=function(e,n,r){this.tokens.push({name:e,value:t.substring(n,r)})},this.whitespace=function(e,n){this.tokens.push({name:"WS",value:t.substring(e,n)})}};n.Lexer=function(e,t){this.tokens=[],this.getLineTokens=function(n,i){i=i==="start"||!i?'["start"]':i;var s=JSON.parse(i),o=new r(n),u=new e(n,o),a=[];for(;;){var f=s[s.length-1];try{o.tokens=[],u["parse_"+f]();var l=null;o.tokens.length>1&&o.tokens[0].name==="WS"&&(a.push({type:"text",value:o.tokens[0].value}),o.tokens.splice(0,1));var c=o.tokens[0],h=t[f];for(var p=0;p<h.length;p++){var d=t[f][p];if(typeof d.name=="function"&&d.name(c)||d.name===c.name){l=d;break}}if(c.name==="EOF")break;if(c.value==="")throw"Encountered empty string lexical rule.";a.push({type:l===null?"text":typeof l.token=="function"?l.token(c.value):l.token,value:c.value}),l&&l.next&&l.next(s)}catch(v){if(v instanceof u.ParseException){var m=0;for(var g=0;g<a.length;g++)m+=a[g].value.length;return a.push({type:"text",value:n.substring(m)}),{tokens:a,state:JSON.stringify(["start"])}}throw v}}return{tokens:a,state:JSON.stringify(s)}}}},{}]},{},[2])(2)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/behaviour/xquery",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml","ace/token_iterator"],function(e,t,n){"use strict";function a(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=e("../../token_iterator").TokenIterator,f=function(){this.inherit(s,["braces","parens","string_dquotes"]),this.inherit(o),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),o=new u(r,s.row,s.column),f=o.getCurrentToken(),l=!1,e=JSON.parse(e).pop();if(f&&f.value===">"||e!=="StartTag")return;if(!f||!a(f,"meta.tag")&&(!a(f,"text")||!f.value.match("/"))){do f=o.stepBackward();while(f&&(a(f,"string")||a(f,"keyword.operator")||a(f,"entity.attribute-name")||a(f,"text")))}else l=!0;var c=o.stepBackward();if(!f||!a(f,"meta.tag")||c!==null&&c.value.match("/"))return;var h=f.value.substring(1);if(l)var h=h.substring(0,s.column-f.start);return{text:"></"+h+">",selection:[1,1]}}})};r.inherits(f,i),t.XQueryBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jsoniq",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/jsoniq_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],function(e,t,n){"use strict";var r=e("../worker/worker_client").WorkerClient,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./xquery/jsoniq_lexer").JSONiqLexer,a=e("../range").Range,f=e("./behaviour/xquery").XQueryBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../anchor").Anchor,h=function(){this.$tokenizer=new u,this.$behaviour=new f,this.foldingRules=new l,this.$highlightRules=new o};i.inherits(h,s),function(){this.completer={getCompletions:function(e,t,n,r,i){if(!t.$worker)return i();t.$worker.emit("complete",{data:{pos:n,prefix:r}}),t.$worker.on("complete",function(e){i(null,e.data)})}},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);return i&&(r+=n),r},this.checkOutdent=function(e,t,n){return/^\s+$/.test(t)?/^\s*[\}\)]/.test(n):!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^(\s*[\}\)])/);if(!i)return 0;var s=i[1].length,o=t.findMatchingBracket({row:n,column:s});if(!o||o.row==n)return 0;var u=this.$getIndent(t.getLine(o.row));t.replace(new a(n,0,n,s-1),u)},this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,u=/^\s*\(:(.*):\)/;for(i=n;i<=r;i++)if(!u.test(t.getLine(i))){o=!1;break}var f=new a(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(u)[1]:"(:"+s+":)")},this.createWorker=function(e){var t=new r(["ace"],"ace/mode/xquery_worker","XQueryWorker"),n=this;return t.attachToDocument(e.getDocument()),t.on("ok",function(t){e.clearAnnotations()}),t.on("markers",function(t){e.clearAnnotations(),n.addMarkers(t.data,e)}),t},this.removeMarkers=function(e){var t=e.getMarkers(!1);for(var n in t)t[n].clazz.indexOf("language_highlight_")===0&&e.removeMarker(n);for(var r=0;r<e.markerAnchors.length;r++)e.markerAnchors[r].detach();e.markerAnchors=[]},this.addMarkers=function(e,t){var n=this;t.markerAnchors||(t.markerAnchors=[]),this.removeMarkers(t),t.languageAnnos=[],e.forEach(function(e){function u(i){r&&t.removeMarker(r),o.row=n.row;if(e.pos.sc!==undefined&&e.pos.ec!==undefined){var s=new a(e.pos.sl,e.pos.sc,e.pos.el,e.pos.ec);r=t.addMarker(s,"language_highlight_"+(e.type?e.type:"default"))}i&&t.setAnnotations(t.languageAnnos)}var n=new c(t.getDocument(),e.pos.sl,e.pos.sc||0);t.markerAnchors.push(n);var r,i=e.pos.ec-e.pos.sc,s=e.pos.el-e.pos.sl,o={guttertext:e.message,type:e.level||"warning",text:e.message};u(),n.on("change",function(){u(!0)}),e.message&&t.languageAnnos.push(o)}),t.setAnnotations(t.languageAnnos)},this.$id="ace/mode/jsoniq"}.call(h.prototype),t.Mode=h})
\ No newline at end of file
diff --git a/js/ace/mode-jsp.js b/js/ace/mode-jsp.js
new file mode 100644
index 0000000..4eab86e
--- /dev/null
+++ b/js/ace/mode-jsp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while",t="null|Infinity|NaN|undefined",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.JavaHighlightRules=o}),ace.define("ace/mode/jsp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/java_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./java_highlight_rules").JavaHighlightRules,o=function(){i.call(this);var e="request|response|out|session|application|config|pageContext|page|Exception",t="page|include|taglib",n=[{token:"comment",regex:"<%--",push:"jsp-dcomment"},{token:"meta.tag",regex:"<%@?|<%=?|<jsp:[^>]+>",push:"jsp-start"}],r=[{token:"meta.tag",regex:"%>|<\\/jsp:[^>]+>",next:"pop"},{token:"variable.language",regex:e},{token:"keyword",regex:t}];for(var o in this.$rules)this.$rules[o].unshift.apply(this.$rules[o],n);this.embedRules(s,"jsp-",r,["start"]),this.addRules({"jsp-dcomment":[{token:"comment",regex:".*?--%>",next:"pop"}]}),this.normalizeRules()};r.inherits(o,i),t.JspHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jsp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jsp_highlight_rules").JspHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.$id="ace/mode/jsp"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-jsx.js b/js/ace/mode-jsx.js
new file mode 100644
index 0000000..f4d0a7d
--- /dev/null
+++ b/js/ace/mode-jsx.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){var e=i.arrayToMap("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|if|throw|delete|in|try|class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|number|int|string|boolean|variant|log|assert".split("|")),t=i.arrayToMap("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined".split("|")),n=i.arrayToMap("debugger|with|const|export|let|private|public|yield|protected|extern|native|as|operator|__fake__|__readonly__".split("|")),r="[a-zA-Z_][a-zA-Z0-9_]*\\b";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:["storage.type","text","entity.name.function"],regex:"(function)(\\s+)("+r+")"},{token:function(r){return r=="this"?"variable.language":r=="function"?"storage.type":e.hasOwnProperty(r)||n.hasOwnProperty(r)?"keyword":t.hasOwnProperty(r)?"constant.language":/^_?[A-Z][a-zA-Z0-9_]*$/.test(r)?"language.support.class":"identifier"},regex:r},{token:"keyword.operator",regex:"!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({<]"},{token:"paren.rparen",regex:"[\\])}>]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(u,o),t.JsxHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";function f(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a}var r=e("../lib/oop"),i=e("./text").Mode,s=e("./jsx_highlight_rules").JsxHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode;r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/jsx"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-julia.js b/js/ace/mode-julia.js
new file mode 100644
index 0000000..785d116
--- /dev/null
+++ b/js/ace/mode-julia.js
@@ -0,0 +1 @@
+ace.define("ace/mode/julia_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#function_decl"},{include:"#function_call"},{include:"#type_decl"},{include:"#keyword"},{include:"#operator"},{include:"#number"},{include:"#string"},{include:"#comment"}],"#bracket":[{token:"keyword.bracket.julia",regex:"\\(|\\)|\\[|\\]|\\{|\\}|,"}],"#comment":[{token:["punctuation.definition.comment.julia","comment.line.number-sign.julia"],regex:"(#)(?!\\{)(.*$)"}],"#function_call":[{token:["support.function.julia","text"],regex:"([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()"}],"#function_decl":[{token:["keyword.other.julia","meta.function.julia","entity.name.function.julia","meta.function.julia","text"],regex:"(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])"}],"#keyword":[{token:"keyword.other.julia",regex:"\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b"},{token:"keyword.control.julia",regex:"\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b"},{token:"storage.modifier.variable.julia",regex:"\\b(?:global|local|const|export|import|importall|using)\\b"},{token:"variable.macro.julia",regex:"@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b"}],"#number":[{token:"constant.numeric.julia",regex:"\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b"}],"#operator":[{token:"keyword.operator.update.julia",regex:"=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>="},{token:"keyword.operator.ternary.julia",regex:"\\?|:"},{token:"keyword.operator.boolean.julia",regex:"\\|\\||&&|!"},{token:"keyword.operator.arrow.julia",regex:"->|<-|-->"},{token:"keyword.operator.relation.julia",regex:">|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>"},{token:"keyword.operator.range.julia",regex:":"},{token:"keyword.operator.shift.julia",regex:"<<|>>"},{token:"keyword.operator.bitwise.julia",regex:"\\||\\&|~"},{token:"keyword.operator.arithmetic.julia",regex:"\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^"},{token:"keyword.operator.isa.julia",regex:"::"},{token:"keyword.operator.dots.julia",regex:"\\.(?=[a-zA-Z])|\\.\\.+"},{token:"keyword.operator.interpolation.julia",regex:"\\$#?(?=.)"},{token:["variable","keyword.operator.transposed-variable.julia"],regex:"([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:'|\\.')*\\.?')"},{token:"text",regex:"\\[|\\("},{token:["text","keyword.operator.transposed-matrix.julia"],regex:"([\\]\\)])((?:'|\\.')*\\.?')"}],"#string":[{token:"punctuation.definition.string.begin.julia",regex:"'",push:[{token:"punctuation.definition.string.end.julia",regex:"'",next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.single.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:'"',push:[{token:"punctuation.definition.string.end.julia",regex:'"',next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.double.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:'\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"',push:[{token:"punctuation.definition.string.end.julia",regex:'"[\\w\\xff-\\u218e\\u2455-\\uffff]*',next:"pop"},{include:"#string_custom_escaped_char"},{defaultToken:"string.quoted.custom-double.julia"}]},{token:"punctuation.definition.string.begin.julia",regex:"`",push:[{token:"punctuation.definition.string.end.julia",regex:"`",next:"pop"},{include:"#string_escaped_char"},{defaultToken:"string.quoted.backtick.julia"}]}],"#string_custom_escaped_char":[{token:"constant.character.escape.julia",regex:'\\\\"'}],"#string_escaped_char":[{token:"constant.character.escape.julia",regex:"\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)"}],"#type_decl":[{token:["keyword.control.type.julia","meta.type.julia","entity.name.type.julia","entity.other.inherited-class.julia","punctuation.separator.inheritance.julia","entity.other.inherited-class.julia"],regex:"(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?"},{token:["other.typed-variable.julia","support.type.julia"],regex:"([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)"}]},this.normalizeRules()};s.metaData={fileTypes:["jl"],firstLineMatch:"^#!.*\\bjulia\\s*$",foldingStartMarker:"^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$",foldingStopMarker:"^\\s*(?:end)\\b.*$",name:"Julia",scopeName:"source.julia"},r.inherits(s,i),t.JuliaHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/julia",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/julia_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./julia_highlight_rules").JuliaHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment="",this.$id="ace/mode/julia"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-latex.js b/js/ace/mode-latex.js
new file mode 100644
index 0000000..e747521
--- /dev/null
+++ b/js/ace/mode-latex.js
@@ -0,0 +1 @@
+ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:["keyword","lparen","variable.parameter","rparen","lparen","storage.type","rparen"],regex:"(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"},{token:["keyword","lparen","variable.parameter","rparen"],regex:"(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\(?:begin|end))({)(\\w*)(})"},{token:"storage.type",regex:"\\\\[a-zA-Z]+"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"constant.character.escape",regex:"\\\\[^a-zA-Z]?"},{token:"string",regex:"\\${1,2}",next:"equation"}],equation:[{token:"comment",regex:"%.*$"},{token:"string",regex:"\\${1,2}",next:"start"},{token:"constant.character.escape",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"error",regex:"^\\s*$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.LatexHighlightRules=s}),ace.define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/^\s*\\(begin)|(section|subsection|paragraph)\b|{\s*$/,this.foldingStopMarker=/^\s*\\(end)\b|^\s*}/,this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):i[2]?this.latexSection(e,n,i[0].length-1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[1]?this.latexBlock(e,n,i[0].length-1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.latexBlock=function(e,t,n){var r={"\\begin":1,"\\end":-1},i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="storage.type"&&u.type!="constant.character.escape")return;var a=u.value,f=r[a],l=function(){var e=i.stepForward(),t=e.type=="lparen"?i.stepForward().value:"";return f===-1&&(i.stepBackward(),t&&i.stepBackward()),t},c=[l()],h=f===-1?i.getCurrentTokenColumn():e.getLine(t).length,p=t;i.step=f===-1?i.stepBackward:i.stepForward;while(u=i.step()){if(!u||u.type!="storage.type"&&u.type!="constant.character.escape")continue;var d=r[u.value];if(!d)continue;var v=l();if(d===f)c.unshift(v);else if(c.shift()!==v||!c.length)break}if(c.length)return;var t=i.getCurrentTokenRow();return f===-1?new s(t,e.getLine(t).length,p,h):(i.stepBackward(),new s(p,h,t,i.getCurrentTokenColumn()))},this.latexSection=function(e,t,n){var r=["\\subsection","\\section","\\begin","\\end","\\paragraph"],i=new o(e,t,n),u=i.getCurrentToken();if(!u||u.type!="storage.type")return;var a=r.indexOf(u.value),f=0,l=t;while(u=i.stepForward()){if(u.type!=="storage.type")continue;var c=r.indexOf(u.value);if(c>=2){f||(l=i.getCurrentTokenRow()-1),f+=c==2?1:-1;if(f<0)break}else if(c>=a)break}f||(l=i.getCurrentTokenRow()-1);while(l>t&&!/\S/.test(e.getLine(l)))l--;return new s(t,e.getLine(t).length,l,e.getLine(l).length)}}.call(u.prototype)}),ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./latex_highlight_rules").LatexHighlightRules,o=e("./folding/latex").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(a,i),function(){this.type="text",this.lineCommentStart="%",this.$id="ace/mode/latex"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-less.js b/js/ace/mode-less.js
new file mode 100644
index 0000000..48b2d35
--- /dev/null
+++ b/js/ace/mode-less.js
@@ -0,0 +1 @@
+ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|hue|saturation|lightness|alpha|round|ceil|floor|percentage|color|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare|when|not|and".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:function(e){return s.hasOwnProperty(e)?"keyword":"variable"},regex:"@[a-z0-9_\\-@]*\\b"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]}};r.inherits(o,s),t.LessHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./less_highlight_rules").LessHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/less"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-liquid.js b/js/ace/mode-liquid.js
new file mode 100644
index 0000000..cde4363
--- /dev/null
+++ b/js/ace/mode-liquid.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/liquid_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=function(){s.call(this);var e="date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split",t="capture|endcapture|case|endcase|when|comment|endcomment|cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow",n="forloop|tablerowloop",r="assign",i=this.createKeywordMapper({"variable.language":n,keyword:t,"support.function":e,"keyword.definition":r},"identifier");for(var o in this.$rules)this.$rules[o].unshift({token:"variable",regex:"{%",push:"liquid-start"},{token:"variable",regex:"{{",push:"liquid-start"});this.addRules({"liquid-start":[{token:"variable",regex:"}}",next:"pop"},{token:"variable",regex:"%}",next:"pop"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"/|\\*|\\-|\\+|=|!=|\\?\\:"},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}]}),this.normalizeRules()};r.inherits(o,i),t.LiquidHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("./liquid_highlight_rules").LiquidHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(a,i),function(){this.blockComment={start:"<!--",end:"-->"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/liquid"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-lisp.js b/js/ace/mode-lisp.js
new file mode 100644
index 0000000..830ec74
--- /dev/null
+++ b/js/ace/mode-lisp.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq|neq|and|or",n="null|nil",r="cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.lisp","text","entity.name.function.lisp"],regex:"(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:["punctuation.definition.constant.character.lisp","constant.character.lisp"],regex:"(#)((?:\\w|[\\\\+-=<>'\"&#])+)"},{token:["punctuation.definition.variable.lisp","variable.other.global.lisp","punctuation.definition.variable.lisp"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.lisp",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}]}};r.inherits(s,i),t.LispHighlightRules=s}),ace.define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lisp_highlight_rules").LispHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/lisp"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-live_script.js b/js/ace/mode-live_script.js
new file mode 100644
index 0000000..5248253
--- /dev/null
+++ b/js/ace/mode-live_script.js
@@ -0,0 +1 @@
+ace.define("ace/mode/live_script_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"punctuation.definition.comment.livescript",regex:"\\/\\*",push:[{token:"punctuation.definition.comment.livescript",regex:"\\*\\/",next:"pop"},{token:"storage.type.annotation.livescriptscript",regex:"@\\w*"},{defaultToken:"comment.block.livescript"}]},{token:["punctuation.definition.comment.livescript","comment.line.number-sign.livescript"],regex:"(#)(?!\\{)(.*$)"},{token:["variable.parameter.function.livescript","meta.inline.function.livescript","storage.type.function.livescript","meta.inline.function.livescript","variable.parameter.function.livescript","meta.inline.function.livescript","storage.type.function.livescript"],regex:"(\\s*\\!?\\(\\s*[^()]*?\\))(\\s*)(!?[~-]{1,2}>)|(\\s*\\!?)(\\(?[^()]*?\\)?)(\\s*)(<[~-]{1,2}!?)",comment:"match stuff like: a -> \u2026 "},{token:["keyword.operator.new.livescript","meta.class.instance.constructor","entity.name.type.instance.livescript"],regex:"(new)(\\s+)(\\w+(?:\\.\\w*)*)"},{token:"keyword.illegal.livescript",regex:"\\bp(?:ackage|r(?:ivate|otected)|ublic)|interface|enum|static|yield\\b"},{token:"punctuation.definition.string.begin.livescript",regex:"'''",push:[{token:"punctuation.definition.string.end.livescript",regex:"'''",next:"pop"},{defaultToken:"string.quoted.heredoc.livescript"}]},{token:"punctuation.definition.string.begin.livescript",regex:'"""',push:[{token:"punctuation.definition.string.end.livescript",regex:'"""',next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\."},{include:"#interpolated_livescript"},{defaultToken:"string.quoted.double.heredoc.livescript"}]},{token:"punctuation.definition.string.begin.livescript",regex:"``",push:[{token:"punctuation.definition.string.end.livescript",regex:"``",next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"},{defaultToken:"string.quoted.script.livescript"}]},{token:"string.array-literal.livescript",regex:"<\\[",push:[{token:"string.array-literal.livescript",regex:"\\]>",next:"pop"},{defaultToken:"string.array-literal.livescript"}]},{token:"string.regexp.livescript",regex:"/{2}(?![\\s=/*+{}?]).*?[^\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])/{2}"},{token:"string.regexp.livescript",regex:"/{2}$",push:[{token:"string.regexp.livescript",regex:"/{2}[imgy]{0,4}",next:"pop"},{include:"#embedded_spaced_comment"},{include:"#interpolated_livescript"},{defaultToken:"string.regexp.livescript"}]},{token:"string.regexp.livescript",regex:"/{2}",push:[{token:"string.regexp.livescript",regex:"/{2}[imgy]{0,4}",next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"},{include:"#interpolated_livescript"},{defaultToken:"string.regexp.livescript"}]},{token:"string.regexp.livescript",regex:"/(?![\\s=/*+{}?]).*?[^\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])"},{token:"keyword.control.livescript",regex:"\\b(?<![\\.\\$\\-])(?:t(?:h(?:is|row|en)|ry|ypeof!?|il|o)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction|rom|allthrough)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith|hen)|o(?:f|r|therwise)|return|break|let|var|loop|match|by)(?!\\-|\\s*:)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n				\\b(?<![\\.\\$\\-])(?:\n		        t(?:h(?:is|row|en)|ry|ypeof!?|il|o)\n		        |c(?:on(?:tinue|st)|a(?:se|tch)|lass)\n		        |i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])\n		        |d(?:e(?:fault|lete|bugger)|o)\n		        |f(?:or(?:\\s+own)?|inally|unction|rom|allthrough)\n		        |s(?:uper|witch)\n		        |e(?:lse|x(?:tends|port)|val)\n		        |a(?:nd|rguments)\n		        |n(?:ew|ot)\n		        |un(?:less|til)\n		        |w(?:hile|ith|hen)\n		        |o(?:f|r|therwise)\n		        |return|break|let|var|loop\n		        |match\n		        |by\n				)(?!\\-|\\s*:)\\b\n			"},{token:"keyword.operator.livescript",regex:"\\b(?<![\\.\\$\\-])(?:instanceof|new|delete|typeof|and|or|is|isnt|not)(?!\\-|\\s*:)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n				\\b(?<![\\.\\$\\-])(\n					instanceof|new|delete|typeof|and|or|is|isnt|not\n				)(?!\\-|\\s*:)\\b\n			"},{token:"keyword.operator.livescript",regex:"and=|or=|%|&|\\^|\\*|\\/|(?<![a-zA-Z$_])(?:\\-)?\\-(?!\\-?>)|\\+\\+|\\+|~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<(?!\\[)|(?<!\\])>|(?<!\\w)!(?!(?:[~\\-]+)?>)|&&|\\.\\.(?:\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\.=|&=|\\(\\.|\\.\\)|\\^=",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)\n				and=|or=|%|&|\\^|\\*|\\/|(?<![a-zA-Z$_])(\\-)?\\-(?!\\-?>)|\\+\\+|\\+|\n				~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|\n				>>>=|<>|<(?!\\[)|(?<!\\])>|(?<!\\w)!(?!([~\\-]+)?>)|&&|\\.\\.(\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\.=|&=|\\(\\.|\\.\\)|\n				\\^=\n			"},{token:["variable.assignment.livescript","variable.assignment.livescript","variable.assignment.livescript","punctuation.separator.key-value","keyword.operator.livescript","variable.assignment.livescript"],regex:"([a-zA-Z\\$_])((?:[\\w$.-])*)(\\s*)(?!\\::)(?:(:)|(=))(\\s*)(?!(?:\\s*!?\\s*\\(.*\\))?\\s*!?[~-]{1,2}>)"},{token:"keyword.operator.livescript",regex:"(?<=\\s|^)[\\[\\{](?=.*?[\\]\\}]\\s+[:=])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\s|^)([\\[\\{])(?=.*?[\\]\\}]\\s+[:=])",push:[{token:"keyword.operator.livescript",regex:"[\\]\\}]\\s*[:=]",next:"pop"},{include:"#variable_name"},{include:"#instance_variable"},{include:"#single_quoted_string"},{include:"#double_quoted_string"},{include:"#numeric"},{defaultToken:"meta.variable.assignment.destructured.livescript"}]},{token:["meta.function.livescript","entity.name.function.livescript","entity.name.function.livescript","entity.name.function.livescript","entity.name.function.livescript","variable.parameter.function.livescript","entity.name.function.livescript","storage.type.function.livescript"],regex:"(\\s*)(?=[a-zA-Z\\$_])([a-zA-Z\\$_])((?:[\\w$.:-])*)(\\s*)([:=])((?:\\s*!?\\s*\\(.*\\))?)(\\s*)(!?[~-]{1,2}>)"},{token:"storage.type.function.livescript",regex:"!?[~-]{1,2}>"},{token:"constant.language.boolean.true.livescript",regex:"\\b(?<!\\.)(?:true|on|yes)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(true|on|yes)(?!\\s*[:=])\\b"},{token:"constant.language.boolean.false.livescript",regex:"\\b(?<!\\.)(?:false|off|no)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(false|off|no)(?!\\s*[:=])\\b"},{token:"constant.language.null.livescript",regex:"\\b(?<!\\.)(?:null|void)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(null|void)(?!\\s*[:=])\\b"},{token:"variable.language.livescript",regex:"\\b(?<!\\.)(?:super|this|extends)(?!\\s*[:=])\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"\\b(?<!\\.)(super|this|extends)(?!\\s*[:=])\\b"},{token:["storage.type.class.livescript","meta.class.livescript","entity.name.type.class.livescript","meta.class.livescript","keyword.control.inheritance.livescript","meta.class.livescript","entity.other.inherited-class.livescript"],regex:"(class\\b)(\\s+)((?:@?[a-zA-Z$_][\\w$.-]*)?)(?:(\\s+)(extends)(\\s+)(@?[a-zA-Z$_][\\w$.-]*))?"},{token:"keyword.other.livescript",regex:"\\b(?:debugger|\\\\)\\b"},{token:"support.class.livescript",regex:"\\b(?:Array|ArrayBuffer|Blob|Boolean|Date|document|event|Function|Int(?:8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(?:8|16|32|64)Array|XMLHttpRequest)\\b"},{token:"entity.name.type.object.livescript",regex:"\\bconsole\\b"},{token:"support.function.console.livescript",regex:"(?<=console\\.)(?:debug|warn|info|log|error|time(?:End|-end)|assert)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"((?<=console\\.)(debug|warn|info|log|error|time(End|-end)|assert))\\b"},{token:"support.function.livescript",regex:"\\b(?:decodeURI(?:Component)?|encodeURI(?:Component)?|eval|parse(?:Float|Int)|require)\\b"},{token:"support.function.prelude.livescript",regex:"(?<![.-])\\b(?:map|filter|reject|partition|find|each|head|tail|last|initial|empty|values|keys|length|cons|append|join|reverse|fold(?:l|r)?1?|unfoldr|and(?:List|-list)|or(?:List|-list)|any|all|unique|sum|product|mean|compact|concat(?:Map|-map)?|maximum|minimum|scan(?:l|r)?1?|replicate|slice|apply|split(?:At|-at)?|take(?:While|-while)?|drop(?:While|-while)?|span|first|break(?:It|-it)|list(?:ToObj|-to-obj)|obj(?:ToFunc|-to-func)|pairs(?:ToObj|-to-obj)|obj(?:ToPairs|-to-pairs|ToLists|-to-lists)|zip(?:All|-all)?(?:With|-with)?|compose|curry|partial|flip|fix|sort(?:With|-with|By|-by)?|group(?:By|-by)|break(?:List|-list|Str|-str)|difference|intersection|union|average|flatten|chars|unchars|repeat|lines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod|recip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate|round|ceiling|floor|is(?:It|-it)NaN|even|odd|gcd|lcm|disabled__id)\\b(?![.-])",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)(?<![.-])\\b(\n				map|filter|reject|partition|find|each|head|tail|last|initial|empty|\n				values|keys|length|cons|append|join|reverse|fold(l|r)?1?|unfoldr|\n				and(List|-list)|or(List|-list)|any|all|unique|sum|product|mean|compact|\n				concat(Map|-map)?|maximum|minimum|scan(l|r)?1?|replicate|slice|apply|\n				split(At|-at)?|take(While|-while)?|drop(While|-while)?|span|first|\n				break(It|-it)|list(ToObj|-to-obj)|obj(ToFunc|-to-func)|\n				pairs(ToObj|-to-obj)|obj(ToPairs|-to-pairs|ToLists|-to-lists)|\n				zip(All|-all)?(With|-with)?|compose|curry|partial|flip|fix|\n				sort(With|-with|By|-by)?|group(By|-by)|break(List|-list|Str|-str)|\n				difference|intersection|union|average|flatten|chars|unchars|repeat|\n				lines|unlines|words|unwords|max|min|negate|abs|signum|quot|rem|div|mod|\n				recip|pi|tau|exp|sqrt|ln|pow|sin|cos|tan|asin|acos|atan|atan2|truncate|\n				round|ceiling|floor|is(It|-it)NaN|even|odd|gcd|lcm|disabled__id\n			)\\b(?![.-])",comment:'Generated by DOM query from http://gkz.github.com/prelude-ls/:\n	      [].slice\n	        .call(document.querySelectorAll(".nav-pills li a"))\n	        .map(function(_) {return _.innerText})\n	        .filter(function(_) {return _.trim() !== \'})\n	        .slice(2)\n	        .join("|")\n     		'},{token:"support.function.semireserved.livescript",regex:"(?<![.-])\\b(?:that|it|e)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)(?<![.-])\\b(that|it|e)\\b"},{token:"support.function.method.array.livescript",regex:"(?<=(?:\\.|\\]|\\)))(?:apply|call|concat|every|filter|for(?:Each|-each)|from|has(?:Own|-own)(?:Property|-property)|index(?:Of|-of)|is(?:Prototype|-prototype)(?:Of|-of)|join|last(?:Index|-index)(?:Of|-of)|map|of|pop|property(?:Is|-is)(?:Enumerable|-enumerable)|push|reduce(?:Right|-right)?|reverse|shift|slice|some|sort|splice|to(?:Locale|-locale)?(?:String|-string)|unshift|valueOf)\\b(?!-)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=(\\.|\\]|\\)))(\n				apply|call|concat|every|filter|for(Each|-each)|\n				from|has(Own|-own)(Property|-property)|index(Of|-of)|\n				is(Prototype|-prototype)(Of|-of)|join|last(Index|-index)(Of|-of)|\n				map|of|pop|property(Is|-is)(Enumerable|-enumerable)|push|\n				reduce(Right|-right)?|reverse|shift|slice|some|sort|\n				splice|to(Locale|-locale)?(String|-string)|unshift|valueOf\n			))\\b(?!-) "},{token:"support.function.static.array.livescript",regex:"(?<=Array\\.)isArray\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Array\\.)(\n				isArray\n			))\\b"},{token:"support.function.static.object.livescript",regex:"(?<=Object\\.)(?:create|ace.define(?:Propert|-propert)(?:ies|y)|freeze|get(?:Own|-own)(?:Property|-property)(?:Descriptors?|Names)|get(?:Property|-property)(?:Descriptor|Names)|getPrototypeOf|is(?:(?:Extensible|-extensible)|(?:Frozen|-frozen)|(?:Sealed|-sealed))?|keys|prevent(?:Extensions|-extensions)|seal)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Object\\.)(\n				create|ace.define(Propert|-propert)(ies|y)|freeze|\n				get(Own|-own)(Property|-property)(Descriptors?|Names)|\n				get(Property|-property)(Descriptor|Names)|getPrototypeOf|\n				is((Extensible|-extensible)|(Frozen|-frozen)|(Sealed|-sealed))?|\n				keys|prevent(Extensions|-extensions)|seal\n			))\\b"},{token:"support.function.static.math.livescript",regex:"(?<=Math\\.)(?:abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Math\\.)(\n				abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|\n				hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|\n				tan|tanh|trunc\n			))\\b"},{token:"support.function.static.number.livescript",regex:"(?<=Number\\.)(?:is(?:Finite|Integer|NaN)|to(?:Integer|-integer))\\b",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?x)((?<=Number\\.)(\n				is(Finite|Integer|NaN)|to(Integer|-integer)\n			))\\b"},{token:"constant.language.livescript",regex:"\\b(?:Infinity|NaN|undefined)\\b"},{token:"punctuation.terminator.statement.livescript",regex:"\\;"},{token:"meta.delimiter.object.comma.livescript",regex:",[ |\\t]*"},{token:"meta.delimiter.method.period.livescript",regex:"\\."},{token:"meta.brace.curly.livescript",regex:"\\{|\\}"},{token:"meta.brace.round.livescript",regex:"\\(|\\)"},{token:"meta.brace.square.livescript",regex:"\\[|\\]\\s*"},{include:"#instance_variable"},{include:"#backslash_string"},{include:"#single_quoted_string"},{include:"#double_quoted_string"},{include:"#numeric"}],"#backslash_string":[{token:"string.quoted.single.livescript",regex:"\\\\(?:[\\\\)\\s,\\};\\]])?",push:[{token:"punctuation.definition.string.end.livescript",regex:"[\\\\)\\s,\\};\\]]",next:"pop"},{defaultToken:"string.quoted.single.livescript"}]}],"#double_quoted_string":[{token:"punctuation.definition.string.begin.livescript",regex:'"',push:[{token:"punctuation.definition.string.end.livescript",regex:'"',next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)"},{include:"#interpolated_livescript"},{defaultToken:"string.quoted.double.livescript"}]}],"#embedded_comment":[{token:["punctuation.definition.comment.livescript","comment.line.number-sign.livescript"],regex:"(?<!\\\\)(#)(.*$)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\\\)(#).*$\\n"}],"#embedded_spaced_comment":[{token:["punctuation.definition.comment.livescript","comment.line.number-sign.livescript"],regex:"(?<!\\\\)(#\\s)(.*$)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\\\)(#\\s).*$\\n"}],"#constructor_variable":[{token:"variable.other.readwrite.constructor.livescript",regex:"[a-zA-Z$_][\\w$-]*@{2}(?:[a-zA-Z$_][\\w$-]*)?"}],"#instance_variable":[{token:"variable.other.readwrite.instance.livescript",regex:"(?<!\\S)@(?:[a-zA-Z$_][\\w$-]*)?",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<!\\S)(@)([a-zA-Z$_][\\w$-]*)?"}],"#interpolated_livescript":[{todo:{token:"punctuation.section.embedded.livescript",regex:"\\#\\{",push:[{token:"punctuation.section.embedded.livescript",regex:"\\}",next:"pop"},{include:"$self"},{defaultToken:"source.livescript.embedded.source"}]}},{todo:{token:"source.livescript.embedded.source.simple",regex:"\\#",push:[{token:"source.livescript.embedded.source.simple",regex:"",next:"pop"},{include:"$self"},{defaultToken:"source.livescript.embedded.source.simple"}]}}],"#numeric":[{token:"constant.numeric.livescript",regex:"(?<![\\$@a-zA-Z_])(?:[0-9]+r[0-9_]+|(?:16r|0[xX])[0-9a-fA-F_]+|[0-9]+(?:\\.[0-9_]+)?(?:e[+\\-]?[0-9_]+)?[_a-zA-Z]*)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<![\\$@a-zA-Z_])(([0-9]+r[0-9_]+)|((16r|0[xX])[0-9a-fA-F_]+)|([0-9]+(\\.[0-9_]+)?(e[+\\-]?[0-9_]+)?)[_a-zA-Z]*)"}],"#single_quoted_string":[{token:"punctuation.definition.string.begin.livescript",regex:"'",push:[{token:"punctuation.definition.string.end.livescript",regex:"'",next:"pop"},{token:"constant.character.escape.livescript",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"},{defaultToken:"string.quoted.single.livescript"}]}],"#variable_name":[{token:"variable.assignment.livescript",regex:"[a-zA-Z\\$_][\\w$-]*(?:\\.\\w+)*(?!\\-)"}]},this.normalizeRules()};s.metaData={comment:"LiveScript Syntax: version 1",fileTypes:["ls","Slakefile","ls.erb"],firstLineMatch:"^#!.*\\bls",foldingStartMarker:"^\\s*class\\s+\\S.*$|.*(->|=>)\\s*$|.*[\\[{]\\s*$",foldingStopMarker:"^\\s*$|^\\s*[}\\]]\\s*$",keyEquivalent:"^~C",name:"LiveScript",scopeName:"source.livescript"},r.inherits(s,i),t.LiveScriptHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/live_script",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/live_script_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./live_script_highlight_rules").LiveScriptHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.$id="ace/mode/live_script"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-livescript.js b/js/ace/mode-livescript.js
new file mode 100644
index 0000000..76ef153
--- /dev/null
+++ b/js/ace/mode-livescript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/range","ace/mode/text"],function(e,t,n){function u(e,t){function n(){}return n.prototype=(e.superclass=t).prototype,(e.prototype=new n).constructor=e,typeof t.extended=="function"&&t.extended(e),e}function a(e,t){var n={}.hasOwnProperty;for(var r in t)n.call(t,r)&&(e[r]=t[r]);return e}var r,i,s,o;r="(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*",t.Mode=i=function(t){function o(){var t;this.$tokenizer=new(e("../tokenizer").Tokenizer)(o.Rules);if(t=e("../mode/matching_brace_outdent"))this.$outdent=new t.MatchingBraceOutdent;this.$id="ace/mode/livescript"}var n,i=u((a(o,t).displayName="LiveScriptMode",o),t).prototype,s=o;return n=RegExp("(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*"+r+")?))\\s*$"),i.getNextLineIndent=function(e,t,r){var i,s;return i=this.$getIndent(t),s=this.$tokenizer.getLineTokens(t,e).tokens,(!s.length||s[s.length-1].type!=="comment")&&e==="start"&&n.test(t)&&(i+=r),i},i.toggleCommentLines=function(t,n,r,i){var s,o,u,a,f,l;s=/^(\s*)#/,o=new(e("../range").Range)(0,0,0,0);for(u=r;u<=i;++u)a=u,(f=s.test(l=n.getLine(a)))?l=l.replace(s,"$1"):l=l.replace(/^\s*/,"$&#"),o.end.row=o.start.row=a,o.end.column=l.length+1,n.replace(o,l);return 1-f*2},i.checkOutdent=function(e,t,n){var r;return(r=this.$outdent)!=null?r.checkOutdent(t,n):void 8},i.autoOutdent=function(e,t,n){var r;return(r=this.$outdent)!=null?r.autoOutdent(t,n):void 8},o}(e("../mode/text").Mode),s="(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))",o={defaultToken:"string"},i.Rules={start:[{token:"keyword",regex:"(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)"+s},{token:"constant.language",regex:"(?:true|false|yes|no|on|off|null|void|undefined)"+s},{token:"invalid.illegal",regex:"(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)"+s},{token:"language.support.class",regex:"(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)"+s},{token:"language.support.function",regex:"(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)"+s},{token:"variable.language",regex:"(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)"+s},{token:"identifier",regex:r+"\\s*:(?![:=])"},{token:"variable",regex:r},{token:"keyword.operator",regex:"(?:\\.{3}|\\s+\\?)"},{token:"keyword.variable",regex:"(?:@+|::|\\.\\.)",next:"key"},{token:"keyword.operator",regex:"\\.\\s*",next:"key"},{token:"string",regex:"\\\\\\S[^\\s,;)}\\]]*"},{token:"string.doc",regex:"'''",next:"qdoc"},{token:"string.doc",regex:'"""',next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"`",next:"js"},{token:"string",regex:"<\\[",next:"words"},{token:"string.regex",regex:"//",next:"heregex"},{token:"comment.doc",regex:"/\\*",next:"comment"},{token:"comment",regex:"#.*"},{token:"string.regex",regex:"\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}",next:"key"},{token:"constant.numeric",regex:"(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)"},{token:"lparen",regex:"[({[]"},{token:"rparen",regex:"[)}\\]]",next:"key"},{token:"keyword.operator",regex:"[\\^!|&%+\\-]+"},{token:"text",regex:"\\s+"}],heregex:[{token:"string.regex",regex:".*?//[gimy$?]{0,4}",next:"start"},{token:"string.regex",regex:"\\s*#{"},{token:"comment.regex",regex:"\\s+(?:#.*)?"},{defaultToken:"string.regex"}],key:[{token:"keyword.operator",regex:"[.?@!]+"},{token:"identifier",regex:r,next:"start"},{token:"text",regex:"",next:"start"}],comment:[{token:"comment.doc",regex:".*?\\*/",next:"start"},{defaultToken:"comment.doc"}],qdoc:[{token:"string",regex:".*?'''",next:"key"},o],qqdoc:[{token:"string",regex:'.*?"""',next:"key"},o],qstring:[{token:"string",regex:"[^\\\\']*(?:\\\\.[^\\\\']*)*'",next:"key"},o],qqstring:[{token:"string",regex:'[^\\\\"]*(?:\\\\.[^\\\\"]*)*"',next:"key"},o],js:[{token:"string",regex:"[^\\\\`]*(?:\\\\.[^\\\\`]*)*`",next:"key"},o],words:[{token:"string",regex:".*?\\]>",next:"key"},o]}})
\ No newline at end of file
diff --git a/js/ace/mode-logiql.js b/js/ace/mode-logiql.js
new file mode 100644
index 0000000..db12dd6
--- /dev/null
+++ b/js/ace/mode-logiql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.block",regex:"/\\*",push:[{token:"comment.block",regex:"\\*/",next:"pop"},{defaultToken:"comment.block"}]},{token:"comment.single",regex:"//.*"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?"},{token:"string",regex:'"',push:[{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{token:"constant.language",regex:"\\b(true|false)\\b"},{token:"entity.name.type.logicblox",regex:"`[a-zA-Z_:]+(\\d|\\a)*\\b"},{token:"keyword.start",regex:"->",comment:"Constraint"},{token:"keyword.start",regex:"-->",comment:"Level 1 Constraint"},{token:"keyword.start",regex:"<-",comment:"Rule"},{token:"keyword.start",regex:"<--",comment:"Level 1 Rule"},{token:"keyword.end",regex:"\\.",comment:"Terminator"},{token:"keyword.other",regex:"!",comment:"Negation"},{token:"keyword.other",regex:",",comment:"Conjunction"},{token:"keyword.other",regex:";",comment:"Disjunction"},{token:"keyword.operator",regex:"<=|>=|!=|<|>",comment:"Equality"},{token:"keyword.other",regex:"@",comment:"Equality"},{token:"keyword.operator",regex:"\\+|-|\\*|/",comment:"Arithmetic operations"},{token:"keyword",regex:"::",comment:"Colon colon"},{token:"support.function",regex:"\\b(agg\\s*<<)",push:[{include:"$self"},{token:"support.function",regex:">>",next:"pop"}]},{token:"storage.modifier",regex:"\\b(lang:[\\w:]*)"},{token:["storage.type","text"],regex:"(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)"},{token:"entity.name",regex:"[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))"},{token:"variable.parameter",regex:"([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))"}]},this.normalizeRules()};r.inherits(s,i),t.LogiQLHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/logiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/logiql_highlight_rules","ace/mode/folding/coffee","ace/token_iterator","ace/range","ace/mode/behaviour/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./logiql_highlight_rules").LogiQLHighlightRules,o=e("./folding/coffee").FoldMode,u=e("../token_iterator").TokenIterator,a=e("../range").Range,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./matching_brace_outdent").MatchingBraceOutdent,c=function(){this.HighlightRules=s,this.foldingRules=new o,this.$outdent=new l,this.$behaviour=new f};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(/comment|string/.test(o))return r;if(s.length&&s[s.length-1].type=="comment.single")return r;var u=t.match();return/(-->|<--|<-|->|{)\s*$/.test(t)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)?!0:n!=="\n"&&n!=="\r\n"?!1:/^\s+/.test(t)?!0:!1},this.autoOutdent=function(e,t,n){if(this.$outdent.autoOutdent(t,n))return;var r=t.getLine(n),i=r.match(/^\s+/),s=r.lastIndexOf(".")+1;if(!i||!n||!s)return 0;var o=t.getLine(n+1),u=this.getMatching(t,{row:n,column:s});if(!u||u.start.row==n)return 0;s=i[0].length;var f=this.$getIndent(t.getLine(u.start.row));t.replace(new a(n+1,0,n+1,s),f)},this.getMatching=function(e,t,n){t==undefined&&(t=e.selection.lead),typeof t=="object"&&(n=t.column,t=t.row);var r=e.getTokenAt(t,n),i="keyword.start",s="keyword.end",o;if(!r)return;if(r.type==i){var f=new u(e,t,n);f.step=f.stepForward}else{if(r.type!=s)return;var f=new u(e,t,n);f.step=f.stepBackward}while(o=f.step())if(o.type==i||o.type==s)break;if(!o||o.type==r.type)return;var l=f.getCurrentTokenColumn(),t=f.getCurrentTokenRow();return new a(t,l,t,l+o.value.length)},this.$id="ace/mode/logiql"}.call(c.prototype),t.Mode=c})
\ No newline at end of file
diff --git a/js/ace/mode-lsl.js b/js/ace/mode-lsl.js
new file mode 100644
index 0000000..026000b
--- /dev/null
+++ b/js/ace/mode-lsl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function s(){var e=this.createKeywordMapper({"constant.language.float.lsl":"DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI","constant.language.integer.lsl":"ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_CHARACTER_TIME|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR","constant.language.integer.boolean.lsl":"FALSE|TRUE","constant.language.quaternion.lsl":"ZERO_ROTATION","constant.language.string.lsl":"EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED","constant.language.vector.lsl":"TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR","invalid.broken.lsl":"LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH","invalid.deprecated.lsl":"ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect","invalid.illegal.lsl":"event","invalid.unimplemented.lsl":"CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera","reserved.godmode.lsl":"llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask","reserved.log.lsl":"print","keyword.control.lsl":"do|else|for|if|jump|return|while","storage.type.lsl":"float|integer|key|list|quaternion|rotation|string|vector","support.function.lsl":"llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64","support.function.event.lsl":"at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result"},"identifier");this.$rules={start:[{token:"comment.line.double-slash.lsl",regex:"\\/\\/.*$"},{token:"comment.block.begin.lsl",regex:"\\/\\*",next:"comment"},{token:"string.quoted.double.lsl",start:'"',end:'"',next:[{token:"constant.character.escape.lsl",regex:/\\[tn"\\]/}]},{token:"constant.numeric.lsl",regex:"(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b"},{token:"entity.name.state.lsl",regex:"\\b((state)\\s+[A-Za-z_]\\w*|default)\\b"},{token:e,regex:"\\b[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"support.function.user-defined.lsl",regex:/\b([a-zA-Z_]\w*)(?=\(.*?\))/},{token:"keyword.operator.lsl",regex:"\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?"},{token:"invalid.illegal.keyword.operator.lsl",regex:":=?"},{token:"punctuation.operator.lsl",regex:"\\,|\\;"},{token:"paren.lparen.lsl",regex:"[\\[\\(\\{]"},{token:"paren.rparen.lsl",regex:"[\\]\\)\\}]"},{token:"text.lsl",regex:"\\s+"}],comment:[{token:"comment.block.end.lsl",regex:"\\*\\/",next:"start"},{token:"comment.block.lsl",regex:".+"}]},this.normalizeRules()}var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules;r.inherits(s,i),t.LSLHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/lsl",["require","exports","module","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./lsl_highlight_rules").LSLHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,s=e("../range").Range,o=e("./text").Mode,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=e("../lib/oop"),l=function(){this.HighlightRules=r,this.$outdent=new i,this.$behaviour=new u,this.foldingRules=new a};f.inherits(l,o),function(){this.lineCommentStart=["//"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type==="comment.block.lsl")return r;if(e==="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/lsl"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-lua.js b/js/ace/mode-lua.js
new file mode 100644
index 0000000..cd503e7
--- /dev/null
+++ b/js/ace/mode-lua.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="",s="setn|foreach|foreachi|gcinfo|log10|maxn",o=this.createKeywordMapper({keyword:e,"support.function":n,"invalid.deprecated":s,"constant.library":r,"constant.language":t,"invalid.illegal":i,"variable.language":"self"},"identifier"),u="(?:(?:[1-9]\\d*)|(?:0))",a="(?:0[xX][\\dA-Fa-f]+)",f="(?:"+u+"|"+a+")",l="(?:\\.\\d+)",c="(?:\\d+)",h="(?:(?:"+c+"?"+l+")|(?:"+c+"\\.))",p="(?:"+h+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"comment"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:p},{token:"constant.numeric",regex:f+"\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),ace.define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/,this.foldingStopMarker=/\bend\b|^\s*}|\]=*\]/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]=="then"&&/\belseif\b/.test(r))return;if(o[1]){if(e.getTokenAt(n,o.index+1).type==="keyword")return"start"}else{if(!o[2])return"start";var u=e.bgTokenizer.getState(n)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[0]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(o[0][0]!=="]")return"end";var u=e.bgTokenizer.getState(n-1)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.luaBlock(e,n,i.index+1):i[2]?e.getCommentFoldRange(n,i.index+1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[0]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.luaBlock(e,n,i.index+1):i[0][0]==="]"?e.getCommentFoldRange(n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.luaBlock=function(e,t,n){var r=new o(e,t,n),i={"function":1,"do":1,then:1,elseif:-1,end:-1,repeat:1,until:-1},u=r.getCurrentToken();if(!u||u.type!="keyword")return;var a=u.value,f=[a],l=i[a];if(!l)return;var c=l===-1?r.getCurrentTokenColumn():e.getLine(t).length,h=t;r.step=l===-1?r.stepBackward:r.stepForward;while(u=r.step()){if(u.type!=="keyword")continue;var p=l*i[u.value];if(p>0)f.unshift(u.value);else if(p<=0){f.shift();if(!f.length&&u.value!="elseif")break;p===0&&f.unshift(u.value)}}var t=r.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,r.getCurrentTokenColumn())}}.call(u.prototype)}),ace.define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lua_highlight_rules").LuaHighlightRules,o=e("./folding/lua").FoldMode,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(f,i),function(){function n(t){var n=0;for(var r=0;r<t.length;r++){var i=t[r];i.type=="keyword"?i.value in e&&(n+=e[i.value]):i.type=="paren.lparen"?n++:i.type=="paren.rparen"&&n--}return n<0?-1:n>0?1:0}this.lineCommentStart="--",this.blockComment={start:"--[",end:"]--"};var e={"function":1,then:1,"do":1,"else":1,elseif:1,repeat:1,end:-1,until:-1},t=["else","elseif","end","until"];this.getNextLineIndent=function(e,t,r){var i=this.$getIndent(t),s=0,o=this.getTokenizer().getLineTokens(t,e),u=o.tokens;return e=="start"&&(s=n(u)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,t,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(e,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;if(n.match(/^\s*[\)\}\]]$/))return!0;var i=this.getTokenizer().getLineTokens(n.trim(),e).tokens;return!i||!i.length?!1:i[0].type=="keyword"&&t.indexOf(i[0].value)!=-1},this.autoOutdent=function(e,t,r){var i=t.getLine(r-1),s=this.$getIndent(i).length,o=this.getTokenizer().getLineTokens(i,"start").tokens,a=t.getTabString().length,f=s+a*n(o),l=this.$getIndent(t.getLine(r)).length;if(l<f)return;t.outdentRows(new u(r,0,r+2,0))},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/lua_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/lua"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-luapage.js b/js/ace/mode-luapage.js
new file mode 100644
index 0000000..7ea4928
--- /dev/null
+++ b/js/ace/mode-luapage.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|do|else|elseif|end|for|function|if|in|local|repeat|return|then|until|while|or|and|not",t="true|false|nil|_G|_VERSION",n="string|xpcall|package|tostring|print|os|unpack|require|getfenv|setmetatable|next|assert|tonumber|io|rawequal|collectgarbage|getmetatable|module|rawset|math|debug|pcall|table|newproxy|type|coroutine|_G|select|gcinfo|pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|load|error|loadfile|sub|upper|len|gfind|rep|find|match|char|dump|gmatch|reverse|byte|format|gsub|lower|preload|loadlib|loaded|loaders|cpath|config|path|seeall|exit|setlocale|date|getenv|difftime|remove|time|clock|tmpname|rename|execute|lines|write|close|flush|open|output|type|read|stderr|stdin|input|stdout|popen|tmpfile|log|max|acos|huge|ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|gethook|setmetatable|setlocal|traceback|setfenv|getinfo|setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|foreachi|maxn|foreach|concat|sort|remove|resume|yield|status|wrap|create|running|__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber",r="string|package|os|io|math|debug|table|coroutine",i="",s="setn|foreach|foreachi|gcinfo|log10|maxn",o=this.createKeywordMapper({keyword:e,"support.function":n,"invalid.deprecated":s,"constant.library":r,"constant.language":t,"invalid.illegal":i,"variable.language":"self"},"identifier"),u="(?:(?:[1-9]\\d*)|(?:0))",a="(?:0[xX][\\dA-Fa-f]+)",f="(?:"+u+"|"+a+")",l="(?:\\.\\d+)",c="(?:\\d+)",h="(?:(?:"+c+"?"+l+")|(?:"+c+"\\.))",p="(?:"+h+")";this.$rules={start:[{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-2,t),"comment"},regex:/\-\-\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"comment",regex:"\\-\\-.*$"},{stateName:"bracketedString",onMatch:function(e,t,n){return n.unshift(this.next,e.length,t),"comment"},regex:/\[=*\[/,next:[{onMatch:function(e,t,n){return e.length==n[1]?(n.shift(),n.shift(),this.next=n.shift()):this.next="","comment"},regex:/\]=*\]/,next:"start"},{defaultToken:"comment"}]},{token:"string",regex:'"(?:[^\\\\]|\\\\.)*?"'},{token:"string",regex:"'(?:[^\\\\]|\\\\.)*?'"},{token:"constant.numeric",regex:p},{token:"constant.numeric",regex:f+"\\b"},{token:o,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\."},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+|\\w+"}]},this.normalizeRules()};r.inherits(s,i),t.LuaHighlightRules=s}),ace.define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=e("../../token_iterator").TokenIterator,u=t.FoldMode=function(){};r.inherits(u,i),function(){this.foldingStartMarker=/\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/,this.foldingStopMarker=/\bend\b|^\s*}|\]=*\]/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=this.foldingStartMarker.test(r),s=this.foldingStopMarker.test(r);if(i&&!s){var o=r.match(this.foldingStartMarker);if(o[1]=="then"&&/\belseif\b/.test(r))return;if(o[1]){if(e.getTokenAt(n,o.index+1).type==="keyword")return"start"}else{if(!o[2])return"start";var u=e.bgTokenizer.getState(n)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"start"}}if(t!="markbeginend"||!s||i&&s)return"";var o=r.match(this.foldingStopMarker);if(o[0]==="end"){if(e.getTokenAt(n,o.index+1).type==="keyword")return"end"}else{if(o[0][0]!=="]")return"end";var u=e.bgTokenizer.getState(n-1)||"";if(u[0]=="bracketedComment"||u[0]=="bracketedString")return"end"}},this.getFoldWidgetRange=function(e,t,n){var r=e.doc.getLine(n),i=this.foldingStartMarker.exec(r);if(i)return i[1]?this.luaBlock(e,n,i.index+1):i[2]?e.getCommentFoldRange(n,i.index+1):this.openingBracketBlock(e,"{",n,i.index);var i=this.foldingStopMarker.exec(r);if(i)return i[0]==="end"&&e.getTokenAt(n,i.index+1).type==="keyword"?this.luaBlock(e,n,i.index+1):i[0][0]==="]"?e.getCommentFoldRange(n,i.index+1):this.closingBracketBlock(e,"}",n,i.index+i[0].length)},this.luaBlock=function(e,t,n){var r=new o(e,t,n),i={"function":1,"do":1,then:1,elseif:-1,end:-1,repeat:1,until:-1},u=r.getCurrentToken();if(!u||u.type!="keyword")return;var a=u.value,f=[a],l=i[a];if(!l)return;var c=l===-1?r.getCurrentTokenColumn():e.getLine(t).length,h=t;r.step=l===-1?r.stepBackward:r.stepForward;while(u=r.step()){if(u.type!=="keyword")continue;var p=l*i[u.value];if(p>0)f.unshift(u.value);else if(p<=0){f.shift();if(!f.length&&u.value!="elseif")break;p===0&&f.unshift(u.value)}}var t=r.getCurrentTokenRow();return l===-1?new s(t,e.getLine(t).length,h,c):new s(h,c,t,r.getCurrentTokenColumn())}}.call(u.prototype)}),ace.define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lua_highlight_rules").LuaHighlightRules,o=e("./folding/lua").FoldMode,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(f,i),function(){function n(t){var n=0;for(var r=0;r<t.length;r++){var i=t[r];i.type=="keyword"?i.value in e&&(n+=e[i.value]):i.type=="paren.lparen"?n++:i.type=="paren.rparen"&&n--}return n<0?-1:n>0?1:0}this.lineCommentStart="--",this.blockComment={start:"--[",end:"]--"};var e={"function":1,then:1,"do":1,"else":1,elseif:1,repeat:1,end:-1,until:-1},t=["else","elseif","end","until"];this.getNextLineIndent=function(e,t,r){var i=this.$getIndent(t),s=0,o=this.getTokenizer().getLineTokens(t,e),u=o.tokens;return e=="start"&&(s=n(u)),s>0?i+r:s<0&&i.substr(i.length-r.length)==r&&!this.checkOutdent(e,t,"\n")?i.substr(0,i.length-r.length):i},this.checkOutdent=function(e,n,r){if(r!="\n"&&r!="\r"&&r!="\r\n")return!1;if(n.match(/^\s*[\)\}\]]$/))return!0;var i=this.getTokenizer().getLineTokens(n.trim(),e).tokens;return!i||!i.length?!1:i[0].type=="keyword"&&t.indexOf(i[0].value)!=-1},this.autoOutdent=function(e,t,r){var i=t.getLine(r-1),s=this.$getIndent(i).length,o=this.getTokenizer().getLineTokens(i,"start").tokens,a=t.getTabString().length,f=s+a*n(o),l=this.$getIndent(t.getLine(r)).length;if(l<f)return;t.outdentRows(new u(r,0,r+2,0))},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/lua_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/lua"}.call(f.prototype),t.Mode=f}),ace.define("ace/mode/luapage_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/lua_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=e("./lua_highlight_rules").LuaHighlightRules,o=function(){i.call(this);var e=[{token:"keyword",regex:"<\\%\\=?",push:"lua-start"},{token:"keyword",regex:"<\\?lua\\=?",push:"lua-start"}],t=[{token:"keyword",regex:"\\%>",next:"pop"},{token:"keyword",regex:"\\?>",next:"pop"}];this.embedRules(s,"lua-",t,["start"]);for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.normalizeRules()};r.inherits(o,i),t.LuaPageHighlightRules=o}),ace.define("ace/mode/luapage",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/lua","ace/mode/luapage_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./lua").Mode,o=e("./luapage_highlight_rules").LuaPageHighlightRules,u=function(){i.call(this),this.HighlightRules=o,this.createModeDelegates({"lua-":s})};r.inherits(u,i),function(){this.$id="ace/mode/luapage"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-lucene.js b/js/ace/mode-lucene.js
new file mode 100644
index 0000000..6b482d3
--- /dev/null
+++ b/js/ace/mode-lucene.js
@@ -0,0 +1 @@
+ace.define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){this.$rules={start:[{token:"constant.character.negation",regex:"[\\-]"},{token:"constant.character.interro",regex:"[\\?]"},{token:"constant.character.asterisk",regex:"[\\*]"},{token:"constant.character.proximity",regex:"~[0-9]+\\b"},{token:"keyword.operator",regex:"(?:AND|OR|NOT)\\b"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"keyword",regex:"[\\S]+:"},{token:"string",regex:'".*?"'},{token:"text",regex:"\\s+"}]}};r.inherits(o,s),t.LuceneHighlightRules=o}),ace.define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./lucene_highlight_rules").LuceneHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/lucene"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-makefile.js b/js/ace/mode-makefile.js
new file mode 100644
index 0000000..4d12335
--- /dev/null
+++ b/js/ace/mode-makefile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:(?:\\$"+l+")|(?:"+l+"=))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"constant",regex:/\$\w+/},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^	+"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"variable.language",regex:h},{token:"variable",regex:c},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./sh_highlight_rules"),o=function(){var e=this.createKeywordMapper({keyword:s.reservedKeywords,"support.function.builtin":s.languageConstructs,"invalid.deprecated":"debugger"},"string");this.$rules={start:[{token:"string.interpolated.backtick.makefile",regex:"`",next:"shell-start"},{token:"punctuation.definition.comment.makefile",regex:/#(?=.)/,next:"comment"},{token:["keyword.control.makefile"],regex:"^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)"},{token:["entity.name.function.makefile","text"],regex:"^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)"}],comment:[{token:"punctuation.definition.comment.makefile",regex:/.+\\/},{token:"punctuation.definition.comment.makefile",regex:".+",next:"start"}],"shell-start":[{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"string",regex:"\\w+"},{token:"string.interpolated.backtick.makefile",regex:"`",next:"start"}]}};r.inherits(o,i),t.MakefileHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./makefile_highlight_rules").MakefileHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$indentWithTabs=!0,this.$id="ace/mode/makefile"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-markdown.js b/js/ace/mode-markdown.js
new file mode 100644
index 0000000..b9fe2f9
--- /dev/null
+++ b/js/ace/mode-markdown.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n<o){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(u,i,n,0)}while(n-->0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n<o){if(!l(n))continue;var d=h();if(d>=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript").Mode,o=e("./xml").Mode,u=e("./html").Mode,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./folding/markdown").FoldMode,l=function(){this.HighlightRules=a,this.createModeDelegates({"js-":s,"xml-":o,"html-":u}),this.foldingRules=new f};r.inherits(l,i),function(){this.type="text",this.blockComment={start:"<!--",end:"-->"},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-mask.js b/js/ace/mode-mask.js
new file mode 100644
index 0000000..ff8c612
--- /dev/null
+++ b/js/ace/mode-mask.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/mask_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/css_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";function N(){function t(e,t,n){var r="js-"+e+"-",i=e==="block"?["start"]:["start","no_regex"];s(o,r,t,i,n)}function n(){s(u,"css-block-",/\}/)}function r(){s(a,"md-multiline-",/("""|''')/,[])}function i(){s(f,"html-multiline-",/("""|''')/)}function s(t,n,r,i,s){var o="pop",u=i||["start"];u.length===0&&(u=null),/block|multiline/.test(n)&&(o=n+"end",e.$rules[o]=[k("empty","","start")]),e.embedRules(t,n,[k(s||w,r,o)],u,u==null?!0:!1)}this.$rules={start:[k("comment","\\/\\/.*$"),k("comment","\\/\\*",[k("comment",".*?\\*\\/","start"),k("comment",".+")]),C.string("'''"),C.string('"""'),C.string('"'),C.string("'"),C.syntax(/(markdown|md)\b/,"md-multiline","multiline"),C.syntax(/html\b/,"html-multiline","multiline"),C.syntax(/(slot|event)\b/,"js-block","block"),C.syntax(/style\b/,"css-block","block"),C.syntax(/var\b/,"js-statement","attr"),C.tag(),k(b,"[[({>]"),k(w,"[\\])};]","start"),{caseInsensitive:!0}]};var e=this;t("interpolation",/\]/,w+"."+g),t("statement",/\)|}|;/),t("block",/\}/),n(),r(),i(),this.normalizeRules()}function k(e,t,n){var r,i,s;return arguments.length===4?(r=n,i=arguments[3]):typeof n=="string"?i=n:r=n,typeof e=="function"&&(s=e,e="empty"),{token:e,regex:t,push:r,next:i,onMatch:s}}t.MaskHighlightRules=N;var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./css_highlight_rules").CssHighlightRules,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./html_highlight_rules").HtmlHighlightRules,l="keyword.support.constant.language",c="support.function.markup.bold",h="keyword",p="constant.language",d="keyword.control.markup.italic",v="support.variable.class",m="keyword.operator",g="markup.italic",y="markup.bold",b="paren.lparen",w="paren.rparen",E,S,x,T;(function(){E=i.arrayToMap("log".split("|")),x=i.arrayToMap(":dualbind|:bind|:import|slot|event|style|html|markdown|md".split("|")),S=i.arrayToMap("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import".split("|")),T=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|"))})(),r.inherits(N,s);var C={string:function(e,t){var n=k("string.start",e,[k(b+"."+g,/~\[/,C.interpolation()),k("string.end",e,"pop"),{defaultToken:"string"}],t);if(e.length===1){var r=k("string.escape","\\\\"+e);n.push.unshift(r)}return n},interpolation:function(){return[k(d,/\s*\w*\s*:/),"js-interpolation-start"]},tagHead:function(e){return k(v,e,[k(v,/[\w\-_]+/),k(b+"."+g,/~\[/,C.interpolation()),C.goUp()])},tag:function(){return{token:"tag",onMatch:function(e){return void 0!==S[e]?h:void 0!==x[e]?p:void 0!==E[e]?"support.function":void 0!==T[e.toLowerCase()]?l:c},regex:/([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/,push:[C.tagHead(/\./),C.tagHead(/\#/),C.expression(),C.attribute(),k(b,/[;>{]/,"pop")]}},syntax:function(e,t,n){return{token:p,regex:e,push:{attr:[t+"-start",k(m,/;/,"start")],multiline:[C.tagHead(/\./),C.tagHead(/\#/),C.attribute(),C.expression(),k(b,/[>\{]/),k(m,/;/,"start"),k(b,/'''|"""/,[t+"-start"])],block:[C.tagHead(/\./),C.tagHead(/\#/),C.attribute(),C.expression(),k(b,/\{/,[t+"-start"])]}[n]}},attribute:function(){return k(function(e){return/^x\-/.test(e)?v+"."+y:v},/[\w_-]+/,[k(m,/\s*=\s*/,[C.string('"'),C.string("'"),C.word(),C.goUp()]),C.goUp()])},expression:function(){return k(b,/\(/,["js-statement-start"])},word:function(){return k("string",/[\w-_]+/)},goUp:function(){return k("text","","pop")},goStart:function(){return k("text","","start")}}}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/mask",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mask_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mask_highlight_rules").MaskHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/mask"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-matlab.js b/js/ace/mode-matlab.js
new file mode 100644
index 0000000..5e27ac5
--- /dev/null
+++ b/js/ace/mode-matlab.js
@@ -0,0 +1 @@
+ace.define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while",t="true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout",n="abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztestadapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog",r="cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse",i=this.createKeywordMapper({"storage.type":r,"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"string",regex:"'",stateName:"qstring",next:[{token:"constant.language.escape",regex:"''"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]},{token:"text",regex:"\\s+"},{regex:"",next:"noQstring"}],noQstring:[{regex:"^\\s*%{\\s*$",token:"comment.start",push:"blockComment"},{token:"comment",regex:"%[^\r\n]*"},{token:"string",regex:'"',stateName:"qqstring",next:[{token:"constant.language.escape",regex:/\\./},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=",next:"start"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\.",next:"start"},{token:"paren.lparen",regex:"[({\\[]",next:"start"},{token:"paren.rparen",regex:"[\\]})]"},{token:"text",regex:"\\s+"},{token:"text",regex:"$",next:"start"}],blockComment:[{regex:"^\\s*%{\\s*$",token:"comment.start",push:"blockComment"},{regex:"^\\s*%}\\s*$",token:"comment.end",next:"pop"},{defaultToken:"comment"}]},this.normalizeRules()};r.inherits(s,i),t.MatlabHighlightRules=s}),ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./matlab_highlight_rules").MatlabHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment={start:"%{",end:"%}"},this.$id="ace/mode/matlab"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-mel.js b/js/ace/mode-mel.js
new file mode 100644
index 0000000..f725538
--- /dev/null
+++ b/js/ace/mode-mel.js
@@ -0,0 +1 @@
+ace.define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{caseInsensitive:!0,token:"storage.type.mel",regex:"\\b(matrix|string|vector|float|int|void)\\b"},{caseInsensitive:!0,token:"support.function.mel",regex:"\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b"},{caseInsensitive:!0,token:"support.constant.mel",regex:"\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b"},{caseInsensitive:!0,token:"keyword.control.mel",regex:"\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b"},{token:"keyword.other.mel",regex:"\\b(global)\\b"},{caseInsensitive:!0,token:"constant.language.mel",regex:"\\b(null|undefined)\\b"},{token:"constant.numeric.mel",regex:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b"},{token:"punctuation.definition.string.begin.mel",regex:'"',push:[{token:"constant.character.escape.mel",regex:"\\\\."},{token:"punctuation.definition.string.end.mel",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.mel"}]},{token:["variable.other.mel","punctuation.definition.variable.mel"],regex:"(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)"},{token:"punctuation.definition.string.begin.mel",regex:"'",push:[{token:"constant.character.escape.mel",regex:"\\\\."},{token:"punctuation.definition.string.end.mel",regex:"'",next:"pop"},{defaultToken:"string.quoted.single.mel"}]},{token:"constant.language.mel",regex:"\\b(false|true|yes|no|on|off)\\b"},{token:"punctuation.definition.comment.mel",regex:"/\\*",push:[{token:"punctuation.definition.comment.mel",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.mel"}]},{token:["comment.line.double-slash.mel","punctuation.definition.comment.mel"],regex:"(//)(.*$\\n?)"},{caseInsensitive:!0,token:"keyword.operator.mel",regex:"\\b(instanceof)\\b"},{token:"keyword.operator.symbolic.mel",regex:"[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]"},{token:["meta.preprocessor.mel","punctuation.definition.preprocessor.mel"],regex:"(^[ \\t]*)((?:#)[a-zA-Z]+)"},{token:["meta.function.mel","keyword.other.mel","storage.type.mel","entity.name.function.mel","punctuation.section.function.mel"],regex:"((?:global\\s*)?proc)\\s*(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*(\\())",push:[{include:"$self"},{token:"punctuation.section.function.mel",regex:"\\)",next:"pop"},{defaultToken:"meta.function.mel"}]}]},this.normalizeRules()};r.inherits(s,i),t.MELHighlightRules=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mel_highlight_rules").MELHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,u=e("./folding/cstyle").FoldMode,a=function(){this.HighlightRules=s,this.$behaviour=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mel"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-mushcode.js b/js/ace/mode-mushcode.js
new file mode 100644
index 0000000..1830f09
--- /dev/null
+++ b/js/ace/mode-mushcode.js
@@ -0,0 +1 @@
+ace.define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="@if|@ifelse|@switch|@halt|@dolist|@create|@scent|@sound|@touch|@ataste|@osound|@ahear|@aahear|@amhear|@otouch|@otaste|@drop|@odrop|@adrop|@dropfail|@odropfail|@smell|@oemit|@emit|@pemit|@parent|@clone|@taste|whisper|page|say|pose|semipose|teach|touch|taste|smell|listen|look|move|go|home|follow|unfollow|desert|dismiss|@tel",t="=#0",n="default|edefault|eval|get_eval|get|grep|grepi|hasattr|hasattrp|hasattrval|hasattrpval|lattr|nattr|poss|udefault|ufun|u|v|uldefault|xget|zfun|band|bnand|bnot|bor|bxor|shl|shr|and|cand|cor|eq|gt|gte|lt|lte|nand|neq|nor|not|or|t|xor|con|entrances|exit|followers|home|lcon|lexits|loc|locate|lparent|lsearch|next|num|owner|parent|pmatch|rloc|rnum|room|where|zone|worn|held|carried|acos|asin|atan|ceil|cos|e|exp|fdiv|fmod|floor|log|ln|pi|power|round|sin|sqrt|tan|aposs|andflags|conn|commandssent|controls|doing|elock|findable|flags|fullname|hasflag|haspower|hastype|hidden|idle|isbaker|lock|lstats|money|who|name|nearby|obj|objflags|photo|poll|powers|pendingtext|receivedtext|restarts|restarttime|subj|shortestpath|tmoney|type|visible|cat|element|elements|extract|filter|filterbool|first|foreach|fold|grab|graball|index|insert|itemize|items|iter|last|ldelete|map|match|matchall|member|mix|munge|pick|remove|replace|rest|revwords|setdiff|setinter|setunion|shuffle|sort|sortby|splice|step|wordpos|words|add|lmath|max|mean|median|min|mul|percent|sign|stddev|sub|val|bound|abs|inc|dec|dist2d|dist3d|div|floordiv|mod|modulo|remainder|vadd|vdim|vdot|vmag|vmax|vmin|vmul|vsub|vunit|regedit|regeditall|regeditalli|regediti|regmatch|regmatchi|regrab|regraball|regraballi|regrabi|regrep|regrepi|after|alphamin|alphamax|art|before|brackets|capstr|case|caseall|center|containsfansi|comp|decompose|decrypt|delete|edit|encrypt|escape|if|ifelse|lcstr|left|lit|ljust|merge|mid|ostrlen|pos|repeat|reverse|right|rjust|scramble|secure|space|spellnum|squish|strcat|strmatch|strinsert|stripansi|stripfansi|strlen|switch|switchall|table|tr|trim|ucstr|unsafe|wrap|ctitle|cwho|channels|clock|cflags|ilev|itext|inum|convsecs|convutcsecs|convtime|ctime|etimefmt|isdaylight|mtime|secs|msecs|starttime|time|timefmt|timestring|utctime|atrlock|clone|create|cook|dig|emit|lemit|link|oemit|open|pemit|remit|set|tel|wipe|zemit|fbcreate|fbdestroy|fbwrite|fbclear|fbcopy|fbcopyto|fbclip|fbdump|fbflush|fbhset|fblist|fbstats|qentries|qentry|play|ansi|break|c|asc|die|isdbref|isint|isnum|isletters|linecoords|localize|lnum|nameshort|null|objeval|r|rand|s|setq|setr|soundex|soundslike|valid|vchart|vchart2|vlabel|@@|bakerdays|bodybuild|box|capall|catalog|children|ctrailer|darttime|debt|detailbar|exploredroom|fansitoansi|fansitoxansi|fullbar|halfbar|isdarted|isnewbie|isword|lambda|lobjects|lplayers|lthings|lvexits|lvobjects|lvplayers|lvthings|newswrap|numsuffix|playerson|playersthisweek|randomad|randword|realrandword|replacechr|second|splitamount|strlenall|text|third|tofansi|totalac|unique|getaddressroom|listpropertycomm|listpropertyres|lotowner|lotrating|lotratingcount|lotvalue|boughtproduct|companyabb|companyicon|companylist|companyname|companyowners|companyvalue|employees|invested|productlist|productname|productowners|productrating|productratingcount|productsoldat|producttype|ratedproduct|soldproduct|topproducts|totalspentonproduct|totalstock|transfermoney|uniquebuyercount|uniqueproductsbought|validcompany|deletepicture|fbsave|getpicturesecurity|haspicture|listpictures|picturesize|replacecolor|rgbtocolor|savepicture|setpicturesecurity|showpicture|piechart|piechartlabel|createmaze|drawmaze|drawwireframe",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")";this.$rules={start:[{token:"variable",regex:"%[0-9]{1}"},{token:"variable",regex:"%q[0-9A-Za-z]{1}"},{token:"variable",regex:"%[a-zA-Z]{1}"},{token:"variable.language",regex:"%[a-z0-9-_]+"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.MushCodeRules=s}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),ace.define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./mushcode_highlight_rules").MushCodeRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:")};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/mushcode"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-mysql.js b/js/ace/mode-mysql.js
new file mode 100644
index 0000000..733d692
--- /dev/null
+++ b/js/ace/mode-mysql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function i(e){var t=e.start,n=e.escape;return{token:"string.start",regex:t,next:[{token:"constant.language.escape",regex:n},{token:"string.end",next:"start",regex:t},{defaultToken:"string"}]}}var e="alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",t="by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric",n="charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",r=this.createKeywordMapper({"support.function":t,keyword:e,constant:"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat","variable.language":n},"identifier",!0);this.$rules={start:[{token:"comment",regex:"(?:-- |#).*$"},i({start:'"',escape:/\\[0'"bnrtZ\\%_]?/}),i({start:"'",escape:/\\[0'"bnrtZ\\%_]?/}),s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.buildin",regex:"`[^`]*`"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.MysqlHighlightRules=u}),ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./mysql_highlight_rules").MysqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart=["--","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mysql"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-nix.js b/js/ace/mode-nix.js
new file mode 100644
index 0000000..4429a99
--- /dev/null
+++ b/js/ace/mode-nix.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{defaultToken:"string"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{defaultToken:"string"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="true|false",t="with|import|if|else|then|inherit",n="let|in|rec",r=this.createKeywordMapper({"constant.language.nix":e,"keyword.control.nix":t,"keyword.declaration.nix":n},"identifier");this.$rules={start:[{token:"comment",regex:/#.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant",regex:"<[^>]+>"},{regex:"(==|!=|<=?|>=?)",token:["keyword.operator.comparison.nix"]},{regex:"((?:[+*/%-]|\\~)=)",token:["keyword.operator.assignment.arithmetic.nix"]},{regex:"=",token:"keyword.operator.assignment.nix"},{token:"string",regex:"''",next:"qqdoc"},{token:"string",regex:"'",next:"qstring"},{token:"string",regex:'"',push:"qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{regex:"}",token:function(e,t,n){return n[1]&&n[1].charAt(0)=="q"?"constant.language.escape":"text"},next:"pop"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqdoc:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:"''",next:"pop"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\$\{/,push:"start"},{token:"string",regex:"'",next:"pop"},{defaultToken:"string"}]},this.normalizeRules()};r.inherits(s,i),t.NixHighlightRules=s}),ace.define("ace/mode/nix",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/nix_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./nix_highlight_rules").NixHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/nix"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-objectivec.js b/js/ace/mode-objectivec.js
new file mode 100644
index 0000000..aec5735
--- /dev/null
+++ b/js/ace/mode-objectivec.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{defaultToken:"string"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{defaultToken:"string"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/objectivec_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/c_cpp_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./c_cpp_highlight_rules"),o=s.c_cppHighlightRules,u=function(){var e="\\\\(?:[abefnrtv'\"?\\\\]|[0-3]\\d{1,2}|[4-7]\\d?|222|x[a-zA-Z0-9]+)",t=[{regex:"\\b_cmd\\b",token:"variable.other.selector.objc"},{regex:"\\b(?:self|super)\\b",token:"variable.language.objc"}],n=new o,r=n.getRules();this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:["storage.type.objc","punctuation.definition.storage.type.objc","entity.name.type.objc","text","entity.other.inherited-class.objc"],regex:"(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)"},{token:["storage.type.objc"],regex:"(@end)"},{token:["storage.type.objc","entity.name.type.objc","entity.other.inherited-class.objc"],regex:"(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?"},{token:"string.begin.objc",regex:'@"',next:"constant_NSString"},{token:"storage.type.objc",regex:"\\bid\\s*<",next:"protocol_list"},{token:"keyword.control.macro.objc",regex:"\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b"},{token:["punctuation.definition.keyword.objc","keyword.control.exception.objc"],regex:"(@)(try|catch|finally|throw)\\b"},{token:["punctuation.definition.keyword.objc","keyword.other.objc"],regex:"(@)(defs|encode)\\b"},{token:["storage.type.id.objc","text"],regex:"(\\bid\\b)(\\s|\\n)?"},{token:"storage.type.objc",regex:"\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b"},{token:["punctuation.definition.storage.type.objc","storage.type.objc"],regex:"(@)(class|protocol)\\b"},{token:["punctuation.definition.storage.type.objc","punctuation"],regex:"(@selector)(\\s*\\()",next:"selectors"},{token:["punctuation.definition.storage.modifier.objc","storage.modifier.objc"],regex:"(@)(synchronized|public|private|protected|package)\\b"},{token:"constant.language.objc",regex:"\\bYES|NO|Nil|nil\\b"},{token:"support.variable.foundation",regex:"\\bNSApp\\b"},{token:["support.function.cocoa.leopard"],regex:"(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)"},{token:["support.function.cocoa"],regex:"(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)"},{token:["support.class.cocoa.leopard"],regex:"(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)"},{token:["support.class.cocoa"],regex:"(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)"},{token:["support.type.cocoa.leopard"],regex:"(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)"},{token:["support.class.quartz"],regex:"(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)"},{token:["support.type.quartz"],regex:"(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)"},{token:["support.type.cocoa"],regex:"(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)"},{token:["support.constant.cocoa"],regex:"(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)"},{token:["support.constant.notification.cocoa.leopard"],regex:"(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)"},{token:["support.constant.notification.cocoa"],regex:"(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)"},{token:["support.constant.cocoa.leopard"],regex:"(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)"},{token:["support.constant.cocoa"],regex:"(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)"},{token:"support.function.C99.c",regex:s.cFunctions},{token:n.getKeywords(),regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.section.scope.begin.objc",regex:"\\[",next:"bracketed_content"},{token:"meta.function.objc",regex:"^(?:-|\\+)\\s*"}],constant_NSString:[{token:"constant.character.escape.objc",regex:e},{token:"invalid.illegal.unknown-escape.objc",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+'},{token:"punctuation.definition.string.end",regex:'"',next:"start"}],protocol_list:[{token:"punctuation.section.scope.end.objc",regex:">",next:"start"},{token:"support.other.protocol.objc",regex:"\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b"}],selectors:[{token:"support.function.any-method.name-of-parameter.objc",regex:"\\b(?:[a-zA-Z_:][\\w]*)+"},{token:"punctuation",regex:"\\)",next:"start"}],bracketed_content:[{token:"punctuation.section.scope.end.objc",regex:"]",next:"start"},{token:["support.function.any-method.objc"],regex:"(?:predicateWithFormat:| NSPredicate predicateWithFormat:)",next:"start"},{token:"support.function.any-method.objc",regex:"\\w+(?::|(?=]))",next:"start"}],bracketed_strings:[{token:"punctuation.section.scope.end.objc",regex:"]",next:"start"},{token:"keyword.operator.logical.predicate.cocoa",regex:"\\b(?:AND|OR|NOT|IN)\\b"},{token:["invalid.illegal.unknown-method.objc","punctuation.separator.arguments.objc"],regex:"\\b(w+)(:)"},{regex:"\\b(?:ALL|ANY|SOME|NONE)\\b",token:"constant.language.predicate.cocoa"},{regex:"\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",token:"constant.language.predicate.cocoa"},{regex:"\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",token:"keyword.operator.comparison.predicate.cocoa"},{regex:"\\bC(?:ASEINSENSITIVE|I)\\b",token:"keyword.other.modifier.predicate.cocoa"},{regex:"\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",token:"keyword.other.predicate.cocoa"},{regex:e,token:"constant.character.escape.objc"},{regex:"\\\\.",token:"invalid.illegal.unknown-escape.objc"},{token:"string",regex:'[^"\\\\]'},{token:"punctuation.definition.string.end.objc",regex:'"',next:"predicates"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],methods:[{token:"meta.function.objc",regex:"(?=\\{|#)|;",next:"start"}]};for(var u in r)this.$rules[u]?this.$rules[u].push&&this.$rules[u].push.apply(this.$rules[u],r[u]):this.$rules[u]=r[u];this.$rules.bracketed_content=this.$rules.bracketed_content.concat(this.$rules.start,t),this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,o),t.ObjectiveCHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/objectivec",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/objectivec_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./objectivec_highlight_rules").ObjectiveCHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/objectivec"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-ocaml.js b/js/ace/mode-ocaml.js
new file mode 100644
index 0000000..9c5a92d
--- /dev/null
+++ b/js/ace/mode-ocaml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ocaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|or|private|rec|sig|struct|then|to|try|type|val|virtual|when|while|with",t="true|false",n="abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|add_available_units|add_big_int|add_buffer|add_channel|add_char|add_initializer|add_int_big_int|add_interfaces|add_num|add_string|add_substitute|add_substring|alarm|allocated_bytes|allow_only|allow_unsafe_modules|always|append|appname_get|appname_set|approx_num_exp|approx_num_fix|arg|argv|arith_status|array|array1_of_genarray|array2_of_genarray|array3_of_genarray|asin|asr|assoc|assq|at_exit|atan|atan2|auto_synchronize|background|basename|beginning_of_input|big_int_of_int|big_int_of_num|big_int_of_string|bind|bind_class|bind_tag|bits|bits_of_float|black|blit|blit_image|blue|bool|bool_of_string|bounded_full_split|bounded_split|bounded_split_delim|bprintf|break|broadcast|bscanf|button_down|c_layout|capitalize|cardinal|cardinal|catch|catch_break|ceil|ceiling_num|channel|char|char_of_int|chdir|check|check_suffix|chmod|choose|chop_extension|chop_suffix|chown|chown|chr|chroot|classify_float|clear|clear_available_units|clear_close_on_exec|clear_graph|clear_nonblock|clear_parser|close|close|closeTk|close_box|close_graph|close_in|close_in_noerr|close_out|close_out_noerr|close_process|close_process|close_process_full|close_process_in|close_process_out|close_subwindow|close_tag|close_tbox|closedir|closedir|closure_tag|code|combine|combine|combine|command|compact|compare|compare_big_int|compare_num|complex32|complex64|concat|conj|connect|contains|contains_from|contents|copy|cos|cosh|count|count|counters|create|create_alarm|create_image|create_matrix|create_matrix|create_matrix|create_object|create_object_and_run_initializers|create_object_opt|create_process|create_process|create_process_env|create_process_env|create_table|current|current_dir_name|current_point|current_x|current_y|curveto|custom_tag|cyan|data_size|decr|decr_num|default_available_units|delay|delete_alarm|descr_of_in_channel|descr_of_out_channel|destroy|diff|dim|dim1|dim2|dim3|dims|dirname|display_mode|div|div_big_int|div_num|double_array_tag|double_tag|draw_arc|draw_char|draw_circle|draw_ellipse|draw_image|draw_poly|draw_poly_line|draw_rect|draw_segments|draw_string|dummy_pos|dummy_table|dump_image|dup|dup2|elements|empty|end_of_input|environment|eprintf|epsilon_float|eq_big_int|eq_num|equal|err_formatter|error_message|escaped|establish_server|executable_name|execv|execve|execvp|execvpe|exists|exists2|exit|exp|failwith|fast_sort|fchmod|fchown|field|file|file_exists|fill|fill_arc|fill_circle|fill_ellipse|fill_poly|fill_rect|filter|final_tag|finalise|find|find_all|first_chars|firstkey|flatten|float|float32|float64|float_of_big_int|float_of_bits|float_of_int|float_of_num|float_of_string|floor|floor_num|flush|flush_all|flush_input|flush_str_formatter|fold|fold_left|fold_left2|fold_right|fold_right2|for_all|for_all2|force|force_newline|force_val|foreground|fork|format_of_string|formatter_of_buffer|formatter_of_out_channel|fortran_layout|forward_tag|fprintf|frexp|from|from_channel|from_file|from_file_bin|from_function|from_string|fscanf|fst|fstat|ftruncate|full_init|full_major|full_split|gcd_big_int|ge_big_int|ge_num|genarray_of_array1|genarray_of_array2|genarray_of_array3|get|get_all_formatter_output_functions|get_approx_printing|get_copy|get_ellipsis_text|get_error_when_null_denominator|get_floating_precision|get_formatter_output_functions|get_formatter_tag_functions|get_image|get_margin|get_mark_tags|get_max_boxes|get_max_indent|get_method|get_method_label|get_normalize_ratio|get_normalize_ratio_when_printing|get_print_tags|get_state|get_variable|getcwd|getegid|getegid|getenv|getenv|getenv|geteuid|geteuid|getgid|getgid|getgrgid|getgrgid|getgrnam|getgrnam|getgroups|gethostbyaddr|gethostbyname|gethostname|getitimer|getlogin|getpeername|getpid|getppid|getprotobyname|getprotobynumber|getpwnam|getpwuid|getservbyname|getservbyport|getsockname|getsockopt|getsockopt_float|getsockopt_int|getsockopt_optint|gettimeofday|getuid|global_replace|global_substitute|gmtime|green|grid|group_beginning|group_end|gt_big_int|gt_num|guard|handle_unix_error|hash|hash_param|hd|header_size|i|id|ignore|in_channel_length|in_channel_of_descr|incr|incr_num|index|index_from|inet_addr_any|inet_addr_of_string|infinity|infix_tag|init|init_class|input|input_binary_int|input_byte|input_char|input_line|input_value|int|int16_signed|int16_unsigned|int32|int64|int8_signed|int8_unsigned|int_of_big_int|int_of_char|int_of_float|int_of_num|int_of_string|integer_num|inter|interactive|inv|invalid_arg|is_block|is_empty|is_implicit|is_int|is_int_big_int|is_integer_num|is_relative|iter|iter2|iteri|join|junk|key_pressed|kill|kind|kprintf|kscanf|land|last_chars|layout|lazy_from_fun|lazy_from_val|lazy_is_val|lazy_tag|ldexp|le_big_int|le_num|length|lexeme|lexeme_char|lexeme_end|lexeme_end_p|lexeme_start|lexeme_start_p|lineto|link|list|listen|lnot|loadfile|loadfile_private|localtime|lock|lockf|log|log10|logand|lognot|logor|logxor|lor|lower_window|lowercase|lseek|lsl|lsr|lstat|lt_big_int|lt_num|lxor|magenta|magic|mainLoop|major|major_slice|make|make_formatter|make_image|make_lexer|make_matrix|make_self_init|map|map2|map_file|mapi|marshal|match_beginning|match_end|matched_group|matched_string|max|max_array_length|max_big_int|max_elt|max_float|max_int|max_num|max_string_length|mem|mem_assoc|mem_assq|memq|merge|min|min_big_int|min_elt|min_float|min_int|min_num|minor|minus_big_int|minus_num|minus_one|mkdir|mkfifo|mktime|mod|mod_big_int|mod_float|mod_num|modf|mouse_pos|moveto|mul|mult_big_int|mult_int_big_int|mult_num|nan|narrow|nat_of_num|nativeint|neg|neg_infinity|new_block|new_channel|new_method|new_variable|next|nextkey|nice|nice|no_scan_tag|norm|norm2|not|npeek|nth|nth_dim|num_digits_big_int|num_dims|num_of_big_int|num_of_int|num_of_nat|num_of_ratio|num_of_string|O|obj|object_tag|ocaml_version|of_array|of_channel|of_float|of_int|of_int32|of_list|of_nativeint|of_string|one|openTk|open_box|open_connection|open_graph|open_hbox|open_hovbox|open_hvbox|open_in|open_in_bin|open_in_gen|open_out|open_out_bin|open_out_gen|open_process|open_process_full|open_process_in|open_process_out|open_subwindow|open_tag|open_tbox|open_temp_file|open_vbox|opendbm|opendir|openfile|or|os_type|out_channel_length|out_channel_of_descr|output|output_binary_int|output_buffer|output_byte|output_char|output_string|output_value|over_max_boxes|pack|params|parent_dir_name|parse|parse_argv|partition|pause|peek|pipe|pixels|place|plot|plots|point_color|polar|poll|pop|pos_in|pos_out|pow|power_big_int_positive_big_int|power_big_int_positive_int|power_int_positive_big_int|power_int_positive_int|power_num|pp_close_box|pp_close_tag|pp_close_tbox|pp_force_newline|pp_get_all_formatter_output_functions|pp_get_ellipsis_text|pp_get_formatter_output_functions|pp_get_formatter_tag_functions|pp_get_margin|pp_get_mark_tags|pp_get_max_boxes|pp_get_max_indent|pp_get_print_tags|pp_open_box|pp_open_hbox|pp_open_hovbox|pp_open_hvbox|pp_open_tag|pp_open_tbox|pp_open_vbox|pp_over_max_boxes|pp_print_as|pp_print_bool|pp_print_break|pp_print_char|pp_print_cut|pp_print_float|pp_print_flush|pp_print_if_newline|pp_print_int|pp_print_newline|pp_print_space|pp_print_string|pp_print_tab|pp_print_tbreak|pp_set_all_formatter_output_functions|pp_set_ellipsis_text|pp_set_formatter_out_channel|pp_set_formatter_output_functions|pp_set_formatter_tag_functions|pp_set_margin|pp_set_mark_tags|pp_set_max_boxes|pp_set_max_indent|pp_set_print_tags|pp_set_tab|pp_set_tags|pred|pred_big_int|pred_num|prerr_char|prerr_endline|prerr_float|prerr_int|prerr_newline|prerr_string|print|print_as|print_bool|print_break|print_char|print_cut|print_endline|print_float|print_flush|print_if_newline|print_int|print_newline|print_space|print_stat|print_string|print_tab|print_tbreak|printf|prohibit|public_method_label|push|putenv|quo_num|quomod_big_int|quote|raise|raise_window|ratio_of_num|rcontains_from|read|read_float|read_int|read_key|read_line|readdir|readdir|readlink|really_input|receive|recv|recvfrom|red|ref|regexp|regexp_case_fold|regexp_string|regexp_string_case_fold|register|register_exception|rem|remember_mode|remove|remove_assoc|remove_assq|rename|replace|replace_first|replace_matched|repr|reset|reshape|reshape_1|reshape_2|reshape_3|rev|rev_append|rev_map|rev_map2|rewinddir|rgb|rhs_end|rhs_end_pos|rhs_start|rhs_start_pos|rindex|rindex_from|rlineto|rmdir|rmoveto|round_num|run_initializers|run_initializers_opt|scanf|search_backward|search_forward|seek_in|seek_out|select|self|self_init|send|sendto|set|set_all_formatter_output_functions|set_approx_printing|set_binary_mode_in|set_binary_mode_out|set_close_on_exec|set_close_on_exec|set_color|set_ellipsis_text|set_error_when_null_denominator|set_field|set_floating_precision|set_font|set_formatter_out_channel|set_formatter_output_functions|set_formatter_tag_functions|set_line_width|set_margin|set_mark_tags|set_max_boxes|set_max_indent|set_method|set_nonblock|set_nonblock|set_normalize_ratio|set_normalize_ratio_when_printing|set_print_tags|set_signal|set_state|set_tab|set_tag|set_tags|set_text_size|set_window_title|setgid|setgid|setitimer|setitimer|setsid|setsid|setsockopt|setsockopt|setsockopt_float|setsockopt_float|setsockopt_int|setsockopt_int|setsockopt_optint|setsockopt_optint|setuid|setuid|shift_left|shift_left|shift_left|shift_right|shift_right|shift_right|shift_right_logical|shift_right_logical|shift_right_logical|show_buckets|shutdown|shutdown|shutdown_connection|shutdown_connection|sigabrt|sigalrm|sigchld|sigcont|sigfpe|sighup|sigill|sigint|sigkill|sign_big_int|sign_num|signal|signal|sigpending|sigpending|sigpipe|sigprocmask|sigprocmask|sigprof|sigquit|sigsegv|sigstop|sigsuspend|sigsuspend|sigterm|sigtstp|sigttin|sigttou|sigusr1|sigusr2|sigvtalrm|sin|singleton|sinh|size|size|size_x|size_y|sleep|sleep|sleep|slice_left|slice_left|slice_left_1|slice_left_2|slice_right|slice_right|slice_right_1|slice_right_2|snd|socket|socket|socket|socketpair|socketpair|sort|sound|split|split_delim|sprintf|sprintf|sqrt|sqrt|sqrt_big_int|square_big_int|square_num|sscanf|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stable_sort|stat|stat|stat|stat|stat|stats|stats|std_formatter|stdbuf|stderr|stderr|stderr|stdib|stdin|stdin|stdin|stdout|stdout|stdout|str_formatter|string|string_after|string_before|string_match|string_of_big_int|string_of_bool|string_of_float|string_of_format|string_of_inet_addr|string_of_inet_addr|string_of_int|string_of_num|string_partial_match|string_tag|sub|sub|sub_big_int|sub_left|sub_num|sub_right|subset|subset|substitute_first|substring|succ|succ|succ|succ|succ_big_int|succ_num|symbol_end|symbol_end_pos|symbol_start|symbol_start_pos|symlink|symlink|sync|synchronize|system|system|system|tag|take|tan|tanh|tcdrain|tcdrain|tcflow|tcflow|tcflush|tcflush|tcgetattr|tcgetattr|tcsendbreak|tcsendbreak|tcsetattr|tcsetattr|temp_file|text_size|time|time|time|timed_read|timed_write|times|times|tl|tl|tl|to_buffer|to_channel|to_float|to_hex|to_int|to_int32|to_list|to_list|to_list|to_nativeint|to_string|to_string|to_string|to_string|to_string|top|top|total_size|transfer|transp|truncate|truncate|truncate|truncate|truncate|truncate|try_lock|umask|umask|uncapitalize|uncapitalize|uncapitalize|union|union|unit_big_int|unlink|unlink|unlock|unmarshal|unsafe_blit|unsafe_fill|unsafe_get|unsafe_get|unsafe_set|unsafe_set|update|uppercase|uppercase|uppercase|uppercase|usage|utimes|utimes|wait|wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|wait_timed_read|wait_timed_write|wait_write|waitpid|white|widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"constant.language":t,"support.function":n},"identifier"),i="(?:(?:[1-9]\\d*)|(?:0))",s="(?:0[oO]?[0-7]+)",o="(?:0[xX][\\dA-Fa-f]+)",u="(?:0[bB][01]+)",a="(?:"+i+"|"+s+"|"+o+"|"+u+")",f="(?:[eE][+-]?\\d+)",l="(?:\\.\\d+)",c="(?:\\d+)",h="(?:(?:"+c+"?"+l+")|(?:"+c+"\\.))",p="(?:(?:"+h+"|"+c+")"+f+")",d="(?:"+p+"|"+h+")";this.$rules={start:[{token:"comment",regex:"\\(\\*.*?\\*\\)\\s*?$"},{token:"comment",regex:"\\(\\*.*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"'.'"},{token:"string",regex:'"',next:"qstring"},{token:"constant.numeric",regex:"(?:"+d+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:d},{token:"constant.numeric",regex:a+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|="},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\)",next:"start"},{token:"comment",regex:".+"}],qstring:[{token:"string",regex:'"',next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.OcamlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/ocaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ocaml_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ocaml_highlight_rules").OcamlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(a,i);var f=/(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/;(function(){this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,a=/^\s*\(\*(.*)\*\)/;for(i=n;i<=r;i++)if(!a.test(t.getLine(i))){o=!1;break}var f=new u(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(a)[1]:"(*"+s+"*)")},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;return(!i.length||i[i.length-1].type!=="comment")&&e==="start"&&f.test(t)&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/ocaml"}).call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-pascal.js b/js/ace/mode-pascal.js
new file mode 100644
index 0000000..b553439
--- /dev/null
+++ b/js/ace/mode-pascal.js
@@ -0,0 +1 @@
+ace.define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{caseInsensitive:!0,token:"keyword.control.pascal",regex:"\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b"},{caseInsensitive:!0,token:["variable.pascal","text","storage.type.prototype.pascal","entity.name.function.prototype.pascal"],regex:"\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))"},{caseInsensitive:!0,token:["variable.pascal","text","storage.type.function.pascal","entity.name.function.pascal"],regex:"\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?"},{token:"constant.numeric.pascal",regex:"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"punctuation.definition.comment.pascal",regex:"--.*$",push_:[{token:"comment.line.double-dash.pascal.one",regex:"$",next:"pop"},{defaultToken:"comment.line.double-dash.pascal.one"}]},{token:"punctuation.definition.comment.pascal",regex:"//.*$",push_:[{token:"comment.line.double-slash.pascal.two",regex:"$",next:"pop"},{defaultToken:"comment.line.double-slash.pascal.two"}]},{token:"punctuation.definition.comment.pascal",regex:"\\(\\*",push:[{token:"punctuation.definition.comment.pascal",regex:"\\*\\)",next:"pop"},{defaultToken:"comment.block.pascal.one"}]},{token:"punctuation.definition.comment.pascal",regex:"\\{",push:[{token:"punctuation.definition.comment.pascal",regex:"\\}",next:"pop"},{defaultToken:"comment.block.pascal.two"}]},{token:"punctuation.definition.string.begin.pascal",regex:'"',push:[{token:"constant.character.escape.pascal",regex:"\\\\."},{token:"punctuation.definition.string.end.pascal",regex:'"',next:"pop"},{defaultToken:"string.quoted.double.pascal"}]},{token:"punctuation.definition.string.begin.pascal",regex:"'",push:[{token:"constant.character.escape.apostrophe.pascal",regex:"''"},{token:"punctuation.definition.string.end.pascal",regex:"'",next:"pop"},{defaultToken:"string.quoted.single.pascal"}]},{token:"keyword.operator",regex:"[+\\-;,/*%]|:=|="}]},this.normalizeRules()};r.inherits(s,i),t.PascalHighlightRules=s}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/pascal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pascal_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./pascal_highlight_rules").PascalHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart=["--","//"],this.blockComment=[{start:"(*",end:"*)"},{start:"{",end:"}"}],this.$id="ace/mode/pascal"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-perl.js b/js/ace/mode-perl.js
new file mode 100644
index 0000000..02a5460
--- /dev/null
+++ b/js/ace/mode-perl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./perl_highlight_rules").PerlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new a({start:"^=(begin|item)\\b",end:"^=(cut)\\b"})};r.inherits(f,i),function(){this.lineCommentStart="#",this.blockComment=[{start:"=begin",end:"=cut"},{start:"=item",end:"=cut"}],this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/perl"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-pgsql.js b/js/ace/mode-pgsql.js
new file mode 100644
index 0000000..929cfd5
--- /dev/null
+++ b/js/ace/mode-pgsql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars",t="ARGV|ENV|INC|SIG",n="getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|getpeername|setpriority|getprotoent|setprotoent|getpriority|endprotoent|getservent|setservent|endservent|sethostent|socketpair|getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|map|die|uc|lc|do",r=this.createKeywordMapper({keyword:e,"constant.language":t,"support.function":n},"identifier");this.$rules={start:[{token:"comment.doc",regex:"^=(?:begin|item)\\b",next:"block_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0x[0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)"},{token:"comment",regex:"#.*$"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}],block_comment:[{token:"comment.doc",regex:"^=cut\\b",next:"start"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),t.PerlHighlightRules=s}),ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./perl_highlight_rules").PerlHighlightRules,a=e("./python_highlight_rules").PythonHighlightRules,f=e("./json_highlight_rules").JsonHighlightRules,l=e("./javascript_highlight_rules").JavaScriptHighlightRules,c=function(){var e="abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|catalog|chain|char|character|characteristics|check|checkpoint|cid|cidr|circle|class|close|cluster|coalesce|collate|collation|column|comment|comments|commit|committed|concurrently|configuration|connection|constraint|constraints|content|continue|conversion|copy|cost|create|cross|cstring|csv|current|current_catalog|current_date|current_role|current_schema|current_time|current_timestamp|current_user|cursor|cycle|data|database|date|daterange|day|deallocate|dec|decimal|declare|default|defaults|deferrable|deferred|definer|delete|delimiter|delimiters|desc|dictionary|disable|discard|distinct|do|document|domain|double|drop|each|else|enable|encoding|encrypted|end|enum|escape|event|event_trigger|except|exclude|excluding|exclusive|execute|exists|explain|extension|external|extract|false|family|fdw_handler|fetch|first|float|float4|float8|following|for|force|foreign|forward|freeze|from|full|function|functions|global|grant|granted|greatest|group|gtsvector|handler|having|header|hold|hour|identity|if|ilike|immediate|immutable|implicit|in|including|increment|index|indexes|inet|inherit|inherits|initially|inline|inner|inout|input|insensitive|insert|instead|int|int2|int2vector|int4|int4range|int8|int8range|integer|internal|intersect|interval|into|invoker|is|isnull|isolation|join|json|key|label|language|language_handler|large|last|lateral|lc_collate|lc_ctype|leading|leakproof|least|left|level|like|limit|line|listen|load|local|localtime|localtimestamp|location|lock|lseg|macaddr|mapping|match|materialized|maxvalue|minute|minvalue|mode|money|month|move|name|names|national|natural|nchar|next|no|none|not|nothing|notify|notnull|nowait|null|nullif|nulls|numeric|numrange|object|of|off|offset|oid|oids|oidvector|on|only|opaque|operator|option|options|or|order|out|outer|over|overlaps|overlay|owned|owner|parser|partial|partition|passing|password|path|pg_attribute|pg_auth_members|pg_authid|pg_class|pg_database|pg_node_tree|pg_proc|pg_type|placing|plans|point|polygon|position|preceding|precision|prepare|prepared|preserve|primary|prior|privileges|procedural|procedure|program|quote|range|read|real|reassign|recheck|record|recursive|ref|refcursor|references|refresh|regclass|regconfig|regdictionary|regoper|regoperator|regproc|regprocedure|regtype|reindex|relative|release|reltime|rename|repeatable|replace|replica|reset|restart|restrict|returning|returns|revoke|right|role|rollback|row|rows|rule|savepoint|schema|scroll|search|second|security|select|sequence|sequences|serializable|server|session|session_user|set|setof|share|show|similar|simple|smallint|smgr|snapshot|some|stable|standalone|start|statement|statistics|stdin|stdout|storage|strict|strip|substring|symmetric|sysid|system|table|tables|tablespace|temp|template|temporary|text|then|tid|time|timestamp|timestamptz|timetz|tinterval|to|trailing|transaction|treat|trigger|trim|true|truncate|trusted|tsquery|tsrange|tstzrange|tsvector|txid_snapshot|type|types|unbounded|uncommitted|unencrypted|union|unique|unknown|unlisten|unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone",t="RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|abstimelt|abstimene|abstimeout|abstimerecv|abstimesend|aclcontains|acldefault|aclexplode|aclinsert|aclitemeq|aclitemin|aclitemout|aclremove|acos|age|any_in|any_out|anyarray_in|anyarray_out|anyarray_recv|anyarray_send|anyelement_in|anyelement_out|anyenum_in|anyenum_out|anynonarray_in|anynonarray_out|anyrange_in|anyrange_out|anytextcat|area|areajoinsel|areasel|array_agg|array_agg_finalfn|array_agg_transfn|array_append|array_cat|array_dims|array_eq|array_fill|array_ge|array_gt|array_in|array_larger|array_le|array_length|array_lower|array_lt|array_ndims|array_ne|array_out|array_prepend|array_recv|array_remove|array_replace|array_send|array_smaller|array_to_json|array_to_string|array_typanalyze|array_upper|arraycontained|arraycontains|arraycontjoinsel|arraycontsel|arrayoverlap|ascii|ascii_to_mic|ascii_to_utf8|asin|atan|atan2|avg|big5_to_euc_tw|big5_to_mic|big5_to_utf8|bit_and|bit_in|bit_length|bit_or|bit_out|bit_recv|bit_send|bitand|bitcat|bitcmp|biteq|bitge|bitgt|bitle|bitlt|bitne|bitnot|bitor|bitshiftleft|bitshiftright|bittypmodin|bittypmodout|bitxor|bool|bool_and|bool_or|booland_statefunc|booleq|boolge|boolgt|boolin|boolle|boollt|boolne|boolor_statefunc|boolout|boolrecv|boolsend|box|box_above|box_above_eq|box_add|box_below|box_below_eq|box_center|box_contain|box_contain_pt|box_contained|box_distance|box_div|box_eq|box_ge|box_gt|box_in|box_intersect|box_le|box_left|box_lt|box_mul|box_out|box_overabove|box_overbelow|box_overlap|box_overleft|box_overright|box_recv|box_right|box_same|box_send|box_sub|bpchar_larger|bpchar_pattern_ge|bpchar_pattern_gt|bpchar_pattern_le|bpchar_pattern_lt|bpchar_smaller|bpcharcmp|bpchareq|bpcharge|bpchargt|bpchariclike|bpcharicnlike|bpcharicregexeq|bpcharicregexne|bpcharin|bpcharle|bpcharlike|bpcharlt|bpcharne|bpcharnlike|bpcharout|bpcharrecv|bpcharregexeq|bpcharregexne|bpcharsend|bpchartypmodin|bpchartypmodout|broadcast|btabstimecmp|btarraycmp|btbeginscan|btboolcmp|btbpchar_pattern_cmp|btbuild|btbuildempty|btbulkdelete|btcanreturn|btcharcmp|btcostestimate|btendscan|btfloat48cmp|btfloat4cmp|btfloat4sortsupport|btfloat84cmp|btfloat8cmp|btfloat8sortsupport|btgetbitmap|btgettuple|btinsert|btint24cmp|btint28cmp|btint2cmp|btint2sortsupport|btint42cmp|btint48cmp|btint4cmp|btint4sortsupport|btint82cmp|btint84cmp|btint8cmp|btint8sortsupport|btmarkpos|btnamecmp|btnamesortsupport|btoidcmp|btoidsortsupport|btoidvectorcmp|btoptions|btrecordcmp|btreltimecmp|btrescan|btrestrpos|btrim|bttext_pattern_cmp|bttextcmp|bttidcmp|bttintervalcmp|btvacuumcleanup|bytea_string_agg_finalfn|bytea_string_agg_transfn|byteacat|byteacmp|byteaeq|byteage|byteagt|byteain|byteale|bytealike|bytealt|byteane|byteanlike|byteaout|bytearecv|byteasend|cash_cmp|cash_div_cash|cash_div_flt4|cash_div_flt8|cash_div_int2|cash_div_int4|cash_eq|cash_ge|cash_gt|cash_in|cash_le|cash_lt|cash_mi|cash_mul_flt4|cash_mul_flt8|cash_mul_int2|cash_mul_int4|cash_ne|cash_out|cash_pl|cash_recv|cash_send|cash_words|cashlarger|cashsmaller|cbrt|ceil|ceiling|center|char|char_length|character_length|chareq|charge|chargt|charin|charle|charlt|charne|charout|charrecv|charsend|chr|cideq|cidin|cidout|cidr|cidr_in|cidr_out|cidr_recv|cidr_send|cidrecv|cidsend|circle|circle_above|circle_add_pt|circle_below|circle_center|circle_contain|circle_contain_pt|circle_contained|circle_distance|circle_div_pt|circle_eq|circle_ge|circle_gt|circle_in|circle_le|circle_left|circle_lt|circle_mul_pt|circle_ne|circle_out|circle_overabove|circle_overbelow|circle_overlap|circle_overleft|circle_overright|circle_recv|circle_right|circle_same|circle_send|circle_sub_pt|clock_timestamp|close_lb|close_ls|close_lseg|close_pb|close_pl|close_ps|close_sb|close_sl|col_description|concat|concat_ws|contjoinsel|contsel|convert|convert_from|convert_to|corr|cos|cot|count|covar_pop|covar_samp|cstring_in|cstring_out|cstring_recv|cstring_send|cume_dist|current_database|current_query|current_schema|current_schemas|current_setting|current_user|currtid|currtid2|currval|cursor_to_xml|cursor_to_xmlschema|database_to_xml|database_to_xml_and_xmlschema|database_to_xmlschema|date|date_cmp|date_cmp_timestamp|date_cmp_timestamptz|date_eq|date_eq_timestamp|date_eq_timestamptz|date_ge|date_ge_timestamp|date_ge_timestamptz|date_gt|date_gt_timestamp|date_gt_timestamptz|date_in|date_larger|date_le|date_le_timestamp|date_le_timestamptz|date_lt|date_lt_timestamp|date_lt_timestamptz|date_mi|date_mi_interval|date_mii|date_ne|date_ne_timestamp|date_ne_timestamptz|date_out|date_part|date_pl_interval|date_pli|date_recv|date_send|date_smaller|date_sortsupport|date_trunc|daterange|daterange_canonical|daterange_subdiff|datetime_pl|datetimetz_pl|dcbrt|decode|degrees|dense_rank|dexp|diagonal|diameter|dispell_init|dispell_lexize|dist_cpoly|dist_lb|dist_pb|dist_pc|dist_pl|dist_ppath|dist_ps|dist_sb|dist_sl|div|dlog1|dlog10|domain_in|domain_recv|dpow|dround|dsimple_init|dsimple_lexize|dsnowball_init|dsnowball_lexize|dsqrt|dsynonym_init|dsynonym_lexize|dtrunc|elem_contained_by_range|encode|enum_cmp|enum_eq|enum_first|enum_ge|enum_gt|enum_in|enum_larger|enum_last|enum_le|enum_lt|enum_ne|enum_out|enum_range|enum_recv|enum_send|enum_smaller|eqjoinsel|eqsel|euc_cn_to_mic|euc_cn_to_utf8|euc_jis_2004_to_shift_jis_2004|euc_jis_2004_to_utf8|euc_jp_to_mic|euc_jp_to_sjis|euc_jp_to_utf8|euc_kr_to_mic|euc_kr_to_utf8|euc_tw_to_big5|euc_tw_to_mic|euc_tw_to_utf8|event_trigger_in|event_trigger_out|every|exp|factorial|family|fdw_handler_in|fdw_handler_out|first_value|float4|float48div|float48eq|float48ge|float48gt|float48le|float48lt|float48mi|float48mul|float48ne|float48pl|float4_accum|float4abs|float4div|float4eq|float4ge|float4gt|float4in|float4larger|float4le|float4lt|float4mi|float4mul|float4ne|float4out|float4pl|float4recv|float4send|float4smaller|float4um|float4up|float8|float84div|float84eq|float84ge|float84gt|float84le|float84lt|float84mi|float84mul|float84ne|float84pl|float8_accum|float8_avg|float8_corr|float8_covar_pop|float8_covar_samp|float8_regr_accum|float8_regr_avgx|float8_regr_avgy|float8_regr_intercept|float8_regr_r2|float8_regr_slope|float8_regr_sxx|float8_regr_sxy|float8_regr_syy|float8_stddev_pop|float8_stddev_samp|float8_var_pop|float8_var_samp|float8abs|float8div|float8eq|float8ge|float8gt|float8in|float8larger|float8le|float8lt|float8mi|float8mul|float8ne|float8out|float8pl|float8recv|float8send|float8smaller|float8um|float8up|floor|flt4_mul_cash|flt8_mul_cash|fmgr_c_validator|fmgr_internal_validator|fmgr_sql_validator|format|format_type|gb18030_to_utf8|gbk_to_utf8|generate_series|generate_subscripts|get_bit|get_byte|get_current_ts_config|getdatabaseencoding|getpgusername|gin_cmp_prefix|gin_cmp_tslexeme|gin_extract_tsquery|gin_extract_tsvector|gin_tsquery_consistent|ginarrayconsistent|ginarrayextract|ginbeginscan|ginbuild|ginbuildempty|ginbulkdelete|gincostestimate|ginendscan|gingetbitmap|gininsert|ginmarkpos|ginoptions|ginqueryarrayextract|ginrescan|ginrestrpos|ginvacuumcleanup|gist_box_compress|gist_box_consistent|gist_box_decompress|gist_box_penalty|gist_box_picksplit|gist_box_same|gist_box_union|gist_circle_compress|gist_circle_consistent|gist_point_compress|gist_point_consistent|gist_point_distance|gist_poly_compress|gist_poly_consistent|gistbeginscan|gistbuild|gistbuildempty|gistbulkdelete|gistcostestimate|gistendscan|gistgetbitmap|gistgettuple|gistinsert|gistmarkpos|gistoptions|gistrescan|gistrestrpos|gistvacuumcleanup|gtsquery_compress|gtsquery_consistent|gtsquery_decompress|gtsquery_penalty|gtsquery_picksplit|gtsquery_same|gtsquery_union|gtsvector_compress|gtsvector_consistent|gtsvector_decompress|gtsvector_penalty|gtsvector_picksplit|gtsvector_same|gtsvector_union|gtsvectorin|gtsvectorout|has_any_column_privilege|has_column_privilege|has_database_privilege|has_foreign_data_wrapper_privilege|has_function_privilege|has_language_privilege|has_schema_privilege|has_sequence_privilege|has_server_privilege|has_table_privilege|has_tablespace_privilege|has_type_privilege|hash_aclitem|hash_array|hash_numeric|hash_range|hashbeginscan|hashbpchar|hashbuild|hashbuildempty|hashbulkdelete|hashchar|hashcostestimate|hashendscan|hashenum|hashfloat4|hashfloat8|hashgetbitmap|hashgettuple|hashinet|hashinsert|hashint2|hashint2vector|hashint4|hashint8|hashmacaddr|hashmarkpos|hashname|hashoid|hashoidvector|hashoptions|hashrescan|hashrestrpos|hashtext|hashvacuumcleanup|hashvarlena|height|host|hostmask|iclikejoinsel|iclikesel|icnlikejoinsel|icnlikesel|icregexeqjoinsel|icregexeqsel|icregexnejoinsel|icregexnesel|inet_client_addr|inet_client_port|inet_in|inet_out|inet_recv|inet_send|inet_server_addr|inet_server_port|inetand|inetmi|inetmi_int8|inetnot|inetor|inetpl|initcap|int2|int24div|int24eq|int24ge|int24gt|int24le|int24lt|int24mi|int24mul|int24ne|int24pl|int28div|int28eq|int28ge|int28gt|int28le|int28lt|int28mi|int28mul|int28ne|int28pl|int2_accum|int2_avg_accum|int2_mul_cash|int2_sum|int2abs|int2and|int2div|int2eq|int2ge|int2gt|int2in|int2larger|int2le|int2lt|int2mi|int2mod|int2mul|int2ne|int2not|int2or|int2out|int2pl|int2recv|int2send|int2shl|int2shr|int2smaller|int2um|int2up|int2vectoreq|int2vectorin|int2vectorout|int2vectorrecv|int2vectorsend|int2xor|int4|int42div|int42eq|int42ge|int42gt|int42le|int42lt|int42mi|int42mul|int42ne|int42pl|int48div|int48eq|int48ge|int48gt|int48le|int48lt|int48mi|int48mul|int48ne|int48pl|int4_accum|int4_avg_accum|int4_mul_cash|int4_sum|int4abs|int4and|int4div|int4eq|int4ge|int4gt|int4in|int4inc|int4larger|int4le|int4lt|int4mi|int4mod|int4mul|int4ne|int4not|int4or|int4out|int4pl|int4range|int4range_canonical|int4range_subdiff|int4recv|int4send|int4shl|int4shr|int4smaller|int4um|int4up|int4xor|int8|int82div|int82eq|int82ge|int82gt|int82le|int82lt|int82mi|int82mul|int82ne|int82pl|int84div|int84eq|int84ge|int84gt|int84le|int84lt|int84mi|int84mul|int84ne|int84pl|int8_accum|int8_avg|int8_avg_accum|int8_sum|int8abs|int8and|int8div|int8eq|int8ge|int8gt|int8in|int8inc|int8inc_any|int8inc_float8_float8|int8larger|int8le|int8lt|int8mi|int8mod|int8mul|int8ne|int8not|int8or|int8out|int8pl|int8pl_inet|int8range|int8range_canonical|int8range_subdiff|int8recv|int8send|int8shl|int8shr|int8smaller|int8um|int8up|int8xor|integer_pl_date|inter_lb|inter_sb|inter_sl|internal_in|internal_out|interval_accum|interval_avg|interval_cmp|interval_div|interval_eq|interval_ge|interval_gt|interval_hash|interval_in|interval_larger|interval_le|interval_lt|interval_mi|interval_mul|interval_ne|interval_out|interval_pl|interval_pl_date|interval_pl_time|interval_pl_timestamp|interval_pl_timestamptz|interval_pl_timetz|interval_recv|interval_send|interval_smaller|interval_transform|interval_um|intervaltypmodin|intervaltypmodout|intinterval|isclosed|isempty|isfinite|ishorizontal|iso8859_1_to_utf8|iso8859_to_utf8|iso_to_koi8r|iso_to_mic|iso_to_win1251|iso_to_win866|isopen|isparallel|isperp|isvertical|johab_to_utf8|json_agg|json_agg_finalfn|json_agg_transfn|json_array_element|json_array_element_text|json_array_elements|json_array_length|json_each|json_each_text|json_extract_path|json_extract_path_op|json_extract_path_text|json_extract_path_text_op|json_in|json_object_field|json_object_field_text|json_object_keys|json_out|json_populate_record|json_populate_recordset|json_recv|json_send|justify_days|justify_hours|justify_interval|koi8r_to_iso|koi8r_to_mic|koi8r_to_utf8|koi8r_to_win1251|koi8r_to_win866|koi8u_to_utf8|lag|language_handler_in|language_handler_out|last_value|lastval|latin1_to_mic|latin2_to_mic|latin2_to_win1250|latin3_to_mic|latin4_to_mic|lead|left|length|like|like_escape|likejoinsel|likesel|line|line_distance|line_eq|line_horizontal|line_in|line_interpt|line_intersect|line_out|line_parallel|line_perp|line_recv|line_send|line_vertical|ln|lo_close|lo_creat|lo_create|lo_export|lo_import|lo_lseek|lo_lseek64|lo_open|lo_tell|lo_tell64|lo_truncate|lo_truncate64|lo_unlink|log|loread|lower|lower_inc|lower_inf|lowrite|lpad|lseg|lseg_center|lseg_distance|lseg_eq|lseg_ge|lseg_gt|lseg_horizontal|lseg_in|lseg_interpt|lseg_intersect|lseg_le|lseg_length|lseg_lt|lseg_ne|lseg_out|lseg_parallel|lseg_perp|lseg_recv|lseg_send|lseg_vertical|ltrim|macaddr_and|macaddr_cmp|macaddr_eq|macaddr_ge|macaddr_gt|macaddr_in|macaddr_le|macaddr_lt|macaddr_ne|macaddr_not|macaddr_or|macaddr_out|macaddr_recv|macaddr_send|makeaclitem|masklen|max|md5|mic_to_ascii|mic_to_big5|mic_to_euc_cn|mic_to_euc_jp|mic_to_euc_kr|mic_to_euc_tw|mic_to_iso|mic_to_koi8r|mic_to_latin1|mic_to_latin2|mic_to_latin3|mic_to_latin4|mic_to_sjis|mic_to_win1250|mic_to_win1251|mic_to_win866|min|mktinterval|mod|money|mul_d_interval|name|nameeq|namege|namegt|nameiclike|nameicnlike|nameicregexeq|nameicregexne|namein|namele|namelike|namelt|namene|namenlike|nameout|namerecv|nameregexeq|nameregexne|namesend|neqjoinsel|neqsel|netmask|network|network_cmp|network_eq|network_ge|network_gt|network_le|network_lt|network_ne|network_sub|network_subeq|network_sup|network_supeq|nextval|nlikejoinsel|nlikesel|notlike|now|npoints|nth_value|ntile|numeric_abs|numeric_accum|numeric_add|numeric_avg|numeric_avg_accum|numeric_cmp|numeric_div|numeric_div_trunc|numeric_eq|numeric_exp|numeric_fac|numeric_ge|numeric_gt|numeric_in|numeric_inc|numeric_larger|numeric_le|numeric_ln|numeric_log|numeric_lt|numeric_mod|numeric_mul|numeric_ne|numeric_out|numeric_power|numeric_recv|numeric_send|numeric_smaller|numeric_sqrt|numeric_stddev_pop|numeric_stddev_samp|numeric_sub|numeric_transform|numeric_uminus|numeric_uplus|numeric_var_pop|numeric_var_samp|numerictypmodin|numerictypmodout|numnode|numrange|numrange_subdiff|obj_description|octet_length|oid|oideq|oidge|oidgt|oidin|oidlarger|oidle|oidlt|oidne|oidout|oidrecv|oidsend|oidsmaller|oidvectoreq|oidvectorge|oidvectorgt|oidvectorin|oidvectorle|oidvectorlt|oidvectorne|oidvectorout|oidvectorrecv|oidvectorsend|oidvectortypes|on_pb|on_pl|on_ppath|on_ps|on_sb|on_sl|opaque_in|opaque_out|overlaps|overlay|path|path_add|path_add_pt|path_center|path_contain_pt|path_distance|path_div_pt|path_in|path_inter|path_length|path_mul_pt|path_n_eq|path_n_ge|path_n_gt|path_n_le|path_n_lt|path_npoints|path_out|path_recv|path_send|path_sub_pt|pclose|percent_rank|pg_advisory_lock|pg_advisory_lock_shared|pg_advisory_unlock|pg_advisory_unlock_all|pg_advisory_unlock_shared|pg_advisory_xact_lock|pg_advisory_xact_lock_shared|pg_available_extension_versions|pg_available_extensions|pg_backend_pid|pg_backup_start_time|pg_cancel_backend|pg_char_to_encoding|pg_client_encoding|pg_collation_for|pg_collation_is_visible|pg_column_is_updatable|pg_column_size|pg_conf_load_time|pg_conversion_is_visible|pg_create_restore_point|pg_current_xlog_insert_location|pg_current_xlog_location|pg_cursor|pg_database_size|pg_describe_object|pg_encoding_max_length|pg_encoding_to_char|pg_event_trigger_dropped_objects|pg_export_snapshot|pg_extension_config_dump|pg_extension_update_paths|pg_function_is_visible|pg_get_constraintdef|pg_get_expr|pg_get_function_arguments|pg_get_function_identity_arguments|pg_get_function_result|pg_get_functiondef|pg_get_indexdef|pg_get_keywords|pg_get_multixact_members|pg_get_ruledef|pg_get_serial_sequence|pg_get_triggerdef|pg_get_userbyid|pg_get_viewdef|pg_has_role|pg_identify_object|pg_indexes_size|pg_is_in_backup|pg_is_in_recovery|pg_is_other_temp_schema|pg_is_xlog_replay_paused|pg_last_xact_replay_timestamp|pg_last_xlog_receive_location|pg_last_xlog_replay_location|pg_listening_channels|pg_lock_status|pg_ls_dir|pg_my_temp_schema|pg_node_tree_in|pg_node_tree_out|pg_node_tree_recv|pg_node_tree_send|pg_notify|pg_opclass_is_visible|pg_operator_is_visible|pg_opfamily_is_visible|pg_options_to_table|pg_postmaster_start_time|pg_prepared_statement|pg_prepared_xact|pg_read_binary_file|pg_read_file|pg_relation_filenode|pg_relation_filepath|pg_relation_is_updatable|pg_relation_size|pg_reload_conf|pg_rotate_logfile|pg_sequence_parameters|pg_show_all_settings|pg_size_pretty|pg_sleep|pg_start_backup|pg_stat_clear_snapshot|pg_stat_file|pg_stat_get_activity|pg_stat_get_analyze_count|pg_stat_get_autoanalyze_count|pg_stat_get_autovacuum_count|pg_stat_get_backend_activity|pg_stat_get_backend_activity_start|pg_stat_get_backend_client_addr|pg_stat_get_backend_client_port|pg_stat_get_backend_dbid|pg_stat_get_backend_idset|pg_stat_get_backend_pid|pg_stat_get_backend_start|pg_stat_get_backend_userid|pg_stat_get_backend_waiting|pg_stat_get_backend_xact_start|pg_stat_get_bgwriter_buf_written_checkpoints|pg_stat_get_bgwriter_buf_written_clean|pg_stat_get_bgwriter_maxwritten_clean|pg_stat_get_bgwriter_requested_checkpoints|pg_stat_get_bgwriter_stat_reset_time|pg_stat_get_bgwriter_timed_checkpoints|pg_stat_get_blocks_fetched|pg_stat_get_blocks_hit|pg_stat_get_buf_alloc|pg_stat_get_buf_fsync_backend|pg_stat_get_buf_written_backend|pg_stat_get_checkpoint_sync_time|pg_stat_get_checkpoint_write_time|pg_stat_get_db_blk_read_time|pg_stat_get_db_blk_write_time|pg_stat_get_db_blocks_fetched|pg_stat_get_db_blocks_hit|pg_stat_get_db_conflict_all|pg_stat_get_db_conflict_bufferpin|pg_stat_get_db_conflict_lock|pg_stat_get_db_conflict_snapshot|pg_stat_get_db_conflict_startup_deadlock|pg_stat_get_db_conflict_tablespace|pg_stat_get_db_deadlocks|pg_stat_get_db_numbackends|pg_stat_get_db_stat_reset_time|pg_stat_get_db_temp_bytes|pg_stat_get_db_temp_files|pg_stat_get_db_tuples_deleted|pg_stat_get_db_tuples_fetched|pg_stat_get_db_tuples_inserted|pg_stat_get_db_tuples_returned|pg_stat_get_db_tuples_updated|pg_stat_get_db_xact_commit|pg_stat_get_db_xact_rollback|pg_stat_get_dead_tuples|pg_stat_get_function_calls|pg_stat_get_function_self_time|pg_stat_get_function_total_time|pg_stat_get_last_analyze_time|pg_stat_get_last_autoanalyze_time|pg_stat_get_last_autovacuum_time|pg_stat_get_last_vacuum_time|pg_stat_get_live_tuples|pg_stat_get_numscans|pg_stat_get_tuples_deleted|pg_stat_get_tuples_fetched|pg_stat_get_tuples_hot_updated|pg_stat_get_tuples_inserted|pg_stat_get_tuples_returned|pg_stat_get_tuples_updated|pg_stat_get_vacuum_count|pg_stat_get_wal_senders|pg_stat_get_xact_blocks_fetched|pg_stat_get_xact_blocks_hit|pg_stat_get_xact_function_calls|pg_stat_get_xact_function_self_time|pg_stat_get_xact_function_total_time|pg_stat_get_xact_numscans|pg_stat_get_xact_tuples_deleted|pg_stat_get_xact_tuples_fetched|pg_stat_get_xact_tuples_hot_updated|pg_stat_get_xact_tuples_inserted|pg_stat_get_xact_tuples_returned|pg_stat_get_xact_tuples_updated|pg_stat_reset|pg_stat_reset_shared|pg_stat_reset_single_function_counters|pg_stat_reset_single_table_counters|pg_stop_backup|pg_switch_xlog|pg_table_is_visible|pg_table_size|pg_tablespace_databases|pg_tablespace_location|pg_tablespace_size|pg_terminate_backend|pg_timezone_abbrevs|pg_timezone_names|pg_total_relation_size|pg_trigger_depth|pg_try_advisory_lock|pg_try_advisory_lock_shared|pg_try_advisory_xact_lock|pg_try_advisory_xact_lock_shared|pg_ts_config_is_visible|pg_ts_dict_is_visible|pg_ts_parser_is_visible|pg_ts_template_is_visible|pg_type_is_visible|pg_typeof|pg_xlog_location_diff|pg_xlog_replay_pause|pg_xlog_replay_resume|pg_xlogfile_name|pg_xlogfile_name_offset|pi|plainto_tsquery|plpgsql_call_handler|plpgsql_inline_handler|plpgsql_validator|point|point_above|point_add|point_below|point_distance|point_div|point_eq|point_horiz|point_in|point_left|point_mul|point_ne|point_out|point_recv|point_right|point_send|point_sub|point_vert|poly_above|poly_below|poly_center|poly_contain|poly_contain_pt|poly_contained|poly_distance|poly_in|poly_left|poly_npoints|poly_out|poly_overabove|poly_overbelow|poly_overlap|poly_overleft|poly_overright|poly_recv|poly_right|poly_same|poly_send|polygon|popen|position|positionjoinsel|positionsel|postgresql_fdw_validator|pow|power|prsd_end|prsd_headline|prsd_lextype|prsd_nexttoken|prsd_start|pt_contained_circle|pt_contained_poly|query_to_xml|query_to_xml_and_xmlschema|query_to_xmlschema|querytree|quote_ident|quote_literal|quote_nullable|radians|radius|random|range_adjacent|range_after|range_before|range_cmp|range_contained_by|range_contains|range_contains_elem|range_eq|range_ge|range_gist_compress|range_gist_consistent|range_gist_decompress|range_gist_penalty|range_gist_picksplit|range_gist_same|range_gist_union|range_gt|range_in|range_intersect|range_le|range_lt|range_minus|range_ne|range_out|range_overlaps|range_overleft|range_overright|range_recv|range_send|range_typanalyze|range_union|rangesel|rank|record_eq|record_ge|record_gt|record_in|record_le|record_lt|record_ne|record_out|record_recv|record_send|regclass|regclassin|regclassout|regclassrecv|regclasssend|regconfigin|regconfigout|regconfigrecv|regconfigsend|regdictionaryin|regdictionaryout|regdictionaryrecv|regdictionarysend|regexeqjoinsel|regexeqsel|regexnejoinsel|regexnesel|regexp_matches|regexp_replace|regexp_split_to_array|regexp_split_to_table|regoperatorin|regoperatorout|regoperatorrecv|regoperatorsend|regoperin|regoperout|regoperrecv|regopersend|regprocedurein|regprocedureout|regprocedurerecv|regproceduresend|regprocin|regprocout|regprocrecv|regprocsend|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|regtypein|regtypeout|regtyperecv|regtypesend|reltime|reltimeeq|reltimege|reltimegt|reltimein|reltimele|reltimelt|reltimene|reltimeout|reltimerecv|reltimesend|repeat|replace|reverse|right|round|row_number|row_to_json|rpad|rtrim|scalargtjoinsel|scalargtsel|scalarltjoinsel|scalarltsel|schema_to_xml|schema_to_xml_and_xmlschema|schema_to_xmlschema|session_user|set_bit|set_byte|set_config|set_masklen|setseed|setval|setweight|shell_in|shell_out|shift_jis_2004_to_euc_jis_2004|shift_jis_2004_to_utf8|shobj_description|sign|similar_escape|sin|sjis_to_euc_jp|sjis_to_mic|sjis_to_utf8|slope|smgreq|smgrin|smgrne|smgrout|spg_kd_choose|spg_kd_config|spg_kd_inner_consistent|spg_kd_picksplit|spg_quad_choose|spg_quad_config|spg_quad_inner_consistent|spg_quad_leaf_consistent|spg_quad_picksplit|spg_range_quad_choose|spg_range_quad_config|spg_range_quad_inner_consistent|spg_range_quad_leaf_consistent|spg_range_quad_picksplit|spg_text_choose|spg_text_config|spg_text_inner_consistent|spg_text_leaf_consistent|spg_text_picksplit|spgbeginscan|spgbuild|spgbuildempty|spgbulkdelete|spgcanreturn|spgcostestimate|spgendscan|spggetbitmap|spggettuple|spginsert|spgmarkpos|spgoptions|spgrescan|spgrestrpos|spgvacuumcleanup|split_part|sqrt|statement_timestamp|stddev|stddev_pop|stddev_samp|string_agg|string_agg_finalfn|string_agg_transfn|string_to_array|strip|strpos|substr|substring|sum|suppress_redundant_updates_trigger|table_to_xml|table_to_xml_and_xmlschema|table_to_xmlschema|tan|text|text_ge|text_gt|text_larger|text_le|text_lt|text_pattern_ge|text_pattern_gt|text_pattern_le|text_pattern_lt|text_smaller|textanycat|textcat|texteq|texticlike|texticnlike|texticregexeq|texticregexne|textin|textlen|textlike|textne|textnlike|textout|textrecv|textregexeq|textregexne|textsend|thesaurus_init|thesaurus_lexize|tideq|tidge|tidgt|tidin|tidlarger|tidle|tidlt|tidne|tidout|tidrecv|tidsend|tidsmaller|time_cmp|time_eq|time_ge|time_gt|time_hash|time_in|time_larger|time_le|time_lt|time_mi_interval|time_mi_time|time_ne|time_out|time_pl_interval|time_recv|time_send|time_smaller|time_transform|timedate_pl|timemi|timenow|timeofday|timepl|timestamp_cmp|timestamp_cmp_date|timestamp_cmp_timestamptz|timestamp_eq|timestamp_eq_date|timestamp_eq_timestamptz|timestamp_ge|timestamp_ge_date|timestamp_ge_timestamptz|timestamp_gt|timestamp_gt_date|timestamp_gt_timestamptz|timestamp_hash|timestamp_in|timestamp_larger|timestamp_le|timestamp_le_date|timestamp_le_timestamptz|timestamp_lt|timestamp_lt_date|timestamp_lt_timestamptz|timestamp_mi|timestamp_mi_interval|timestamp_ne|timestamp_ne_date|timestamp_ne_timestamptz|timestamp_out|timestamp_pl_interval|timestamp_recv|timestamp_send|timestamp_smaller|timestamp_sortsupport|timestamp_transform|timestamptypmodin|timestamptypmodout|timestamptz_cmp|timestamptz_cmp_date|timestamptz_cmp_timestamp|timestamptz_eq|timestamptz_eq_date|timestamptz_eq_timestamp|timestamptz_ge|timestamptz_ge_date|timestamptz_ge_timestamp|timestamptz_gt|timestamptz_gt_date|timestamptz_gt_timestamp|timestamptz_in|timestamptz_larger|timestamptz_le|timestamptz_le_date|timestamptz_le_timestamp|timestamptz_lt|timestamptz_lt_date|timestamptz_lt_timestamp|timestamptz_mi|timestamptz_mi_interval|timestamptz_ne|timestamptz_ne_date|timestamptz_ne_timestamp|timestamptz_out|timestamptz_pl_interval|timestamptz_recv|timestamptz_send|timestamptz_smaller|timestamptztypmodin|timestamptztypmodout|timetypmodin|timetypmodout|timetz_cmp|timetz_eq|timetz_ge|timetz_gt|timetz_hash|timetz_in|timetz_larger|timetz_le|timetz_lt|timetz_mi_interval|timetz_ne|timetz_out|timetz_pl_interval|timetz_recv|timetz_send|timetz_smaller|timetzdate_pl|timetztypmodin|timetztypmodout|timezone|tinterval|tintervalct|tintervalend|tintervaleq|tintervalge|tintervalgt|tintervalin|tintervalle|tintervalleneq|tintervallenge|tintervallengt|tintervallenle|tintervallenlt|tintervallenne|tintervallt|tintervalne|tintervalout|tintervalov|tintervalrecv|tintervalrel|tintervalsame|tintervalsend|tintervalstart|to_ascii|to_char|to_date|to_hex|to_json|to_number|to_timestamp|to_tsquery|to_tsvector|transaction_timestamp|translate|trigger_in|trigger_out|trunc|ts_debug|ts_headline|ts_lexize|ts_match_qv|ts_match_tq|ts_match_tt|ts_match_vq|ts_parse|ts_rank|ts_rank_cd|ts_rewrite|ts_stat|ts_token_type|ts_typanalyze|tsmatchjoinsel|tsmatchsel|tsq_mcontained|tsq_mcontains|tsquery_and|tsquery_cmp|tsquery_eq|tsquery_ge|tsquery_gt|tsquery_le|tsquery_lt|tsquery_ne|tsquery_not|tsquery_or|tsqueryin|tsqueryout|tsqueryrecv|tsquerysend|tsrange|tsrange_subdiff|tstzrange|tstzrange_subdiff|tsvector_cmp|tsvector_concat|tsvector_eq|tsvector_ge|tsvector_gt|tsvector_le|tsvector_lt|tsvector_ne|tsvector_update_trigger|tsvector_update_trigger_column|tsvectorin|tsvectorout|tsvectorrecv|tsvectorsend|txid_current|txid_current_snapshot|txid_snapshot_in|txid_snapshot_out|txid_snapshot_recv|txid_snapshot_send|txid_snapshot_xip|txid_snapshot_xmax|txid_snapshot_xmin|txid_visible_in_snapshot|uhc_to_utf8|unique_key_recheck|unknownin|unknownout|unknownrecv|unknownsend|unnest|upper|upper_inc|upper_inf|utf8_to_ascii|utf8_to_big5|utf8_to_euc_cn|utf8_to_euc_jis_2004|utf8_to_euc_jp|utf8_to_euc_kr|utf8_to_euc_tw|utf8_to_gb18030|utf8_to_gbk|utf8_to_iso8859|utf8_to_iso8859_1|utf8_to_johab|utf8_to_koi8r|utf8_to_koi8u|utf8_to_shift_jis_2004|utf8_to_sjis|utf8_to_uhc|utf8_to_win|uuid_cmp|uuid_eq|uuid_ge|uuid_gt|uuid_hash|uuid_in|uuid_le|uuid_lt|uuid_ne|uuid_out|uuid_recv|uuid_send|var_pop|var_samp|varbit_in|varbit_out|varbit_recv|varbit_send|varbit_transform|varbitcmp|varbiteq|varbitge|varbitgt|varbitle|varbitlt|varbitne|varbittypmodin|varbittypmodout|varchar_transform|varcharin|varcharout|varcharrecv|varcharsend|varchartypmodin|varchartypmodout|variance|version|void_in|void_out|void_recv|void_send|width|width_bucket|win1250_to_latin2|win1250_to_mic|win1251_to_iso|win1251_to_koi8r|win1251_to_mic|win1251_to_win866|win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier",!0),r=[{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"variable.language",regex:'".*?"'},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|~=|~>=~|~>~|~~|~~\\*"},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}];this.$rules={start:[{token:"comment",regex:"--.*$"},s.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"keyword.statementBegin",regex:"^[a-zA-Z]+",next:"statement"},{token:"support.buildin",regex:"^\\\\[\\S]+.*$"}],statement:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentStatement"},{token:"statementEnd",regex:";",next:"start"},{token:"string",regex:"\\$perl\\$",next:"perl-start"},{token:"string",regex:"\\$python\\$",next:"python-start"},{token:"string",regex:"\\$json\\$",next:"json-start"},{token:"string",regex:"\\$(js|javascript)\\$",next:"javascript-start"},{token:"string",regex:"\\$[\\w_0-9]*\\$$",next:"dollarSql"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarStatementString"}].concat(r),dollarSql:[{token:"comment",regex:"--.*$"},{token:"comment",regex:"\\/\\*",next:"commentDollarSql"},{token:"string",regex:"^\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:"\\$[\\w_0-9]*\\$",next:"dollarSqlString"}].concat(r),comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],commentStatement:[{token:"comment",regex:".*?\\*\\/",next:"statement"},{token:"comment",regex:".+"}],commentDollarSql:[{token:"comment",regex:".*?\\*\\/",next:"dollarSql"},{token:"comment",regex:".+"}],dollarStatementString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"statement"},{token:"string",regex:".+"}],dollarSqlString:[{token:"string",regex:".*?\\$[\\w_0-9]*\\$",next:"dollarSql"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.embedRules(u,"perl-",[{token:"string",regex:"\\$perl\\$",next:"statement"}]),this.embedRules(a,"python-",[{token:"string",regex:"\\$python\\$",next:"statement"}]),this.embedRules(f,"json-",[{token:"string",regex:"\\$json\\$",next:"statement"}]),this.embedRules(l,"javascript-",[{token:"string",regex:"\\$(js|javascript)\\$",next:"statement"}])};r.inherits(c,o),t.PgsqlHighlightRules=c}),ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./pgsql_highlight_rules").PgsqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){return e=="start"||e=="keyword.statementEnd"?"":this.$getIndent(t)},this.$id="ace/mode/pgsql"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-php.js b/js/ace/mode-php.js
new file mode 100644
index 0000000..d5eb140
--- /dev/null
+++ b/js/ace/mode-php.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(){var e=s,t=i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_bind_param|mysqli_bind_result|mysqli_client_encoding|mysqli_connect|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_report|mysqli_result|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_set_opt|mysqli_slave_query|mysqli_stmt|mysqli_warning|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type".split("|")),n=i.arrayToMap("abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|public|static|switch|throw|try|use|var|while|xor".split("|")),r=i.arrayToMap("die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),o=i.arrayToMap("true|false|null|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__".split("|")),u=i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),a=i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),f=i.arrayToMap("cfunction|old_function".split("|")),l=i.arrayToMap([]);this.$rules={start:[{token:"comment",regex:/(?:#|\/\/)(?:[^?]|\?[^>])*/},e.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"'",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"},{token:["keyword","text","support.class"],regex:"\\b(new)(\\s+)(\\w+)"},{token:["support.class","keyword.operator"],regex:"\\b(\\w+)(::)"},{token:"constant.language",regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"},{token:function(e){return n.hasOwnProperty(e)?"keyword":o.hasOwnProperty(e)?"constant.language":u.hasOwnProperty(e)?"variable.language":l.hasOwnProperty(e)?"invalid.illegal":t.hasOwnProperty(e)?"support.function":e=="debugger"?"invalid.deprecated":e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)?"variable":"identifier"},regex:/[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{onMatch:function(e,t,n){e=e.substr(3);if(e[0]=="'"||e[0]=='"')e=e.slice(1,-1);return n.unshift(this.next,e),"markup.list"},regex:/<<<(?:\w+|'\w+'|"\w+")$/,next:"heredoc"},{token:"keyword.operator",regex:"::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],heredoc:[{onMatch:function(e,t,n){return n[1]!=e?"string":(n.shift(),n.shift(),"markup.list")},regex:"^\\w+(?=;?$)",next:"start"},{token:"string",regex:".*"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:'\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:"variable",regex:/\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/},{token:"variable",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(a,o);var f=function(){u.call(this);var e=[{token:"support.php_tag",regex:"<\\?(?:php|=)?",push:"php-start"}],t=[{token:"support.php_tag",regex:"\\?>",next:"pop"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(a,"php-",t,["start"]),this.normalizeRules()};r.inherits(f,u),t.PhpHighlightRules=f,t.PhpLangHighlightRules=a}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./php_highlight_rules").PhpHighlightRules,o=e("./php_highlight_rules").PhpLangHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=e("../worker/worker_client").WorkerClient,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../unicode"),p=e("./html").Mode,d=e("./javascript").Mode,v=e("./css").Mode,m=function(e){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new l,this.foldingRules=new c};r.inherits(m,i),function(){this.tokenRe=new RegExp("^["+h.packages.L+h.packages.Mn+h.packages.Mc+h.packages.Nd+h.packages.Pc+"_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+h.packages.L+h.packages.Mn+h.packages.Mc+h.packages.Nd+h.packages.Pc+"_]|s])+","g"),this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[\:]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o!="doc-start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/php-inline"}.call(m.prototype);var g=function(e){if(e&&e.inline){var t=new m;return t.createWorker=this.createWorker,t.inlinePhp=!0,t}p.call(this),this.HighlightRules=s,this.createModeDelegates({"js-":d,"css-":v,"php-":m}),this.foldingRules.subModes["php-"]=new c};r.inherits(g,p),function(){this.createWorker=function(e){var t=new f(["ace"],"ace/mode/php_worker","PhpWorker");return t.attachToDocument(e.getDocument()),this.inlinePhp&&t.call("setOptions",[{inline:!0}]),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/php"}.call(g.prototype),t.Mode=g})
\ No newline at end of file
diff --git a/js/ace/mode-plain_text.js b/js/ace/mode-plain_text.js
new file mode 100644
index 0000000..be72ab9
--- /dev/null
+++ b/js/ace/mode-plain_text.js
@@ -0,0 +1 @@
+ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-powershell.js b/js/ace/mode-powershell.js
new file mode 100644
index 0000000..a0130b0
--- /dev/null
+++ b/js/ace/mode-powershell.js
@@ -0,0 +1 @@
+ace.define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="function|if|else|elseif|switch|while|default|for|do|until|break|continue|foreach|return|filter|in|trap|throw|param|begin|process|end",t="Get-Alias|Import-Alias|New-Alias|Set-Alias|Get-AuthenticodeSignature|Set-AuthenticodeSignature|Set-Location|Get-ChildItem|Clear-Item|Get-Command|Measure-Command|Trace-Command|Add-Computer|Checkpoint-Computer|Remove-Computer|Restart-Computer|Restore-Computer|Stop-Computer|Reset-ComputerMachinePassword|Test-ComputerSecureChannel|Add-Content|Get-Content|Set-Content|Clear-Content|Get-Command|Invoke-Command|Enable-ComputerRestore|Disable-ComputerRestore|Get-ComputerRestorePoint|Test-Connection|ConvertFrom-CSV|ConvertTo-CSV|ConvertTo-Html|ConvertTo-Xml|ConvertFrom-SecureString|ConvertTo-SecureString|Copy-Item|Export-Counter|Get-Counter|Import-Counter|Get-Credential|Get-Culture|Get-ChildItem|Get-Date|Set-Date|Remove-Item|Compare-Object|Get-Event|Get-WinEvent|New-Event|Remove-Event|Unregister-Event|Wait-Event|Clear-EventLog|Get-Eventlog|Limit-EventLog|New-Eventlog|Remove-EventLog|Show-EventLog|Write-EventLog|Get-EventSubscriber|Register-EngineEvent|Register-ObjectEvent|Register-WmiEvent|Get-ExecutionPolicy|Set-ExecutionPolicy|Export-Alias|Export-Clixml|Export-Console|Export-Csv|ForEach-Object|Format-Custom|Format-List|Format-Table|Format-Wide|Export-FormatData|Get-FormatData|Get-Item|Get-ChildItem|Get-Help|Add-History|Clear-History|Get-History|Invoke-History|Get-Host|Read-Host|Write-Host|Get-HotFix|Import-Clixml|Import-Csv|Invoke-Command|Invoke-Expression|Get-Item|Invoke-Item|New-Item|Remove-Item|Set-Item|Clear-ItemProperty|Copy-ItemProperty|Get-ItemProperty|Move-ItemProperty|New-ItemProperty|Remove-ItemProperty|Rename-ItemProperty|Set-ItemProperty|Get-Job|Receive-Job|Remove-Job|Start-Job|Stop-Job|Wait-Job|Stop-Process|Update-List|Get-Location|Pop-Location|Push-Location|Set-Location|Send-MailMessage|Add-Member|Get-Member|Move-Item|Compare-Object|Group-Object|Measure-Object|New-Object|Select-Object|Sort-Object|Where-Object|Out-Default|Out-File|Out-GridView|Out-Host|Out-Null|Out-Printer|Out-String|Convert-Path|Join-Path|Resolve-Path|Split-Path|Test-Path|Get-Pfxcertificate|Pop-Location|Push-Location|Get-Process|Start-Process|Stop-Process|Wait-Process|Enable-PSBreakpoint|Disable-PSBreakpoint|Get-PSBreakpoint|Set-PSBreakpoint|Remove-PSBreakpoint|Get-PSDrive|New-PSDrive|Remove-PSDrive|Get-PSProvider|Set-PSdebug|Enter-PSSession|Exit-PSSession|Export-PSSession|Get-PSSession|Import-PSSession|New-PSSession|Remove-PSSession|Disable-PSSessionConfiguration|Enable-PSSessionConfiguration|Get-PSSessionConfiguration|Register-PSSessionConfiguration|Set-PSSessionConfiguration|Unregister-PSSessionConfiguration|New-PSSessionOption|Add-PsSnapIn|Get-PsSnapin|Remove-PSSnapin|Get-Random|Read-Host|Remove-Item|Rename-Item|Rename-ItemProperty|Select-Object|Select-XML|Send-MailMessage|Get-Service|New-Service|Restart-Service|Resume-Service|Set-Service|Start-Service|Stop-Service|Suspend-Service|Sort-Object|Start-Sleep|ConvertFrom-StringData|Select-String|Tee-Object|New-Timespan|Trace-Command|Get-Tracesource|Set-Tracesource|Start-Transaction|Complete-Transaction|Get-Transaction|Use-Transaction|Undo-Transaction|Start-Transcript|Stop-Transcript|Add-Type|Update-TypeData|Get-Uiculture|Get-Unique|Update-Formatdata|Update-Typedata|Clear-Variable|Get-Variable|New-Variable|Remove-Variable|Set-Variable|New-WebServiceProxy|Where-Object|Write-Debug|Write-Error|Write-Host|Write-Output|Write-Progress|Write-Verbose|Write-Warning|Set-WmiInstance|Invoke-WmiMethod|Get-WmiObject|Remove-WmiObject|Connect-WSMan|Disconnect-WSMan|Test-WSMan|Invoke-WSManAction|Disable-WSManCredSSP|Enable-WSManCredSSP|Get-WSManCredSSP|New-WSManInstance|Get-WSManInstance|Set-WSManInstance|Remove-WSManInstance|Set-WSManQuickConfig|New-WSManSessionOption",n=this.createKeywordMapper({"support.function":t,keyword:e},"identifier"),r="eq|ne|ge|gt|lt|le|like|notlike|match|notmatch|replace|contains|notcontains|ieq|ine|ige|igt|ile|ilt|ilike|inotlike|imatch|inotmatch|ireplace|icontains|inotcontains|is|isnot|as|and|or|band|bor|not";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment.start",regex:"<#",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"[$](?:[Tt]rue|[Ff]alse)\\b"},{token:"constant.language",regex:"[$][Nn]ull\\b"},{token:"variable.instance",regex:"[$][a-zA-Z][a-zA-Z0-9_]*\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b"},{token:"keyword.operator",regex:"\\-(?:"+r+")"},{token:"keyword.operator",regex:"&|\\*|\\+|\\-|\\=|\\+=|\\-="},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment.end",regex:"#>",next:"start"},{token:"doc.comment.tag",regex:"^\\.\\w+"},{token:"comment",regex:"\\w+"},{token:"comment",regex:"."}]}};r.inherits(s,i),t.PowershellHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./powershell_highlight_rules").PowershellHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a({start:"^\\s*(<#)",end:"^[#\\s]>\\s*$"})};r.inherits(f,i),function(){this.lineCommentStart="#",this.blockComment={start:"<#",end:"#>"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){return null},this.$id="ace/mode/powershell"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-praat.js b/js/ace/mode-praat.js
new file mode 100644
index 0000000..3705d54
--- /dev/null
+++ b/js/ace/mode-praat.js
@@ -0,0 +1 @@
+ace.define("ace/mode/praat_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="if|then|else|elsif|elif|endif|fi|endfor|endproc|while|endwhile|repeat|until|select|plus|minus|assert",t="macintosh|windows|unix|praatVersion|praatVersion\\$pi|undefined|newline\\$|tab\\$|shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|temporaryDirectory\\$|defaultDirectory\\$",n="clearinfo|endSendPraat",r="writeInfo|writeInfoLine|appendInfo|appendInfoLine|writeFile|writeFileLine|appendFile|appendFileLine|abs|round|floor|ceiling|min|max|imin|imax|sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|exp|ln|log10|log2|sinh|cosh|tanh|arcsinh|arccosh|actanh|sigmoid|invSigmoid|erf|erfc|randomUniform|randomInteger|randomGauss|randomPoisson|lnGamma|gaussP|gaussQ|invGaussQ|chiSquareP|chiSquareQ|invChiSquareQ|studentP|studentQ|invStudentQ|fisherP|fisherQ|invFisherQ|binomialP|binomialQ|invBinomialP|invBinomialQ|hertzToBark|barkToHerz|hertzToMel|melToHertz|hertzToSemitones|semitonesToHerz|erb|hertzToErb|erbToHertz|phonToDifferenceLimens|differenceLimensToPhon|beta|besselI|besselK|selected|selected\\$|numberOfSelected|variableExists|index|rindex|startsWith|endsWith|index_regex|rindex_regex|replace_regex\\$|length|extractWord\\$|extractLine\\$|extractNumber|left\\$|right\\$|mid\\$|replace\\$|beginPause|endPause|demoShow|demoWindowTitle|demoInput|demoWaitForInput|demoClicked|demoClickedIn|demoX|demoY|demoKeyPressed|demoKey\\$|demoExtraControlKeyPressed|demoShiftKeyPressed|demoCommandKeyPressed|demoOptionKeyPressed|environment\\$|chooseReadFile\\$|chooseDirectory\\$|createDirectory|fileReadable|deleteFile|selectObject|removeObject|plusObject|minusObject|runScript|exitScript|beginSendPraat|endSendPraat",i="Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|ClassificationTable|Cochleagram|Collection|Configuration|Confusion|ContingencyTable|Corpus|Correlation|Covariance|CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|Discriminant|Dissimilarity|Distance|Distributions|DurationTier|EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|FormantTier|GaussianMixture|HMM|HMM_Observation|HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|Transition|VocalTract|Weight|WordList";this.$rules={start:[{token:"string.interpolated",regex:/'((?:[a-z][a-zA-Z0-9_]*)(?:\$|#|:[0-9]+)?)'/},{token:["text","text","keyword.operator","text","keyword"],regex:/(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(stopwatch)/},{token:["text","keyword","text","string"],regex:/(^\s*)(print(?:line)?|echo|exit|pause|sendpraat|include|execute)(\s+)(.*)/},{token:["text","keyword"],regex:"(^\\s*)("+n+")$"},{token:["text","keyword.operator","text"],regex:/(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/},{token:["text","text","keyword.operator","text","keyword","text","keyword"],regex:/(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/},{token:["text","keyword","text","keyword"],regex:/(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/},{token:["text","keyword","text","keyword"],regex:/^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/},{token:["text","support.function","text"],regex:/(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/},{token:"entity.name.type",regex:"("+i+")"},{token:"variable.language",regex:"("+t+")"},{token:["support.function","text"],regex:"((?:"+r+")\\$?)(\\s*(?::|\\())"},{token:"keyword",regex:/(\bfor\b)/,next:"for"},{token:"keyword",regex:"(\\b(?:"+e+")\\b)"},{token:"string",regex:/"[^"]*"/},{token:"string",regex:/"[^"]*$/,next:"brokenstring"},{token:["text","keyword","text","entity.name.section"],regex:/(^\s*)(\bform\b)(\s+)(.*)/,next:"form"},{token:"constant.numeric",regex:/\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["keyword","text","entity.name.function"],regex:/(procedure)(\s+)(\S+)/},{token:["entity.name.function","text"],regex:/(@\S+)(:|\s*\()/},{token:["text","keyword","text","entity.name.function"],regex:/(^\s*)(call)(\s+)(\S+)/},{token:"comment",regex:/(^\s*#|;).*$/},{token:"text",regex:/\s+/}],form:[{token:["keyword","text","constant.numeric"],regex:/((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/},{token:["keyword","constant.numeric"],regex:/((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/},{token:["keyword","string"],regex:/((?:option|button)\s+)(.*)/},{token:["keyword","text","string"],regex:/((?:sentence|text)\s+)(\S+\s*)(.*)/},{token:["keyword","text","string","invalid.illegal"],regex:/(word\s+)(\S+\s*)(\S+)?(\s.*)?/},{token:["keyword","text","constant.language"],regex:/(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/},{token:["keyword","text","constant.numeric"],regex:/((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/},{token:["keyword","string"],regex:/(comment\s+)(.*)/},{token:"keyword",regex:"endform",next:"start"}],"for":[{token:["keyword","text","constant.numeric","text"],regex:/(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/},{token:["keyword","text"],regex:/(from|to)(\s+\S+\s*)/},{token:"text",regex:/$/,next:"start"}],brokenstring:[{token:["text","string"],regex:/(\s*\.{3})([^"]*)/},{token:"string",regex:/"/,next:"start"}]}};r.inherits(s,i),t.PraatHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./praat_highlight_rules").PraatHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/praat"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-prolog.js b/js/ace/mode-prolog.js
new file mode 100644
index 0000000..617ef6b
--- /dev/null
+++ b/js/ace/mode-prolog.js
@@ -0,0 +1 @@
+ace.define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{include:"#comment"},{include:"#basic_fact"},{include:"#rule"},{include:"#directive"},{include:"#fact"}],"#atom":[{token:"constant.other.atom.prolog",regex:"\\b[a-z][a-zA-Z0-9_]*\\b"},{token:"constant.numeric.prolog",regex:"-?\\d+(?:\\.\\d+)?"},{include:"#string"}],"#basic_elem":[{include:"#comment"},{include:"#statement"},{include:"#constants"},{include:"#operators"},{include:"#builtins"},{include:"#list"},{include:"#atom"},{include:"#variable"}],"#basic_fact":[{token:["entity.name.function.fact.basic.prolog","punctuation.end.fact.basic.prolog"],regex:"([a-z]\\w*)(\\.)"}],"#builtins":[{token:"support.function.builtin.prolog",regex:"\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b"}],"#comment":[{token:["punctuation.definition.comment.prolog","comment.line.percentage.prolog"],regex:"(%)(.*$)"},{token:"punctuation.definition.comment.prolog",regex:"/\\*",push:[{token:"punctuation.definition.comment.prolog",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.prolog"}]}],"#constants":[{token:"constant.language.prolog",regex:"\\b(?:true|false|yes|no)\\b"}],"#directive":[{token:"keyword.operator.directive.prolog",regex:":-",push:[{token:"meta.directive.prolog",regex:"\\.",next:"pop"},{include:"#comment"},{include:"#statement"},{defaultToken:"meta.directive.prolog"}]}],"#expr":[{include:"#comments"},{token:"meta.expression.prolog",regex:"\\(",push:[{token:"meta.expression.prolog",regex:"\\)",next:"pop"},{include:"#expr"},{defaultToken:"meta.expression.prolog"}]},{token:"keyword.control.cutoff.prolog",regex:"!"},{token:"punctuation.control.and.prolog",regex:","},{token:"punctuation.control.or.prolog",regex:";"},{include:"#basic_elem"}],"#fact":[{token:["entity.name.function.fact.prolog","punctuation.begin.fact.parameters.prolog"],regex:"([a-z]\\w*)(\\()(?!.*:-)",push:[{token:["punctuation.end.fact.parameters.prolog","punctuation.end.fact.prolog"],regex:"(\\))(\\.?)",next:"pop"},{include:"#parameter"},{defaultToken:"meta.fact.prolog"}]}],"#list":[{token:"punctuation.begin.list.prolog",regex:"\\[(?=.*\\])",push:[{token:"punctuation.end.list.prolog",regex:"\\]",next:"pop"},{include:"#comment"},{token:"punctuation.separator.list.prolog",regex:","},{token:"punctuation.concat.list.prolog",regex:"\\|",push:[{token:"meta.list.concat.prolog",regex:"(?=\\s*\\])",next:"pop"},{include:"#basic_elem"},{defaultToken:"meta.list.concat.prolog"}]},{include:"#basic_elem"},{defaultToken:"meta.list.prolog"}]}],"#operators":[{token:"keyword.operator.prolog",regex:"\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)="}],"#parameter":[{token:"variable.language.anonymous.prolog",regex:"\\b_\\b"},{token:"variable.parameter.prolog",regex:"\\b[A-Z_]\\w*\\b"},{token:"punctuation.separator.parameters.prolog",regex:","},{include:"#basic_elem"},{token:"text",regex:"[^\\s]"}],"#rule":[{token:"meta.rule.prolog",regex:"(?=[a-z]\\w*.*:-)",push:[{token:"punctuation.rule.end.prolog",regex:"\\.",next:"pop"},{token:"meta.rule.signature.prolog",regex:"(?=[a-z]\\w*.*:-)",push:[{token:"meta.rule.signature.prolog",regex:"(?=:-)",next:"pop"},{token:"entity.name.function.rule.prolog",regex:"[a-z]\\w*(?=\\(|\\s*:-)"},{token:"punctuation.rule.parameters.begin.prolog",regex:"\\(",push:[{token:"punctuation.rule.parameters.end.prolog",regex:"\\)",next:"pop"},{include:"#parameter"},{defaultToken:"meta.rule.parameters.prolog"}]},{defaultToken:"meta.rule.signature.prolog"}]},{token:"keyword.operator.definition.prolog",regex:":-",push:[{token:"meta.rule.definition.prolog",regex:"(?=\\.)",next:"pop"},{include:"#comment"},{include:"#expr"},{defaultToken:"meta.rule.definition.prolog"}]},{defaultToken:"meta.rule.prolog"}]}],"#statement":[{token:"meta.statement.prolog",regex:"(?=[a-z]\\w*\\()",push:[{token:"punctuation.end.statement.parameters.prolog",regex:"\\)",next:"pop"},{include:"#builtins"},{include:"#atom"},{token:"punctuation.begin.statement.parameters.prolog",regex:"\\(",push:[{token:"meta.statement.parameters.prolog",regex:"(?=\\))",next:"pop"},{token:"punctuation.separator.statement.prolog",regex:","},{include:"#basic_elem"},{defaultToken:"meta.statement.parameters.prolog"}]},{defaultToken:"meta.statement.prolog"}]}],"#string":[{token:"punctuation.definition.string.begin.prolog",regex:"'",push:[{token:"punctuation.definition.string.end.prolog",regex:"'",next:"pop"},{token:"constant.character.escape.prolog",regex:"\\\\."},{token:"constant.character.escape.quote.prolog",regex:"''"},{defaultToken:"string.quoted.single.prolog"}]}],"#variable":[{token:"variable.language.anonymous.prolog",regex:"\\b_\\b"},{token:"variable.other.prolog",regex:"\\b[A-Z_][a-zA-Z0-9_]*\\b"}]},this.normalizeRules()};s.metaData={fileTypes:["plg","prolog"],foldingStartMarker:"(%\\s*region \\w*)|([a-z]\\w*.*:- ?)",foldingStopMarker:"(%\\s*end(\\s*region)?)|(?=\\.)",keyEquivalent:"^~P",name:"Prolog",scopeName:"source.prolog"},r.inherits(s,i),t.PrologHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./prolog_highlight_rules").PrologHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="%",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/prolog"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-properties.js b/js/ace/mode-properties.js
new file mode 100644
index 0000000..bccfa47
--- /dev/null
+++ b/js/ace/mode-properties.js
@@ -0,0 +1 @@
+ace.define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=/\\u[0-9a-fA-F]{4}|\\/;this.$rules={start:[{token:"comment",regex:/[!#].*$/},{token:"keyword",regex:/[=:]$/},{token:"keyword",regex:/[=:]/,next:"value"},{token:"constant.language.escape",regex:e},{defaultToken:"variable"}],value:[{regex:/\\$/,token:"string",next:"value"},{regex:/$/,token:"string",next:"start"},{token:"constant.language.escape",regex:e},{defaultToken:"string"}]}};r.inherits(s,i),t.PropertiesHighlightRules=s}),ace.define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./properties_highlight_rules").PropertiesHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/properties"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-protobuf.js b/js/ace/mode-protobuf.js
new file mode 100644
index 0000000..cf0b29a
--- /dev/null
+++ b/js/ace/mode-protobuf.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=t.cFunctions="\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b",u=function(){var e="break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while|catch|operator|try|throw|using",t="asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|class|wchar_t|template|char16_t|char32_t",n="const|extern|register|restrict|static|volatile|inline|private|protected|public|friend|explicit|virtual|export|mutable|typename|constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local",r="and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eqconst_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace",s="NULL|true|false|TRUE|FALSE|nullptr",u=this.$keywords=this.createKeywordMapper({"keyword.control":e,"storage.type":t,"storage.modifier":n,"keyword.operator":r,"variable.language":"this","constant.language":s},"identifier"),a="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Zd\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment",regex:"//",next:"singleLineComment"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{token:"keyword",regex:"#\\s*(?:include|import|pragma|line|define|undef)\\b",next:"directive"},{token:"keyword",regex:"#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b"},{token:"support.function.C99.c",regex:o},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"punctuation.operator",regex:"\\?|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],singleLineComment:[{token:"comment",regex:/\\$/,next:"singleLineComment"},{token:"comment",regex:/$/,next:"start"},{defaultToken:"comment"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{defaultToken:"string"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{defaultToken:"string"}],directive:[{token:"constant.other.multiline",regex:/\\/},{token:"constant.other.multiline",regex:/.*\\/},{token:"constant.other",regex:"\\s*<.+?>",next:"start"},{token:"constant.other",regex:'\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]',next:"start"},{token:"constant.other",regex:"\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']",next:"start"},{token:"constant.other",regex:/[^\\\/]+/,next:"start"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(u,s),t.c_cppHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./c_cpp_highlight_rules").c_cppHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/c_cpp"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes",t="message|required|optional|repeated|package|import|option|enum",n=this.createKeywordMapper({"keyword.declaration.protobuf":t,"support.type":e},"identifier");this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant",regex:"<[^>]+>"},{regex:"=",token:"keyword.operator.assignment.protobuf"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:n,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(s,i),t.ProtobufHighlightRules=s}),ace.define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./c_cpp").Mode,s=e("./protobuf_highlight_rules").ProtobufHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){i.call(this),this.foldingRules=new o,this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/protobuf"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-python.js b/js/ace/mode-python.js
new file mode 100644
index 0000000..f80eb0e
--- /dev/null
+++ b/js/ace/mode-python.js
@@ -0,0 +1 @@
+ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield",t="True|False|None|NotImplemented|Ellipsis|__debug__",n="abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern",r=this.createKeywordMapper({"invalid.deprecated":"debugger","support.function":n,"constant.language":t,keyword:e},"identifier"),i="(?:r|u|ur|R|U|UR|Ur|uR)?",s="(?:(?:[1-9]\\d*)|(?:0))",o="(?:0[oO]?[0-7]+)",u="(?:0[xX][\\dA-Fa-f]+)",a="(?:0[bB][01]+)",f="(?:"+s+"|"+o+"|"+u+"|"+a+")",l="(?:[eE][+-]?\\d+)",c="(?:\\.\\d+)",h="(?:\\d+)",p="(?:(?:"+h+"?"+c+")|(?:"+h+"\\.))",d="(?:(?:"+p+"|"+h+")"+l+")",v="(?:"+d+"|"+p+")",m="\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})";this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"string",regex:i+'"{3}',next:"qqstring3"},{token:"string",regex:i+'"(?=.)',next:"qqstring"},{token:"string",regex:i+"'{3}",next:"qstring3"},{token:"string",regex:i+"'(?=.)",next:"qstring"},{token:"constant.numeric",regex:"(?:"+v+"|\\d+)[jJ]\\b"},{token:"constant.numeric",regex:v},{token:"constant.numeric",regex:f+"[lL]\\b"},{token:"constant.numeric",regex:f+"\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"},{token:"text",regex:"\\s+"}],qqstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:'"{3}',next:"start"},{defaultToken:"string"}],qstring3:[{token:"constant.language.escape",regex:m},{token:"string",regex:"'{3}",next:"start"},{defaultToken:"string"}],qqstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:m},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.PythonHighlightRules=s}),ace.define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e){this.foldingStartMarker=new RegExp("([\\[{])(?:\\s*)$|("+e+")(?:\\s*)(?:#.*)?$")};r.inherits(s,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=e.getLine(n),i=r.match(this.foldingStartMarker);if(i)return i[1]?this.openingBracketBlock(e,i[1],n,i.index):i[2]?this.indentationBlock(e,n,i.index+i[2].length):this.indentationBlock(e,n)}}.call(s.prototype)}),ace.define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./python_highlight_rules").PythonHighlightRules,o=e("./folding/pythonic").FoldMode,u=e("../range").Range,a=function(){this.HighlightRules=s,this.foldingRules=new o("\\:")};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new u(n,r.length-i.length,n,r.length))},this.$id="ace/mode/python"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-r.js b/js/ace/mode-r.js
new file mode 100644
index 0000000..89e73b3
--- /dev/null
+++ b/js/ace/mode-r.js
@@ -0,0 +1 @@
+ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=function(){var e=i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),t=i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));this.$rules={start:[{token:"comment.sectionhead",regex:"#+(?!').*(?:----|====|####)\\s*$"},{token:"comment",regex:"#+'",next:"rd-start"},{token:"comment",regex:"#.*$"},{token:"string",regex:'["]',next:"qqstring"},{token:"string",regex:"[']",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+[Li]?\\b"},{token:"constant.numeric",regex:"\\d+L\\b"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.numeric",regex:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.language.boolean",regex:"(?:TRUE|FALSE|T|F)\\b"},{token:"identifier",regex:"`.*?`"},{onMatch:function(n){return e[n]?"keyword":t[n]?"constant.language":n=="..."||n.match(/^\.\.\d+$/)?"variable.language":"identifier"},regex:"[a-zA-Z.][a-zA-Z0-9._]*\\b"},{token:"keyword.operator",regex:"%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"},{token:"keyword.operator",regex:"%.*?%"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]};var n=(new o("comment")).getRules();for(var r=0;r<n.start.length;r++)n.start[r].token+=".virtual-comment";this.addRules(n,"rd-"),this.$rules["rd-start"].unshift({token:"text",regex:"^",next:"start"}),this.$rules["rd-start"].unshift({token:"keyword",regex:"@(?!@)[^ ]*"}),this.$rules["rd-start"].unshift({token:"comment",regex:"@@"}),this.$rules["rd-start"].push({token:"comment",regex:"[^%\\\\[({\\])}]+"})};r.inherits(u,s),t.RHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/r",["require","exports","module","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent","ace/unicode"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./r_highlight_rules").RHighlightRules,a=e("./matching_brace_outdent").MatchingBraceOutdent,f=e("../unicode"),l=function(){this.HighlightRules=u,this.$outdent=new a};i.inherits(l,s),function(){this.lineCommentStart="#",this.$id="ace/mode/r"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-rdoc.js b/js/ace/mode-rdoc.js
new file mode 100644
index 0000000..d2b4645
--- /dev/null
+++ b/js/ace/mode-rdoc.js
@@ -0,0 +1 @@
+ace.define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:["keyword","lparen","variable.parameter","rparen","lparen","storage.type","rparen"],regex:"(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})"},{token:["keyword","lparen","variable.parameter","rparen"],regex:"(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?"},{token:["storage.type","lparen","variable.parameter","rparen"],regex:"(\\\\(?:begin|end))({)(\\w*)(})"},{token:"storage.type",regex:"\\\\[a-zA-Z]+"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"constant.character.escape",regex:"\\\\[^a-zA-Z]?"},{token:"string",regex:"\\${1,2}",next:"equation"}],equation:[{token:"comment",regex:"%.*$"},{token:"string",regex:"\\${1,2}",next:"start"},{token:"constant.character.escape",regex:"\\\\(?:[^a-zA-Z]|[a-zA-Z]+)"},{token:"error",regex:"^\\s*$",next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.LatexHighlightRules=s}),ace.define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./latex_highlight_rules"),u=function(){this.$rules={start:[{token:"comment",regex:"%.*$"},{token:"text",regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell.text",regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell.text",regex:"\\s+"},{token:"nospell.text",regex:"\\w+"}]}};r.inherits(u,s),t.RDocHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./rdoc_highlight_rules").RDocHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(e){this.HighlightRules=o,this.$outdent=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/rdoc"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-rhtml.js b/js/ace/mode-rhtml.js
new file mode 100644
index 0000000..1396031
--- /dev/null
+++ b/js/ace/mode-rhtml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),ace.define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=function(){var e=i.arrayToMap("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass".split("|")),t=i.arrayToMap("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|NA_complex_".split("|"));this.$rules={start:[{token:"comment.sectionhead",regex:"#+(?!').*(?:----|====|####)\\s*$"},{token:"comment",regex:"#+'",next:"rd-start"},{token:"comment",regex:"#.*$"},{token:"string",regex:'["]',next:"qqstring"},{token:"string",regex:"[']",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+[Li]?\\b"},{token:"constant.numeric",regex:"\\d+L\\b"},{token:"constant.numeric",regex:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.numeric",regex:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b"},{token:"constant.language.boolean",regex:"(?:TRUE|FALSE|T|F)\\b"},{token:"identifier",regex:"`.*?`"},{onMatch:function(n){return e[n]?"keyword":t[n]?"constant.language":n=="..."||n.match(/^\.\.\d+$/)?"variable.language":"identifier"},regex:"[a-zA-Z.][a-zA-Z0-9._]*\\b"},{token:"keyword.operator",regex:"%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:"},{token:"keyword.operator",regex:"%.*?%"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]};var n=(new o("comment")).getRules();for(var r=0;r<n.start.length;r++)n.start[r].token+=".virtual-comment";this.addRules(n,"rd-"),this.$rules["rd-start"].unshift({token:"text",regex:"^",next:"start"}),this.$rules["rd-start"].unshift({token:"keyword",regex:"@(?!@)[^ ]*"}),this.$rules["rd-start"].unshift({token:"comment",regex:"@@"}),this.$rules["rd-start"].push({token:"comment",regex:"[^%\\\\[({\\])}]+"})};r.inherits(u,s),t.RHighlightRules=u}),ace.define("ace/mode/rhtml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/r_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./r_highlight_rules").RHighlightRules,s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){s.call(this),this.$rules.start.unshift({token:"support.function.codebegin",regex:"^<!--\\s*begin.rcode\\s*(?:.*)",next:"r-start"}),this.embedRules(i,"r-",[{token:"support.function.codeend",regex:"^\\s*end.rcode\\s*-->",next:"start"}],["start"]),this.normalizeRules()};r.inherits(u,o),t.RHtmlHighlightRules=u}),ace.define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./rhtml_highlight_rules").RHtmlHighlightRules,o=function(e,t){i.call(this),this.$session=t,this.HighlightRules=s};r.inherits(o,i),function(){this.insertChunkInfo={value:"<!--begin.rcode\n\nend.rcode-->\n",position:{row:0,column:15}},this.getLanguageMode=function(e){return this.$session.getState(e.row).match(/^r-/)?"R":"HTML"},this.$id="ace/mode/rhtml"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-ruby.js b/js/ace/mode-ruby.js
new file mode 100644
index 0000000..7c4e2d9
--- /dev/null
+++ b/js/ace/mode-ruby.js
@@ -0,0 +1 @@
+ace.define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.constantOtherSymbol={token:"constant.other.symbol.ruby",regex:"[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?"},o=t.qString={token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},u=t.qqString={token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},a=t.tString={token:"string",regex:"[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]"},f=t.constantNumericHex={token:"constant.numeric",regex:"0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b"},l=t.constantNumericFloat={token:"constant.numeric",regex:"[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b"},c=function(){var e="abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|validates_inclusion_of|validates_numericality_of|validates_with|validates_each|authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|cache|expire_fragment|expire_cache_for|observe|cache_sweeper|has_many|has_one|belongs_to|has_and_belongs_to_many",t="alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield",n="true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING",r="$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|$!|root_url|flash|session|cookies|params|request|response|logger|self",i=this.$keywords=this.createKeywordMapper({keyword:t,"constant.language":n,"variable.language":r,"support.function":e,"invalid.deprecated":"debugger"},"identifier");this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"comment",regex:"^=begin(?:$|\\s.*$)",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},[{regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren.lparen";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.start",regex:/"/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/"/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/`/,push:[{token:"constant.language.escape",regex:/\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/},{token:"paren.start",regex:/\#{/,push:"start"},{token:"string.end",regex:/`/,next:"pop"},{defaultToken:"string"}]},{token:"string.start",regex:/'/,push:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string.end",regex:/'/,next:"pop"},{defaultToken:"string"}]}],{token:"text",regex:"::"},{token:"variable.instance",regex:"@{1,2}[a-zA-Z_\\d]+"},{token:"support.class",regex:"[A-Z][a-zA-Z_\\d]+"},s,f,l,{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"punctuation.separator.key-value",regex:"=>"},{stateName:"heredoc",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[3]),[{type:"constant",value:i[1]},{type:"string",value:i[2]},{type:"support.class",value:i[3]},{type:"string",value:i[4]}]},regex:"(<<-?)(['\"`]?)([\\w]+)(['\"`]?)",rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^ +"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"string.character",regex:"\\B\\?."},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"^=end(?:$|\\s.*$)",next:"start"},{token:"comment",regex:".+"}]},this.normalizeRules()};r.inherits(c,i),t.RubyHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ruby_highlight_rules").RubyHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/coffee").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/),u=t.match(/^\s*(class|def|module)\s.*$/),a=t.match(/.*do(\s*|\s+\|.*\|\s*)$/),f=t.match(/^\s*(if|else)\s*/);if(o||u||a||f)r+=n}return r},this.checkOutdent=function(e,t,n){return/^\s+(end|else)$/.test(t+n)||this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){var r=t.getLine(n);if(/}/.test(r))return this.$outdent.autoOutdent(t,n);var i=this.$getIndent(r),s=t.getLine(n-1),o=this.$getIndent(s),a=t.getTabString();o.length<=i.length&&i.slice(-a.length)==a&&t.remove(new u(n,i.length-a.length,n,i.length))},this.$id="ace/mode/ruby"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-rust.js b/js/ace/mode-rust.js
new file mode 100644
index 0000000..82398b6
--- /dev/null
+++ b/js/ace/mode-rust.js
@@ -0,0 +1 @@
+ace.define("ace/mode/rust_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable.other.source.rust",regex:"'[a-zA-Z_][a-zA-Z0-9_]*[^\\']"},{token:"string.quoted.single.source.rust",regex:"'",push:[{token:"string.quoted.single.source.rust",regex:"'",next:"pop"},{include:"#rust_escaped_character"},{defaultToken:"string.quoted.single.source.rust"}]},{stateName:"bracketedComment",onMatch:function(e,t,n){return n.unshift(this.next,e.length-1,t),"string.quoted.raw.source.rust"},regex:/r#*"/,next:[{onMatch:function(e,t,n){var r="string.quoted.raw.source.rust";return e.length>=n[1]?(e.length>n[1]&&(r="invalid"),n.shift(),n.shift(),this.next=n.shift()):this.next="",r},regex:/"#*/,next:"start"},{defaultToken:"string.quoted.raw.source.rust"}]},{token:"string.quoted.double.source.rust",regex:'"',push:[{token:"string.quoted.double.source.rust",regex:'"',next:"pop"},{include:"#rust_escaped_character"},{defaultToken:"string.quoted.double.source.rust"}]},{token:["keyword.source.rust","meta.function.source.rust","entity.name.function.source.rust","meta.function.source.rust"],regex:"\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_][\\w\\:,+ \\'<>]*)(\\s*\\()"},{token:"support.constant",regex:"\\b[a-zA-Z_][\\w\\d]*::"},{token:"keyword.source.rust",regex:"\\b(?:as|assert|break|claim|const|copy|Copy|do|drop|else|extern|fail|for|if|impl|in|let|log|loop|match|mod|module|move|mut|Owned|priv|pub|pure|ref|return|unchecked|unsafe|use|while|mod|Send|static|trait|class|struct|enum|type)\\b"},{token:"storage.type.source.rust",regex:"\\b(?:Self|m32|m64|m128|f80|f16|f128|int|uint|isize|usize|float|char|bool|u8|u16|u32|u64|f32|f64|i8|i16|i32|i64|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b"},{token:"variable.language.source.rust",regex:"\\bself\\b"},{token:"keyword.operator",regex:"!|\\$|\\*|\\-\\-|\\-|\\+\\+|\\+|-->|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|,|;"},{token:"constant.language.source.rust",regex:"\\b(?:true|false|Some|None|Left|Right|Ok|Err)\\b"},{token:"support.constant.source.rust",regex:"\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b"},{token:"meta.preprocessor.source.rust",regex:"\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b"},{token:"constant.numeric.integer.source.rust",regex:"\\b(?:[0-9][0-9_]*|[0-9][0-9_]*(?:u|us|u8|u16|u32|u64)|[0-9][0-9_]*(?:i|is|i8|i16|i32|i64))\\b"},{token:"constant.numeric.hex.source.rust",regex:"\\b(?:0x[a-fA-F0-9_]+|0x[a-fA-F0-9_]+(?:u|us|u8|u16|u32|u64)|0x[a-fA-F0-9_]+(?:i|is|i8|i16|i32|i64))\\b"},{token:"constant.numeric.binary.source.rust",regex:"\\b(?:0b[01_]+|0b[01_]+(?:u|us|u8|u16|u32|u64)|0b[01_]+(?:i|is|i8|i16|i32|i64))\\b"},{token:"constant.numeric.float.source.rust",regex:"[0-9][0-9_]*(?:f32|f64|f)|[0-9][0-9_]*[eE][+-]=[0-9_]+|[0-9][0-9_]*[eE][+-]=[0-9_]+(?:f32|f64|f)|[0-9][0-9_]*\\.[0-9_]+|[0-9][0-9_]*\\.[0-9_]+(?:f32|f64|f)|[0-9][0-9_]*\\.[0-9_]+%[eE][+-]=[0-9_]+|[0-9][0-9_]*\\.[0-9_]+%[eE][+-]=[0-9_]+(?:f32|f64|f)"},{token:"comment.line.documentation.source.rust",regex:"//!.*$",push_:[{token:"comment.line.documentation.source.rust",regex:"$",next:"pop"},{defaultToken:"comment.line.documentation.source.rust"}]},{token:"comment.line.double-dash.source.rust",regex:"//.*$",push_:[{token:"comment.line.double-dash.source.rust",regex:"$",next:"pop"},{defaultToken:"comment.line.double-dash.source.rust"}]},{token:"comment.start.block.source.rust",regex:"/\\*",stateName:"comment",push:[{token:"comment.start.block.source.rust",regex:"/\\*",push:"comment"},{token:"comment.end.block.source.rust",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.source.rust"}]}],"#rust_escaped_character":[{token:"constant.character.escape.source.rust",regex:"\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)"}]},this.normalizeRules()};s.metaData={fileTypes:["rs","rc"],foldingStartMarker:"^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$",foldingStopMarker:"^\\s*\\}",name:"Rust",scopeName:"source.rust"},r.inherits(s,i),t.RustHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/rust",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rust_highlight_rules","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./rust_highlight_rules").RustHighlightRules,o=e("./folding/cstyle").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/rust"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-sass.js b/js/ace/mode-sass.js
new file mode 100644
index 0000000..91a991d
--- /dev/null
+++ b/js/ace/mode-sass.js
@@ -0,0 +1 @@
+ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unqoute".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./scss_highlight_rules").ScssHighlightRules,o=function(){s.call(this);var e=this.$rules.start;e[1].token=="comment"&&(e.splice(1,1,{onMatch:function(e,t,n){return n.unshift(this.next,-1,e.length-2,t),"comment"},regex:/^\s*\/\*/,next:"comment"},{token:"error.invalid",regex:"/\\*|[{;}]"},{token:"support.type",regex:/^\s*:[\w\-]+\s/}),this.$rules.comment=[{regex:/^\s*/,onMatch:function(e,t,n){return n[1]===-1&&(n[1]=Math.max(n[2],e.length-1)),e.length<=n[1]?(n.shift(),n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}])};r.inherits(o,s),t.SassHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sass_highlight_rules").SassHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.$id="ace/mode/sass"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-scad.js b/js/ace/mode-scad.js
new file mode 100644
index 0000000..18de38b
--- /dev/null
+++ b/js/ace/mode-scad.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/scad_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){var e=this.createKeywordMapper({"variable.language":"this",keyword:"module|if|else|for","constant.language":"NULL"},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},s.getStartRule("start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant",regex:"<[a-zA-Z0-9.]+>"},{token:"keyword",regex:"(?:use|include)"},{token:e,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(u,o),t.scadHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scad_highlight_rules").scadHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scad"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-scala.js b/js/ace/mode-scala.js
new file mode 100644
index 0000000..1a3eed7
--- /dev/null
+++ b/js/ace/mode-scala.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/scala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="case|default|do|else|for|if|match|while|throw|return|try|catch|finally|yield|abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|override|package|private|protected|sealed|super|this|trait|type|val|var|with",t="true|false",n="AbstractMethodError|AssertionError|ClassCircularityError|ClassFormatError|Deprecated|EnumConstantNotPresentException|ExceptionInInitializerError|IllegalAccessError|IllegalThreadStateException|InstantiationError|InternalError|NegativeArraySizeException|NoSuchFieldError|Override|Process|ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|SuppressWarnings|TypeNotPresentException|UnknownError|UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|InstantiationException|IndexOutOfBoundsException|ArrayIndexOutOfBoundsException|CloneNotSupportedException|NoSuchFieldException|IllegalArgumentException|NumberFormatException|SecurityException|Void|InheritableThreadLocal|IllegalStateException|InterruptedException|NoSuchMethodException|IllegalAccessException|UnsupportedOperationException|Enum|StrictMath|Package|Compiler|Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|Character|Boolean|StackTraceElement|Appendable|StringBuffer|Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|StackOverflowError|OutOfMemoryError|VirtualMachineError|ArrayStoreException|ClassCastException|LinkageError|NoClassDefFoundError|ClassNotFoundException|RuntimeException|Exception|ThreadDeath|Error|Throwable|System|ClassLoader|Cloneable|Class|CharSequence|Comparable|String|Object|Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|Option|Array|Char|Byte|Short|Int|Long|Nothing",r=this.createKeywordMapper({"variable.language":"this",keyword:e,"support.function":n,"constant.language":t},"identifier");this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'"""',next:"tstring"},{token:"string",regex:'"(?=.)',next:"string"},{token:"symbol.constant",regex:"'[\\w\\d_]+"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],string:[{token:"escape",regex:'\\\\"'},{token:"string",regex:'"',next:"start"},{token:"string.invalid",regex:'[^"\\\\]*$',next:"start"},{token:"string",regex:'[^"\\\\]+'}],tstring:[{token:"string",regex:'"{3,5}',next:"start"},{token:"string",regex:".+?"}]},this.embedRules(i,"doc-",[i.getEndRule("start")])};r.inherits(o,s),t.ScalaHighlightRules=o}),ace.define("ace/mode/scala",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/scala_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./scala_highlight_rules").ScalaHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/scala"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-scheme.js b/js/ace/mode-scheme.js
new file mode 100644
index 0000000..be48256
--- /dev/null
+++ b/js/ace/mode-scheme.js
@@ -0,0 +1 @@
+ace.define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="case|do|let|loop|if|else|when",t="eq?|eqv?|equal?|and|or|not|null?",n="#t|#f",r="cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load",i=this.createKeywordMapper({"keyword.control":e,"keyword.operator":t,"constant.language":n,"support.function":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:";.*$"},{token:["storage.type.function-type.scheme","text","entity.name.function.scheme"],regex:"(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)"},{token:"punctuation.definition.constant.character.scheme",regex:"#:\\S+"},{token:["punctuation.definition.variable.scheme","variable.other.global.scheme","punctuation.definition.variable.scheme"],regex:"(\\*)(\\S*)(\\*)"},{token:"constant.numeric",regex:"#[xXoObB][0-9a-fA-F]+"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?"},{token:i,regex:"[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*"},{token:"string",regex:'"(?=.)',next:"qqstring"}],qqstring:[{token:"constant.character.escape.scheme",regex:"\\\\."},{token:"string",regex:'[^"\\\\]+',merge:!0},{token:"string",regex:"\\\\$",next:"qqstring",merge:!0},{token:"string",regex:'"|$',next:"start",merge:!0}]}};r.inherits(s,i),t.SchemeHighlightRules=s}),ace.define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scheme_highlight_rules").SchemeHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=";",this.$id="ace/mode/scheme"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-scss.js b/js/ace/mode-scss.js
new file mode 100644
index 0000000..bc28edf
--- /dev/null
+++ b/js/ace/mode-scss.js
@@ -0,0 +1 @@
+ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i<s;i++)Array.prototype.push.apply(r,(e[i]+t.join("|"+e[i])).split("|"));return Array.prototype.push.apply(r,t),Array.prototype.push.apply(r,n),r}()),t=i.arrayToMap("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|scale_color|transparentize|type_of|unit|unitless|unqoute".split("|")),n=i.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|border-box|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|content-box|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")),r=i.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")),s=i.arrayToMap("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare".split("|")),o=i.arrayToMap("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp".split("|")),u="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))";this.$rules={start:[{token:"comment",regex:"\\/\\/.*$"},{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'["].*\\\\$',next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"string",regex:"['].*\\\\$",next:"qstring"},{token:"constant.numeric",regex:u+"(?:em|ex|px|cm|mm|in|pt|pc|deg|rad|grad|ms|s|hz|khz|%)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:"constant.numeric",regex:u},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:function(i){return e.hasOwnProperty(i.toLowerCase())?"support.type":s.hasOwnProperty(i)?"keyword":n.hasOwnProperty(i)?"constant.language":t.hasOwnProperty(i)?"support.function":r.hasOwnProperty(i.toLowerCase())?"support.constant.color":o.hasOwnProperty(i.toLowerCase())?"variable.language":"text"},regex:"\\-?[@a-z_][@a-z0-9_\\-]*"},{token:"variable",regex:"[a-z_\\-$][a-z0-9_\\-$]*\\b"},{token:"variable.language",regex:"#[a-z0-9-_]+"},{token:"variable.language",regex:"\\.[a-z0-9-_]+"},{token:"variable.language",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{token:"keyword.operator",regex:"<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scss_highlight_rules").ScssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/scss"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-sh.js b/js/ace/mode-sh.js
new file mode 100644
index 0000000..4d8c438
--- /dev/null
+++ b/js/ace/mode-sh.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=t.reservedKeywords="!|{|}|case|do|done|elif|else|esac|fi|for|if|in|then|until|while|&|;|export|local|read|typeset|unset|elif|select|set",o=t.languageConstructs="[|]|alias|bg|bind|break|builtin|cd|command|compgen|complete|continue|dirs|disown|echo|enable|eval|exec|exit|fc|fg|getopts|hash|help|history|jobs|kill|let|logout|popd|printf|pushd|pwd|return|set|shift|shopt|source|suspend|test|times|trap|type|ulimit|umask|unalias|wait",u=function(){var e=this.createKeywordMapper({keyword:s,"support.function.builtin":o,"invalid.deprecated":"debugger"},"identifier"),t="(?:(?:[1-9]\\d*)|(?:0))",n="(?:\\.\\d+)",r="(?:\\d+)",i="(?:(?:"+r+"?"+n+")|(?:"+r+"\\.))",u="(?:(?:"+i+"|"+r+")"+")",a="(?:"+u+"|"+i+")",f="(?:&"+r+")",l="[a-zA-Z_][a-zA-Z0-9_]*",c="(?:(?:\\$"+l+")|(?:"+l+"=))",h="(?:\\$(?:SHLVL|\\$|\\!|\\?))",p="(?:"+l+"\\s*\\(\\))";this.$rules={start:[{token:"constant",regex:/\\./},{token:["text","comment"],regex:/(^|\s)(#.*)$/},{token:"string",regex:'"',push:[{token:"constant.language.escape",regex:/\\(?:[$abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/},{token:"constant",regex:/\$\w+/},{token:"string",regex:'"',next:"pop"},{defaultToken:"string"}]},{regex:"<<<",token:"keyword.operator"},{stateName:"heredoc",regex:"(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)",onMatch:function(e,t,n){var r=e[2]=="-"?"indentedHeredoc":"heredoc",i=e.split(this.splitRegex);return n.push(r,i[4]),[{type:"constant",value:i[1]},{type:"text",value:i[2]},{type:"string",value:i[3]},{type:"support.class",value:i[4]},{type:"string",value:i[5]}]},rules:{heredoc:[{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}],indentedHeredoc:[{token:"string",regex:"^	+"},{onMatch:function(e,t,n){return e===n[1]?(n.shift(),n.shift(),this.next=n[0]||"start","support.class"):(this.next="","string")},regex:".*$",next:"start"}]}},{regex:"$",token:"empty",next:function(e,t){return t[0]==="heredoc"||t[0]==="indentedHeredoc"?t[0]:e}},{token:"variable.language",regex:h},{token:"variable",regex:c},{token:"support.function",regex:p},{token:"support.function",regex:f},{token:"string",start:"'",end:"'"},{token:"constant.numeric",regex:a},{token:"constant.numeric",regex:t+"\\b"},{token:e,regex:"[a-zA-Z_][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!="},{token:"paren.lparen",regex:"[\\[\\(\\{]"},{token:"paren.rparen",regex:"[\\]\\)\\}]"}]},this.normalizeRules()};r.inherits(u,i),t.ShHighlightRules=u}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sh_highlight_rules").ShHighlightRules,o=e("../range").Range,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=function(){this.HighlightRules=s,this.foldingRules=new u,this.$behaviour=new a};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[\:]\s*$/);o&&(r+=n)}return r};var e={pass:1,"return":1,raise:1,"break":1,"continue":1};this.checkOutdent=function(t,n,r){if(r!=="\r\n"&&r!=="\r"&&r!=="\n")return!1;var i=this.getTokenizer().getLineTokens(n.trim(),t).tokens;if(!i)return!1;do var s=i.pop();while(s&&(s.type=="comment"||s.type=="text"&&s.value.match(/^\s+$/)));return s?s.type=="keyword"&&e[s.value]:!1},this.autoOutdent=function(e,t,n){n+=1;var r=this.$getIndent(t.getLine(n)),i=t.getTabString();r.slice(-i.length)==i&&t.remove(new o(n,r.length-i.length,n,r.length))},this.$id="ace/mode/sh"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-sjs.js b/js/ace/mode-sjs.js
new file mode 100644
index 0000000..989c657
--- /dev/null
+++ b/js/ace/mode-sjs.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/sjs_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=new i({noES6:!0}),t="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",n=function(e){return e.isContextAware=!0,e},r=function(e){return{token:e.token,regex:e.regex,next:n(function(t,n){return n.length===0&&n.unshift(t),n.unshift(e.next),e.next})}},s=function(e){return{token:e.token,regex:e.regex,next:n(function(e,t){return t.shift(),t[0]||"start"})}};this.$rules=e.$rules,this.$rules.no_regex=[{token:"keyword",regex:"(waitfor|or|and|collapse|spawn|retract)\\b"},{token:"keyword.operator",regex:"(->|=>|\\.\\.)"},{token:"variable.language",regex:"(hold|default)\\b"},r({token:"string",regex:"`",next:"bstring"}),r({token:"string",regex:'"',next:"qqstring"}),r({token:"string",regex:'"',next:"qqstring"}),{token:["paren.lparen","text","paren.rparen"],regex:"(\\{)(\\s*)(\\|)",next:"block_arguments"}].concat(this.$rules.no_regex),this.$rules.block_arguments=[{token:"paren.rparen",regex:"\\|",next:"no_regex"}].concat(this.$rules.function_arguments),this.$rules.bstring=[{token:"constant.language.escape",regex:t},{token:"string",regex:"\\\\$",next:"bstring"},r({token:"paren.lparen",regex:"\\$\\{",next:"string_interp"}),r({token:"paren.lparen",regex:"\\$",next:"bstring_interp_single"}),s({token:"string",regex:"`"}),{defaultToken:"string"}],this.$rules.qqstring=[{token:"constant.language.escape",regex:t},{token:"string",regex:"\\\\$",next:"qqstring"},r({token:"paren.lparen",regex:"#\\{",next:"string_interp"}),s({token:"string",regex:'"'}),{defaultToken:"string"}];var o=[];for(var u=0;u<this.$rules.no_regex.length;u++){var a=this.$rules.no_regex[u],f=String(a.token);f.indexOf("paren")==-1&&(!a.next||a.next.isContextAware)&&o.push(a)}this.$rules.string_interp=[s({token:"paren.rparen",regex:"\\}"}),r({token:"paren.lparen",regex:"{",next:"string_interp"})].concat(o),this.$rules.bstring_interp_single=[{token:["identifier","paren.lparen"],regex:"(\\w+)(\\()",next:"bstring_interp_single_call"},s({token:"identifier",regex:"\\w*"})],this.$rules.bstring_interp_single_call=[r({token:"paren.lparen",regex:"\\(",next:"bstring_interp_single_call"}),s({token:"paren.rparen",regex:"\\)"})].concat(o)};r.inherits(o,s),t.SJSHighlightRules=o}),ace.define("ace/mode/sjs",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/sjs_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./sjs_highlight_rules").SJSHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/sjs"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-smarty.js b/js/ace/mode-smarty.js
new file mode 100644
index 0000000..8a92fe4
--- /dev/null
+++ b/js/ace/mode-smarty.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this);var e={start:[{include:"#comments"},{include:"#blocks"}],"#blocks":[{token:"punctuation.section.embedded.begin.smarty",regex:"\\{%?",push:[{token:"punctuation.section.embedded.end.smarty",regex:"%?\\}",next:"pop"},{include:"#strings"},{include:"#variables"},{include:"#lang"},{defaultToken:"source.smarty"}]}],"#comments":[{token:["punctuation.definition.comment.smarty","comment.block.smarty"],regex:"(\\{%?)(\\*)",push:[{token:"comment.block.smarty",regex:"\\*%?\\}",next:"pop"},{defaultToken:"comment.block.smarty"}]}],"#lang":[{token:"keyword.operator.smarty",regex:"(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b"},{token:"constant.language.smarty",regex:"\\b(?:TRUE|FALSE|true|false)\\b"},{token:"keyword.control.smarty",regex:"\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b"},{token:"variable.parameter.smarty",regex:"\\b[a-zA-Z]+="},{token:"support.function.built-in.smarty",regex:"\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b"},{token:"support.function.variable-modifier.smarty",regex:"\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)"}],"#strings":[{token:"punctuation.definition.string.begin.smarty",regex:"'",push:[{token:"punctuation.definition.string.end.smarty",regex:"'",next:"pop"},{token:"constant.character.escape.smarty",regex:"\\\\."},{defaultToken:"string.quoted.single.smarty"}]},{token:"punctuation.definition.string.begin.smarty",regex:'"',push:[{token:"punctuation.definition.string.end.smarty",regex:'"',next:"pop"},{token:"constant.character.escape.smarty",regex:"\\\\."},{defaultToken:"string.quoted.double.smarty"}]}],"#variables":[{token:["punctuation.definition.variable.smarty","variable.other.global.smarty"],regex:"\\b(\\$)(Smarty\\.)"},{token:["punctuation.definition.variable.smarty","variable.other.smarty"],regex:"(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.smarty","variable.other.property.smarty"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b"},{token:["keyword.operator.smarty","meta.function-call.object.smarty","punctuation.definition.variable.smarty","variable.other.smarty","punctuation.definition.variable.smarty"],regex:"(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))"}]},t=e.start;for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],t);Object.keys(e).forEach(function(t){this.$rules[t]||(this.$rules[t]=e[t])},this),this.normalizeRules()};s.metaData={fileTypes:["tpl"],foldingStartMarker:"\\{%?",foldingStopMarker:"%?\\}",name:"Smarty",scopeName:"text.html.smarty"},r.inherits(s,i),t.SmartyHighlightRules=s}),ace.define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./smarty_highlight_rules").SmartyHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.$id="ace/mode/smarty"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-snippets.js b/js/ace/mode-snippets.js
new file mode 100644
index 0000000..09fea16
--- /dev/null
+++ b/js/ace/mode-snippets.js
@@ -0,0 +1 @@
+ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/snippets",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e="SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME";this.$rules={start:[{token:"constant.language.escape",regex:/\\[\$}`\\]/},{token:"keyword",regex:"\\$(?:TM_)?(?:"+e+")\\b"},{token:"variable",regex:"\\$\\w+"},{onMatch:function(e,t,n){return n[1]?n[1]++:n.unshift(t,1),this.tokenName},tokenName:"markup.list",regex:"\\${",next:"varDecl"},{onMatch:function(e,t,n){return n[1]?(n[1]--,n[1]||n.splice(0,2),this.tokenName):"text"},tokenName:"markup.list",regex:"}"},{token:"doc.comment",regex:/^\${2}-{5,}$/}],varDecl:[{regex:/\d+\b/,token:"constant.numeric"},{token:"keyword",regex:"(?:TM_)?(?:"+e+")\\b"},{token:"variable",regex:"\\w+"},{regex:/:/,token:"punctuation.operator",next:"start"},{regex:/\//,token:"string.regex",next:"regexp"},{regex:"",next:"start"}],regexp:[{regex:/\\./,token:"escape"},{regex:/\[/,token:"regex.start",next:"charClass"},{regex:"/",token:"string.regex",next:"format"},{token:"string.regex",regex:"."}],charClass:[{regex:"\\.",token:"escape"},{regex:"\\]",token:"regex.end",next:"regexp"},{token:"string.regex",regex:"."}],format:[{regex:/\\[ulULE]/,token:"keyword"},{regex:/\$\d+/,token:"variable"},{regex:"/[gim]*:?",token:"string.regex",next:"start"},{token:"string",regex:"."}]}};r.inherits(o,s),t.SnippetHighlightRules=o;var u=function(){this.$rules={start:[{token:"text",regex:"^\\t",next:"sn-start"},{token:"invalid",regex:/^ \s*/},{token:"comment",regex:/^#.*/},{token:"constant.language.escape",regex:"^regex ",next:"regex"},{token:"constant.language.escape",regex:"^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"}],regex:[{token:"text",regex:"\\."},{token:"keyword",regex:"/"},{token:"empty",regex:"$",next:"start"}]},this.embedRules(o,"sn-",[{token:"text",regex:"^\\t",next:"sn-start"},{onMatch:function(e,t,n){return n.splice(n.length),this.tokenName},tokenName:"text",regex:"^(?!	)",next:"start"}])};r.inherits(u,s),t.SnippetGroupHighlightRules=u;var a=e("./folding/coffee").FoldMode,f=function(){this.HighlightRules=u,this.foldingRules=new a};r.inherits(f,i),function(){this.$indentWithTabs=!0,this.lineCommentStart="#",this.$id="ace/mode/snippets"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-soy_template.js b/js/ace/mode-soy_template.js
new file mode 100644
index 0000000..25586b4
--- /dev/null
+++ b/js/ace/mode-soy_template.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/soy_template_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html_highlight_rules").HtmlHighlightRules,s=function(){i.call(this);var e={start:[{include:"#template"},{include:"#if"},{include:"#comment-line"},{include:"#comment-block"},{include:"#comment-doc"},{include:"#call"},{include:"#css"},{include:"#param"},{include:"#print"},{include:"#msg"},{include:"#for"},{include:"#foreach"},{include:"#switch"},{include:"#tag"},{include:"text.html.basic"}],"#call":[{token:["punctuation.definition.tag.begin.soy","meta.tag.call.soy"],regex:"(\\{/?)(\\s*)(?=call|delcall)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{token:["entity.name.tag.soy","variable.parameter.soy"],regex:"(call|delcall)(\\s+[\\.\\w]+)"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b(data)(\\s*)(=)"},{defaultToken:"meta.tag.call.soy"}]}],"#comment-line":[{token:["comment.line.double-slash.soy","punctuation.definition.comment.soy","comment.line.double-slash.soy"],regex:"(\\s+)(//)(.*$)"}],"#comment-block":[{token:"punctuation.definition.comment.begin.soy",regex:"/\\*(?!\\*)",push:[{token:"punctuation.definition.comment.end.soy",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.soy"}]}],"#comment-doc":[{token:"punctuation.definition.comment.begin.soy",regex:"/\\*\\*(?!/)",push:[{token:"punctuation.definition.comment.end.soy",regex:"\\*/",next:"pop"},{token:["support.type.soy","text","variable.parameter.soy"],regex:"(@param|@param\\?)(\\s+)(\\w+)"},{defaultToken:"comment.block.documentation.soy"}]}],"#css":[{token:["punctuation.definition.tag.begin.soy","meta.tag.css.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(css)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"support.constant.soy",regex:"\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b"},{defaultToken:"meta.tag.css.soy"}]}],"#for":[{token:["punctuation.definition.tag.begin.soy","meta.tag.for.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(for)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"keyword.operator.soy",regex:"\\bin\\b"},{token:"support.function.soy",regex:"\\brange\\b"},{include:"#variable"},{include:"#number"},{include:"#primitive"},{defaultToken:"meta.tag.for.soy"}]}],"#foreach":[{token:["punctuation.definition.tag.begin.soy","meta.tag.foreach.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(foreach)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:"keyword.operator.soy",regex:"\\bin\\b"},{include:"#variable"},{defaultToken:"meta.tag.foreach.soy"}]}],"#function":[{token:"support.function.soy",regex:"\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b"}],"#if":[{token:["punctuation.definition.tag.begin.soy","meta.tag.if.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(if|elseif)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#operator"},{include:"#function"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{defaultToken:"meta.tag.if.soy"}]}],"#namespace":[{token:["entity.name.tag.soy","text","variable.parameter.soy"],regex:"(namespace|delpackage)(\\s+)([\\w\\.]+)"}],"#number":[{token:"constant.numeric",regex:"[\\d]+"}],"#operator":[{token:"keyword.operator.soy",regex:"==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:"}],"#param":[{token:["punctuation.definition.tag.begin.soy","meta.tag.param.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(param)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b([\\w]+)(\\s*)((?::)?)"},{defaultToken:"meta.tag.param.soy"}]}],"#primitive":[{token:"constant.language.soy",regex:"\\b(?:null|false|true)\\b"}],"#msg":[{token:["punctuation.definition.tag.begin.soy","meta.tag.msg.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(msg)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy"],regex:"\\b(meaning|desc)(\\s*)(=)"},{defaultToken:"meta.tag.msg.soy"}]}],"#print":[{token:["punctuation.definition.tag.begin.soy","meta.tag.print.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(print)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#print-parameter"},{include:"#number"},{include:"#primitive"},{include:"#attribute-lookup"},{defaultToken:"meta.tag.print.soy"}]}],"#print-parameter":[{token:"keyword.operator.soy",regex:"\\|"},{token:"variable.parameter.soy",regex:"noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate"}],"#special-character":[{token:"support.constant.soy",regex:"\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b"}],"#string-quoted-double":[{token:"string.quoted.double",regex:'"[^"]*"'}],"#string-quoted-single":[{token:"string.quoted.single",regex:"'[^']*'"}],"#switch":[{token:["punctuation.definition.tag.begin.soy","meta.tag.switch.soy","entity.name.tag.soy"],regex:"(\\{/?)(\\s*)(switch|case)\\b",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#variable"},{include:"#function"},{include:"#number"},{include:"#string-quoted-single"},{include:"#string-quoted-double"},{defaultToken:"meta.tag.switch.soy"}]}],"#attribute-lookup":[{token:"punctuation.definition.attribute-lookup.begin.soy",regex:"\\[",push:[{token:"punctuation.definition.attribute-lookup.end.soy",regex:"\\]",next:"pop"},{include:"#variable"},{include:"#function"},{include:"#operator"},{include:"#number"},{include:"#primitive"},{include:"#string-quoted-single"},{include:"#string-quoted-double"}]}],"#tag":[{token:"punctuation.definition.tag.begin.soy",regex:"\\{",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{include:"#namespace"},{include:"#variable"},{include:"#special-character"},{include:"#tag-simple"},{include:"#function"},{include:"#operator"},{include:"#attribute-lookup"},{include:"#number"},{include:"#primitive"},{include:"#print-parameter"}]}],"#tag-simple":[{token:"entity.name.tag.soy",regex:"{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})"}],"#template":[{token:["punctuation.definition.tag.begin.soy","meta.tag.template.soy"],regex:"(\\{/?)(\\s*)(?=template|deltemplate)",push:[{token:"punctuation.definition.tag.end.soy",regex:"\\}",next:"pop"},{token:["entity.name.tag.soy","text","entity.name.function.soy"],regex:"(template|deltemplate)(\\s+)([\\.\\w]+)",originalRegex:"(?<=template|deltemplate)\\s+([\\.\\w]+)"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.double.soy"],regex:'\\b(private)(\\s*)(=)(\\s*)("true"|"false")'},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.single.soy"],regex:"\\b(private)(\\s*)(=)(\\s*)('true'|'false')"},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.double.soy"],regex:'\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")'},{token:["entity.other.attribute-name.soy","text","keyword.operator.soy","text","string.quoted.single.soy"],regex:"\\b(autoescape)(\\s*)(=)(\\s*)('true'|'false'|'contextual')"},{defaultToken:"meta.tag.template.soy"}]}],"#variable":[{token:"variable.other.soy",regex:"\\$[\\w\\.]+"}]};for(var t in e)this.$rules[t]?this.$rules[t].unshift.call(this.$rules[t],e[t]):this.$rules[t]=e[t];this.normalizeRules()};s.metaData={comment:"SoyTemplate",fileTypes:["soy"],firstLineMatch:"\\{\\s*namespace\\b",foldingStartMarker:"\\{\\s*template\\s+[^\\}]*\\}",foldingStopMarker:"\\{\\s*/\\s*template\\s*\\}",name:"SoyTemplate",scopeName:"source.soy"},r.inherits(s,i),t.SoyTemplateHighlightRules=s}),ace.define("ace/mode/soy_template",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/soy_template_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./soy_template_highlight_rules").SoyTemplateHighlightRules,o=function(){i.call(this),this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/soy_template"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-space.js b/js/ace/mode-space.js
new file mode 100644
index 0000000..f13e8ef
--- /dev/null
+++ b/js/ace/mode-space.js
@@ -0,0 +1 @@
+ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/space_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"empty_line",regex:/ */,next:"key"},{token:"empty_line",regex:/$/,next:"key"}],key:[{token:"variable",regex:/\S+/},{token:"empty_line",regex:/$/,next:"start"},{token:"keyword.operator",regex:/ /,next:"value"}],value:[{token:"keyword.operator",regex:/$/,next:"start"},{token:"string",regex:/[^$]/}]}};r.inherits(s,i),t.SpaceHighlightRules=s}),ace.define("ace/mode/space",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/coffee","ace/mode/space_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./folding/coffee").FoldMode,o=e("./space_highlight_rules").SpaceHighlightRules,u=function(){this.HighlightRules=o,this.foldingRules=new s};r.inherits(u,i),function(){this.$id="ace/mode/space"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-sql.js b/js/ace/mode-sql.js
new file mode 100644
index 0000000..25a7372
--- /dev/null
+++ b/js/ace/mode-sql.js
@@ -0,0 +1 @@
+ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc|union",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-stylus.js b/js/ace/mode-stylus.js
new file mode 100644
index 0000000..dd5fd4a
--- /dev/null
+++ b/js/ace/mode-stylus.js
@@ -0,0 +1 @@
+ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=e("./css_highlight_rules"),o=function(){var e=this.createKeywordMapper({"support.type":s.supportType,"support.function":s.supportFunction,"support.constant":s.supportConstant,"support.constant.color":s.supportConstantColor,"support.constant.fonts":s.supportConstantFonts},"text",!0);this.$rules={start:[{token:"comment",regex:/\/\/.*$/},{token:"comment",regex:/\/\*/,next:"comment"},{token:["entity.name.function.stylus","text"],regex:"^([-a-zA-Z_][-\\w]*)?(\\()"},{token:["entity.other.attribute-name.class.stylus"],regex:"\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*"},{token:["entity.language.stylus"],regex:"^ *&"},{token:["variable.language.stylus"],regex:"(arguments)"},{token:["keyword.stylus"],regex:"@[-\\w]+"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:s.pseudoElements},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:s.pseudoClasses},{token:["entity.name.tag.stylus"],regex:"(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)"},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation.definition.entity.stylus","entity.other.attribute-name.id.stylus"],regex:"(#)([a-zA-Z][a-zA-Z0-9_-]*)"},{token:"meta.vendor-prefix.stylus",regex:"-webkit-|-moz\\-|-ms-|-o-"},{token:"keyword.control.stylus",regex:"(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b"},{token:"keyword.operator.stylus",regex:"!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!="},{token:"keyword.operator.stylus",regex:"(?:in|is(?:nt)?|not)\\b"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:s.numRe},{token:"keyword",regex:"(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"start"}],qstring:[{token:"string",regex:"[^'\\\\]+"},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"start"}]}};r.inherits(o,i),t.StylusHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/stylus",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/stylus_highlight_rules","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./stylus_highlight_rules").StylusHighlightRules,o=e("./folding/coffee").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/stylus"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-svg.js b/js/ace/mode-svg.js
new file mode 100644
index 0000000..41ee9d8
--- /dev/null
+++ b/js/ace/mode-svg.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/svg_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=e("./xml_highlight_rules").XmlHighlightRules,o=function(){s.call(this),this.embedTagRules(i,"js-","script"),this.normalizeRules()};r.inherits(o,s),t.SvgHighlightRules=o}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/svg",["require","exports","module","ace/lib/oop","ace/mode/xml","ace/mode/javascript","ace/mode/svg_highlight_rules","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./xml").Mode,s=e("./javascript").Mode,o=e("./svg_highlight_rules").SvgHighlightRules,u=e("./folding/mixed").FoldMode,a=e("./folding/xml").FoldMode,f=e("./folding/cstyle").FoldMode,l=function(){i.call(this),this.HighlightRules=o,this.createModeDelegates({"js-":s}),this.foldingRules=new u(new a,{"js-":new f})};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.$id="ace/mode/svg"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-tcl.js b/js/ace/mode-tcl.js
new file mode 100644
index 0000000..bcc263a
--- /dev/null
+++ b/js/ace/mode-tcl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/tcl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"#.*\\\\$",next:"commentfollow"},{token:"comment",regex:"#.*$"},{token:"support.function",regex:"[\\\\]$",next:"splitlineStart"},{token:"text",regex:'[\\\\](?:["]|[{]|[}]|[[]|[]]|[$]|[])'},{token:"text",regex:"^|[^{][;][^}]|[/\r/]",next:"commandItem"},{token:"string",regex:'[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:'[ ]*["]',next:"qqstring"},{token:"variable.instance",regex:"[$]",next:"variable"},{token:"support.function",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"},{token:"identifier",regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"paren.lparen",regex:"[[{]",next:"commandItem"},{token:"paren.lparen",regex:"[(]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],commandItem:[{token:"comment",regex:"#.*\\\\$",next:"commentfollow"},{token:"comment",regex:"#.*$",next:"start"},{token:"string",regex:'[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"variable.instance",regex:"[$]",next:"variable"},{token:"support.function",regex:"(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])",next:"commandItem"},{token:"support.function",regex:"[a-zA-Z0-9_/]+(?:[:][:])",next:"commandItem"},{token:"support.function",regex:"(?:[:][:])",next:"commandItem"},{token:"paren.rparen",regex:"[\\])}]"},{token:"support.function",regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::"},{token:"keyword",regex:"[a-zA-Z0-9_/]+",next:"start"}],commentfollow:[{token:"comment",regex:".*\\\\$",next:"commentfollow"},{token:"comment",regex:".+",next:"start"}],splitlineStart:[{token:"text",regex:"^.",next:"start"}],variable:[{token:"variable.instance",regex:"[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?",next:"start"},{token:"variable.instance",regex:"{?[a-zA-Z_\\d]+}?",next:"start"}],qqstring:[{token:"string",regex:'(?:[^\\\\]|\\\\.)*?["]',next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.TclHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/tcl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/cstyle","ace/mode/tcl_highlight_rules","ace/mode/matching_brace_outdent","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./folding/cstyle").FoldMode,o=e("./tcl_highlight_rules").TclHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=function(){this.HighlightRules=o,this.$outdent=new u,this.foldingRules=new s};r.inherits(f,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var o=t.match(/^.*[\{\(\[]\s*$/);o&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/tcl"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-tex.js b/js/ace/mode-tex.js
new file mode 100644
index 0000000..37d98d4
--- /dev/null
+++ b/js/ace/mode-tex.js
@@ -0,0 +1 @@
+ace.define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(e){e||(e="text"),this.$rules={start:[{token:"comment",regex:"%.*$"},{token:e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b",next:"nospell"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])}]"},{token:e,regex:"\\s+"}],nospell:[{token:"comment",regex:"%.*$",next:"start"},{token:"nospell."+e,regex:"\\\\[$&%#\\{\\}]"},{token:"keyword",regex:"\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b"},{token:"keyword",regex:"\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])",next:"start"},{token:"paren.keyword.operator",regex:"[[({]"},{token:"paren.keyword.operator",regex:"[\\])]"},{token:"paren.keyword.operator",regex:"}",next:"start"},{token:"nospell."+e,regex:"\\s+"},{token:"nospell."+e,regex:"\\w+"}]}};r.inherits(o,s),t.TexHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/tex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./tex_highlight_rules").TexHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=function(e){e?this.HighlightRules=s:this.HighlightRules=o,this.$outdent=new u};r.inherits(a,i),function(){this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.allowAutoInsert=function(){return!1},this.$id="ace/mode/tex"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/mode-text.js b/js/ace/mode-text.js
new file mode 100644
index 0000000..e69de29
diff --git a/js/ace/mode-textile.js b/js/ace/mode-textile.js
new file mode 100644
index 0000000..68a283f
--- /dev/null
+++ b/js/ace/mode-textile.js
@@ -0,0 +1 @@
+ace.define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:function(e){return e.charAt(0)=="h"?"markup.heading."+e.charAt(1):"markup.heading"},regex:"h1|h2|h3|h4|h5|h6|bq|p|bc|pre",next:"blocktag"},{token:"keyword",regex:"[\\*]+|[#]+"},{token:"text",regex:".+"}],blocktag:[{token:"keyword",regex:"\\. ",next:"start"},{token:"keyword",regex:"\\(",next:"blocktagproperties"}],blocktagproperties:[{token:"keyword",regex:"\\)",next:"blocktag"},{token:"string",regex:"[a-zA-Z0-9\\-_]+"},{token:"keyword",regex:"#"}]}};r.inherits(s,i),t.TextileHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./textile_highlight_rules").TextileHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return e=="intag"?n:""},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/textile"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-toml.js b/js/ace/mode-toml.js
new file mode 100644
index 0000000..1028aa5
--- /dev/null
+++ b/js/ace/mode-toml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e=this.createKeywordMapper({"constant.language.boolean":"true|false"},"identifier"),t="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b";this.$rules={start:[{token:"comment.toml",regex:/#.*$/},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:["variable.keygroup.toml"],regex:"(?:^\\s*)(\\[([^\\]]+)\\])"},{token:e,regex:t},{token:"support.date.toml",regex:"\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)"},{token:"constant.numeric.toml",regex:"-?\\d+(\\.?\\d+)?"}],qqstring:[{token:"string",regex:"\\\\$",next:"qqstring"},{token:"constant.language.escape",regex:'\\\\[0tnr"\\\\]'},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}]}};r.inherits(s,i),t.TomlHighlightRules=s}),ace.define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(){};r.inherits(o,s),function(){this.foldingStartMarker=/^\s*\[([^\])]*)]\s*(?:$|[;#])/,this.getFoldWidgetRange=function(e,t,n){var r=this.foldingStartMarker,s=e.getLine(n),o=s.match(r);if(!o)return;var u=o[1]+".",a=s.length,f=e.getLength(),l=n,c=n;while(++n<f){s=e.getLine(n);if(/^\s*$/.test(s))continue;o=s.match(r);if(o&&o[1].lastIndexOf(u,0)!==0)break;c=n}if(c>l){var h=e.getLine(c).length;return new i(l,a,c,h)}}}.call(o.prototype)}),ace.define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./toml_highlight_rules").TomlHighlightRules,o=e("./folding/ini").FoldMode,u=function(){this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="#",this.$id="ace/mode/toml"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-twig.js b/js/ace/mode-twig.js
new file mode 100644
index 0000000..54b63f8
--- /dev/null
+++ b/js/ace/mode-twig.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./html_highlight_rules").HtmlHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){s.call(this);var e="autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim";e=e+"|end"+e.replace(/\|/g,"|end");var t="abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode",n="attribute|constant|cycle|date|dump|parent|random|range|template_from_string",r="constant|divisibleby|sameas|defined|empty|even|iterable|odd",i="null|none|true|false",o="b-and|b-xor|b-or|in|is|and|or|not",u=this.createKeywordMapper({"keyword.control.twig":e,"support.function.twig":[t,n,r].join("|"),"keyword.operator.twig":o,"constant.language.twig":i},"identifier");for(var a in this.$rules)this.$rules[a].unshift({token:"variable.other.readwrite.local.twig",regex:"\\{\\{-?",push:"twig-start"},{token:"meta.tag.twig",regex:"\\{%-?",push:"twig-start"},{token:"comment.block.twig",regex:"\\{#-?",push:"twig-comment"});this.$rules["twig-comment"]=[{token:"comment.block.twig",regex:".*-?#\\}",next:"pop"}],this.$rules["twig-start"]=[{token:"variable.other.readwrite.local.twig",regex:"-?\\}\\}",next:"pop"},{token:"meta.tag.twig",regex:"-?%\\}",next:"pop"},{token:"string",regex:"'",next:"twig-qstring"},{token:"string",regex:'"',next:"twig-qqstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:u,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator.assignment",regex:"=|~"},{token:"keyword.operator.comparison",regex:"==|!=|<|>|>=|<=|==="},{token:"keyword.operator.arithmetic",regex:"\\+|-|/|%|//|\\*|\\*\\*"},{token:"keyword.operator.other",regex:"\\.\\.|\\|"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./},{token:"paren.lparen",regex:/[\[\({]/},{token:"paren.rparen",regex:/[\])}]/},{token:"text",regex:"\\s+"}],this.$rules["twig-qqstring"]=[{token:"constant.language.escape",regex:/\\[\\"$#ntr]|#{[^"}]*}/},{token:"string",regex:'"',next:"twig-start"},{defaultToken:"string"}],this.$rules["twig-qstring"]=[{token:"constant.language.escape",regex:/\\[\\'ntr]}/},{token:"string",regex:"'",next:"twig-start"},{defaultToken:"string"}],this.normalizeRules()};r.inherits(u,o),t.TwigHighlightRules=u}),ace.define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./twig_highlight_rules").TwigHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=function(){i.call(this),this.HighlightRules=s,this.$outdent=new o};r.inherits(u,i),function(){this.blockComment={start:"{#",end:"#}"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"){var u=t.match(/^.*[\{\(\[]\s*$/);u&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/twig"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-typescript.js b/js/ace/mode-typescript.js
new file mode 100644
index 0000000..b45fe2f
--- /dev/null
+++ b/js/ace/mode-typescript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript_highlight_rules").JavaScriptHighlightRules,s=function(){var e=[{token:["keyword.operator.ts","text","variable.parameter.function.ts","text"],regex:"\\b(module)(\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*\\{)"},{token:["storage.type.variable.ts","text","keyword.other.ts","text"],regex:"(super)(\\s*\\()([a-zA-Z0-9,_?.$\\s]+\\s*)(\\))"},{token:["entity.name.function.ts","paren.lparen","paren.rparen"],regex:"([a-zA-Z_?.$][\\w?.$]*)(\\()(\\))"},{token:["variable.parameter.function.ts","text","variable.parameter.function.ts"],regex:"([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*:\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)"},{token:["keyword.operator.ts"],regex:"(?:\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\b)"},{token:["storage.type.variable.ts"],regex:"(?:\\b(this\\.|string\\b|bool\\b|number)\\b)"},{token:["keyword.operator.ts","storage.type.variable.ts","keyword.operator.ts","storage.type.variable.ts"],regex:"(class)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)(extends)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)?"},{token:"keyword",regex:"(?:super|export|class|extends|import)\\b"}],t=(new i).getRules();t.start=e.concat(t.start),this.$rules=t};r.inherits(s,i),t.TypeScriptHighlightRules=s}),ace.define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./javascript").Mode,s=e("./typescript_highlight_rules").TypeScriptHighlightRules,o=e("./behaviour/cstyle").CstyleBehaviour,u=e("./folding/cstyle").FoldMode,a=e("./matching_brace_outdent").MatchingBraceOutdent,f=function(){this.HighlightRules=s,this.$outdent=new a,this.$behaviour=new o,this.foldingRules=new u};r.inherits(f,i),function(){this.createWorker=function(e){return null},this.$id="ace/mode/typescript"}.call(f.prototype),t.Mode=f})
\ No newline at end of file
diff --git a/js/ace/mode-vala.js b/js/ace/mode-vala.js
new file mode 100644
index 0000000..851567b
--- /dev/null
+++ b/js/ace/mode-vala.js
@@ -0,0 +1 @@
+ace.define("ace/mode/vala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.using.vala","keyword.other.using.vala","meta.using.vala","storage.modifier.using.vala","meta.using.vala","punctuation.terminator.vala"],regex:"^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?"},{include:"#code"}],"#all-types":[{include:"#primitive-arrays"},{include:"#primitive-types"},{include:"#object-types"}],"#annotations":[{token:["storage.type.annotation.vala","punctuation.definition.annotation-arguments.begin.vala"],regex:"(@[^ (]+)(\\()",push:[{token:"punctuation.definition.annotation-arguments.end.vala",regex:"\\)",next:"pop"},{token:["constant.other.key.vala","text","keyword.operator.assignment.vala"],regex:"(\\w*)(\\s*)(=)"},{include:"#code"},{token:"punctuation.seperator.property.vala",regex:","},{defaultToken:"meta.declaration.annotation.vala"}]},{token:"storage.type.annotation.vala",regex:"@\\w*"}],"#anonymous-classes-and-new":[{token:"keyword.control.new.vala",regex:"\\bnew\\b",push_disabled:[{token:"text",regex:"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)",next:"pop"},{token:["storage.type.vala","text"],regex:"(\\w+)(\\s*)(?=\\[)",push:[{token:"text",regex:"}|(?=;|\\))",next:"pop"},{token:"text",regex:"\\[",push:[{token:"text",regex:"\\]",next:"pop"},{include:"#code"}]},{token:"text",regex:"{",push:[{token:"text",regex:"(?=})",next:"pop"},{include:"#code"}]}]},{token:"text",regex:"(?=\\w.*\\()",push:[{token:"text",regex:"(?<=\\))",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:"(?<=\\))",next:"pop"},{include:"#object-types"},{token:"text",regex:"\\(",push:[{token:"text",regex:"\\)",next:"pop"},{include:"#code"}]}]},{token:"meta.inner-class.vala",regex:"{",push:[{token:"meta.inner-class.vala",regex:"}",next:"pop"},{include:"#class-body"},{defaultToken:"meta.inner-class.vala"}]}]}],"#assertions":[{token:["keyword.control.assert.vala","meta.declaration.assertion.vala"],regex:"\\b(assert|requires|ensures)(\\s)",push:[{token:"meta.declaration.assertion.vala",regex:"$",next:"pop"},{token:"keyword.operator.assert.expression-seperator.vala",regex:":"},{include:"#code"},{defaultToken:"meta.declaration.assertion.vala"}]}],"#class":[{token:"meta.class.vala",regex:"(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)",push:[{token:"paren.vala",regex:"}",next:"pop"},{include:"#storage-modifiers"},{include:"#comments"},{token:["storage.modifier.vala","meta.class.identifier.vala","entity.name.type.class.vala"],regex:"(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)"},{token:"storage.modifier.extends.vala",regex:":",push:[{token:"meta.definition.class.inherited.classes.vala",regex:"(?={|,)",next:"pop"},{include:"#object-types-inherited"},{include:"#comments"},{defaultToken:"meta.definition.class.inherited.classes.vala"}]},{token:["storage.modifier.implements.vala","meta.definition.class.implemented.interfaces.vala"],regex:"(,)(\\s)",push:[{token:"meta.definition.class.implemented.interfaces.vala",regex:"(?=\\{)",next:"pop"},{include:"#object-types-inherited"},{include:"#comments"},{defaultToken:"meta.definition.class.implemented.interfaces.vala"}]},{token:"paren.vala",regex:"{",push:[{token:"paren.vala",regex:"(?=})",next:"pop"},{include:"#class-body"},{defaultToken:"meta.class.body.vala"}]},{defaultToken:"meta.class.vala"}],comment:"attempting to put namespace in here."}],"#class-body":[{include:"#comments"},{include:"#class"},{include:"#enums"},{include:"#methods"},{include:"#annotations"},{include:"#storage-modifiers"},{include:"#code"}],"#code":[{include:"#comments"},{include:"#class"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#code"}]},{include:"#assertions"},{include:"#parens"},{include:"#constants-and-special-vars"},{include:"#anonymous-classes-and-new"},{include:"#keywords"},{include:"#storage-modifiers"},{include:"#strings"},{include:"#all-types"}],"#comments":[{token:"punctuation.definition.comment.vala",regex:"/\\*\\*/"},{include:"text.html.javadoc"},{include:"#comments-inline"}],"#comments-inline":[{token:"punctuation.definition.comment.vala",regex:"/\\*",push:[{token:"punctuation.definition.comment.vala",regex:"\\*/",next:"pop"},{defaultToken:"comment.block.vala"}]},{token:["text","punctuation.definition.comment.vala","comment.line.double-slash.vala"],regex:"(\\s*)(//)(.*$)"}],"#constants-and-special-vars":[{token:"constant.language.vala",regex:"\\b(?:true|false|null)\\b"},{token:"variable.language.vala",regex:"\\b(?:this|base)\\b"},{token:"constant.numeric.vala",regex:"\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b"},{token:["keyword.operator.dereference.vala","constant.other.vala"],regex:"((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b"}],"#enums":[{token:"text",regex:"^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",push:[{token:"text",regex:"(?=;|})",next:"pop"},{token:"constant.other.enum.vala",regex:"\\w+",push:[{token:"meta.enum.vala",regex:"(?=,|;|})",next:"pop"},{include:"#parens"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#class-body"}]},{defaultToken:"meta.enum.vala"}]}]}],"#keywords":[{token:"keyword.control.catch-exception.vala",regex:"\\b(?:try|catch|finally|throw)\\b"},{token:"keyword.control.vala",regex:"\\?|:|\\?\\?"},{token:"keyword.control.vala",regex:"\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b"},{token:"keyword.operator.vala",regex:"\\b(?:typeof|is|as)\\b"},{token:"keyword.operator.comparison.vala",regex:"==|!=|<=|>=|<>|<|>"},{token:"keyword.operator.assignment.vala",regex:"="},{token:"keyword.operator.increment-decrement.vala",regex:"\\-\\-|\\+\\+"},{token:"keyword.operator.arithmetic.vala",regex:"\\-|\\+|\\*|\\/|%"},{token:"keyword.operator.logical.vala",regex:"!|&&|\\|\\|"},{token:"keyword.operator.dereference.vala",regex:"\\.(?=\\S)",originalRegex:"(?<=\\S)\\.(?=\\S)"},{token:"punctuation.terminator.vala",regex:";"},{token:"keyword.operator.ownership",regex:"owned|unowned"}],"#methods":[{token:"meta.method.vala",regex:"(?!new)(?=\\w.*\\s+)(?=[^=]+\\()",push:[{token:"paren.vala",regex:"}|(?=;)",next:"pop"},{include:"#storage-modifiers"},{token:["entity.name.function.vala","meta.method.identifier.vala"],regex:"([\\~\\w\\.]+)(\\s*\\()",push:[{token:"meta.method.identifier.vala",regex:"\\)",next:"pop"},{include:"#parameters"},{defaultToken:"meta.method.identifier.vala"}]},{token:"meta.method.return-type.vala",regex:"(?=\\w.*\\s+\\w+\\s*\\()",push:[{token:"meta.method.return-type.vala",regex:"(?=\\w+\\s*\\()",next:"pop"},{include:"#all-types"},{defaultToken:"meta.method.return-type.vala"}]},{include:"#throws"},{token:"paren.vala",regex:"{",push:[{token:"paren.vala",regex:"(?=})",next:"pop"},{include:"#code"},{defaultToken:"meta.method.body.vala"}]},{defaultToken:"meta.method.vala"}]}],"#namespace":[{token:"text",regex:"^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))",push:[{token:"text",regex:"(?=;|})",next:"pop"},{token:"constant.other.namespace.vala",regex:"\\w+",push:[{token:"meta.namespace.vala",regex:"(?=,|;|})",next:"pop"},{include:"#parens"},{token:"text",regex:"{",push:[{token:"text",regex:"}",next:"pop"},{include:"#code"}]},{defaultToken:"meta.namespace.vala"}]}],comment:"This is not quite right. See the class grammar right now"}],"#object-types":[{token:"storage.type.generic.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,\\?<\\[()\\]]",TODO:"FIXME: regexp doesn't have js equivalent",originalRegex:">|[^\\w\\s,\\?<\\[(?:[,]+)\\]]",next:"pop"},{include:"#object-types"},{token:"storage.type.generic.vala",regex:"<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,\\[\\]<]",next:"pop"},{defaultToken:"storage.type.generic.vala"}],comment:"This is just to support <>'s with no actual type prefix"},{defaultToken:"storage.type.generic.vala"}]},{token:"storage.type.object.array.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)",push:[{token:"storage.type.object.array.vala",regex:"(?=[^\\]\\s])",next:"pop"},{token:"text",regex:"\\[",push:[{token:"text",regex:"\\]",next:"pop"},{include:"#code"}]},{defaultToken:"storage.type.object.array.vala"}]},{token:["storage.type.vala","keyword.operator.dereference.vala","storage.type.vala"],regex:"\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)"}],"#object-types-inherited":[{token:"entity.other.inherited-class.vala",regex:"\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<",push:[{token:"entity.other.inherited-class.vala",regex:">|[^\\w\\s,<]",next:"pop"},{include:"#object-types"},{token:"storage.type.generic.vala",regex:"<",push:[{token:"storage.type.generic.vala",regex:">|[^\\w\\s,<]",next:"pop"},{defaultToken:"storage.type.generic.vala"}],comment:"This is just to support <>'s with no actual type prefix"},{defaultToken:"entity.other.inherited-class.vala"}]},{token:["entity.other.inherited-class.vala","keyword.operator.dereference.vala","entity.other.inherited-class.vala"],regex:"\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)"}],"#parameters":[{token:"storage.modifier.vala",regex:"final"},{include:"#primitive-arrays"},{include:"#primitive-types"},{include:"#object-types"},{token:"variable.parameter.vala",regex:"\\w+"}],"#parens":[{token:"text",regex:"\\(",push:[{token:"text",regex:"\\)",next:"pop"},{include:"#code"}]}],"#primitive-arrays":[{token:"storage.type.primitive.array.vala",regex:"\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b"}],"#primitive-types":[{token:"storage.type.primitive.vala",regex:"\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b",comment:"var is not really a primitive, but acts like one in most cases"}],"#storage-modifiers":[{token:"storage.modifier.vala",regex:"\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b",comment:"Not sure about unsafe and readonly"}],"#strings":[{token:"punctuation.definition.string.begin.vala",regex:'@"',push:[{token:"punctuation.definition.string.end.vala",regex:'"',next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))"},{defaultToken:"string.quoted.interpolated.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:'"',push:[{token:"punctuation.definition.string.end.vala",regex:'"',next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\."},{token:"constant.character.escape.vala",regex:"%[\\w\\.\\-]+"},{defaultToken:"string.quoted.double.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:"'",push:[{token:"punctuation.definition.string.end.vala",regex:"'",next:"pop"},{token:"constant.character.escape.vala",regex:"\\\\."},{defaultToken:"string.quoted.single.vala"}]},{token:"punctuation.definition.string.begin.vala",regex:'"""',push:[{token:"punctuation.definition.string.end.vala",regex:'"""',next:"pop"},{token:"constant.character.escape.vala",regex:"%[\\w\\.\\-]+"},{defaultToken:"string.quoted.triple.vala"}]}],"#throws":[{token:"storage.modifier.vala",regex:"throws",push:[{token:"meta.throwables.vala",regex:"(?={|;)",next:"pop"},{include:"#object-types"},{defaultToken:"meta.throwables.vala"}]}],"#values":[{include:"#strings"},{include:"#object-types"},{include:"#constants-and-special-vars"}]},this.normalizeRules()};s.metaData={comment:"Based heavily on the Java bundle's language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n",fileTypes:["vala"],foldingStartMarker:"(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)",foldingStopMarker:"^\\s*(\\}|// \\}\\}\\}$)",name:"Vala",scopeName:"source.vala"},r.inherits(s,i),t.ValaHighlightRules=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./vala_highlight_rules").ValaHighlightRules,u=e("./folding/cstyle").FoldMode,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=e("./matching_brace_outdent").MatchingBraceOutdent,c=function(){this.HighlightRules=o,this.$outdent=new l,this.$behaviour=new a,this.foldingRules=new f};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/vala"}.call(c.prototype),t.Mode=c})
\ No newline at end of file
diff --git a/js/ace/mode-vbscript.js b/js/ace/mode-vbscript.js
new file mode 100644
index 0000000..331221e
--- /dev/null
+++ b/js/ace/mode-vbscript.js
@@ -0,0 +1 @@
+ace.define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:["meta.ending-space"],regex:"$"},{token:[null],regex:"^(?=\\t)",next:"state_3"},{token:[null],regex:"^(?= )",next:"state_4"},{token:["text","storage.type.function.asp","text","entity.name.function.asp","text","punctuation.definition.parameters.asp","variable.parameter.function.asp","punctuation.definition.parameters.asp"],regex:"^(\\s*)(Function|Sub)(\\s*)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))"},{token:"punctuation.definition.comment.asp",regex:"'|REM",next:"comment"},{token:["keyword.control.asp"],regex:"\\b(?:If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\b"},{token:"keyword.operator.asp",regex:"\\b(?:Mod|And|Not|Or|Xor|as)\\b"},{token:"storage.type.asp",regex:"Dim|Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End sub|End Function|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo"},{token:"storage.modifier.asp",regex:"\\b(?:Private|Public|Default)\\b"},{token:"constant.language.asp",regex:"\\b(?:Empty|False|Nothing|Null|True)\\b"},{token:"punctuation.definition.string.begin.asp",regex:'"',next:"string"},{token:["punctuation.definition.variable.asp"],regex:"(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*"},{token:"support.class.asp",regex:"\\b(?:Application|ObjectContext|Request|Response|Server|Session)\\b"},{token:"support.class.collection.asp",regex:"\\b(?:Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\b"},{token:"support.constant.asp",regex:"\\b(?:TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\b"},{token:"support.function.asp",regex:"\\b(?:Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\b"},{token:"support.function.event.asp",regex:"\\b(?:Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\b"},{token:"support.function.vb.asp",regex:"\\b(?:Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\b"},{token:["constant.numeric.asp"],regex:"-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b"},{token:"support.type.vb.asp",regex:"\\b(?:vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\b"},{token:["entity.name.function.asp"],regex:"(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))"},{token:["keyword.operator.asp"],regex:"\\-|\\+|\\*\\/|\\>|\\<|\\=|\\&"}],state_3:[{token:["meta.odd-tab.tabs","meta.even-tab.tabs"],regex:"(\\t)(\\t)?"},{token:"meta.leading-space",regex:"(?=[^\\t])",next:"start"},{token:"meta.leading-space",regex:".",next:"state_3"}],state_4:[{token:["meta.odd-tab.spaces","meta.even-tab.spaces"],regex:"(  )(  )?"},{token:"meta.leading-space",regex:"(?=[^ ])",next:"start"},{defaultToken:"meta.leading-space"}],comment:[{token:"comment.line.apostrophe.asp",regex:"$|(?=(?:%>))",next:"start"},{defaultToken:"comment.line.apostrophe.asp"}],string:[{token:"constant.character.escape.apostrophe.asp",regex:'""'},{token:"string.quoted.double.asp",regex:'"',next:"start"},{defaultToken:"string.quoted.double.asp"}]}};r.inherits(s,i),t.VBScriptHighlightRules=s}),ace.define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vbscript_highlight_rules").VBScriptHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart=["'","REM"],this.$id="ace/mode/vbscript"}.call(o.prototype),t.Mode=o})
\ No newline at end of file
diff --git a/js/ace/mode-velocity.js b/js/ace/mode-velocity.js
new file mode 100644
index 0000000..7163147
--- /dev/null
+++ b/js/ace/mode-velocity.js
@@ -0,0 +1 @@
+ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",s="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+r+")(\\.)(prototype)(\\.)("+r+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+r+")(\\.)("+r+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+r+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+r+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:r},{token:"keyword.operator",regex:/--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:r},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],comment:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],line_comment_regex_allowed:[i.getTagRule(),{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment",caseInsensitive:!0}],line_comment:[i.getTagRule(),{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment",caseInsensitive:!0}],qqstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:s},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!e||!e.noES6)&&this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)return n.unshift("start",t),"paren";if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:s},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(</?)([-_a-zA-Z0-9:]+)",next:"tag_stuff"}],tag_stuff:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:"<!--",end:"-->"},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./html_highlight_rules").HtmlHighlightRules,u=function(){o.call(this);var e=i.arrayToMap("true|false|null".split("|")),t=i.arrayToMap("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool".split("|")),n=i.arrayToMap("$contentRoot|$foreach".split("|")),r=i.arrayToMap("#set|#macro|#include|#parse|#if|#elseif|#else|#foreach|#break|#end|#stop".split("|"));this.$rules.start.push({token:"comment",regex:"##.*$"},{token:"comment.block",regex:"#\\*",next:"vm_comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(i){return r.hasOwnProperty(i)?"keyword":e.hasOwnProperty(i)?"constant.language":n.hasOwnProperty(i)?"variable.language":t.hasOwnProperty(i)||t.hasOwnProperty(i.substring(1))?"support.function":i=="debugger"?"invalid.deprecated":i.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)?"variable":"identifier"},regex:"[a-zA-Z$#][a-zA-Z0-9_]*\\b"},{token:"keyword.operator",regex:"!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}),this.$rules.vm_comment=[{token:"comment",regex:"\\*#|-->",next:"start"},{defaultToken:"comment"}],this.$rules.vm_start=[{token:"variable",regex:"}",next:"pop"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:function(i){return r.hasOwnProperty(i)?"keyword":e.hasOwnProperty(i)?"constant.language":n.hasOwnProperty(i)?"variable.language":t.hasOwnProperty(i)||t.hasOwnProperty(i.substring(1))?"support.function":i=="debugger"?"invalid.deprecated":i.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)?"variable":"identifier"},regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|"},{token:"lparen",regex:"[[({]"},{token:"rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}];for(var s in this.$rules)this.$rules[s].unshift({token:"variable",regex:"\\${",push:"vm_start"});this.normalizeRules()};r.inherits(u,s),t.VelocityHighlightRules=u}),ace.define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="##")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="##")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="##"&&s[i]=="##")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="##"&&o[i]=="##"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/velocity",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/velocity_highlight_rules","ace/mode/folding/velocity"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./html").Mode,s=e("./velocity_highlight_rules").VelocityHighlightRules,o=e("./folding/velocity").FoldMode,u=function(){i.call(this),this.HighlightRules=s,this.foldingRules=new o};r.inherits(u,i),function(){this.lineCommentStart="##",this.blockComment={start:"#*",end:"*#"},this.$id="ace/mode/velocity"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-verilog.js b/js/ace/mode-verilog.js
new file mode 100644
index 0000000..9883bd3
--- /dev/null
+++ b/js/ace/mode-verilog.js
@@ -0,0 +1 @@
+ace.define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xorbegin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|macromodule|module|primitive|repeat|specify|table|task|while",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"//.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VerilogHighlightRules=s}),ace.define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/verilog_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./verilog_highlight_rules").VerilogHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/verilog"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-vhdl.js b/js/ace/mode-vhdl.js
new file mode 100644
index 0000000..94a061c
--- /dev/null
+++ b/js/ace/mode-vhdl.js
@@ -0,0 +1 @@
+ace.define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="access|after|ailas|all|architecture|assert|attribute|begin|block|buffer|bus|case|component|configuration|disconnect|downto|else|elsif|end|entity|file|for|function|generate|generic|guarded|if|impure|in|inertial|inout|is|label|linkage|literal|loop|mapnew|next|of|on|open|others|out|port|process|pure|range|record|reject|report|return|select|shared|subtype|then|to|transport|type|unaffected|united|until|wait|when|while|with",t="bit|bit_vector|boolean|character|integer|line|natural|positive|real|register|severity|signal|signed|std_logic|std_logic_vector|string||text|time|unsigned|variable",n="array|constant",r="abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|srasrl|xnor|xor",i="true|false|null",s=this.createKeywordMapper({"keyword.operator":r,keyword:e,"constant.language":i,"storage.modifier":n,"storage.type":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"keyword",regex:"\\s*(?:library|package|use)\\b"},{token:s,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>"},{token:"punctuation.operator",regex:"\\'|\\:|\\,|\\;|\\."},{token:"paren.lparen",regex:"[[(]"},{token:"paren.rparen",regex:"[\\])]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.VHDLHighlightRules=s}),ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./vhdl_highlight_rules").VHDLHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/vhdl"}.call(u.prototype),t.Mode=u})
\ No newline at end of file
diff --git a/js/ace/mode-xml.js b/js/ace/mode-xml.js
new file mode 100644
index 0000000..e155bf9
--- /dev/null
+++ b/js/ace/mode-xml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[a-zA-Z][-_a-zA-Z0-9]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"</"},{token:"text.tag-open.xml",regex:"<"},{include:"reference"},{defaultToken:"text.xml"}],xml_decl:[{token:"entity.other.attribute-name.decl-attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.decl-attribute-equals.xml",regex:"="},{include:"whitespace"},{include:"string"},{token:"punctuation.xml-decl.xml",regex:"\\?>",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(</))((?:"+t+":)?"+t+")",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(</)("+n+"(?=\\s|>|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"],function(e,t,n){"use strict";function l(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i<n.length;i++){var s=n[i];if(l(s,"tag-open")){r.end.column=r.start.column+s.value.length,r.closing=l(s,"end-tag-open"),s=n[++i];if(!s)return null;r.tagName=s.value,r.end.column+=s.value.length;for(i++;i<n.length;i++){s=n[i],r.end.column+=s.value.length;if(l(s,"tag-close")){r.selfClosing=s.value=="/>";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o<i.length;o++){var u=i[o];s+=u.value.length;if(s<r)continue;if(l(u,"end-tag-open")){u=i[o+1];if(u&&u.value==n)return!0}}return!1},this._readTagForward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do if(l(t,"tag-open"))n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn();else if(l(t,"tag-name"))n.tagName=t.value;else if(l(t,"tag-close"))return n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column<a.end.column&&(a.start.column=a.end.column),s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:"<!--",end:"-->"},this.createWorker=function(e){var t=new f(["ace"],"ace/mode/xml_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/xml"}.call(l.prototype),t.Mode=l})
\ No newline at end of file
diff --git a/js/ace/mode-xquery.js b/js/ace/mode-xquery.js
new file mode 100644
index 0000000..69ad8cc
--- /dev/null
+++ b/js/ace/mode-xquery.js
@@ -0,0 +1 @@
+ace.define("ace/mode/xquery/xquery_lexer",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){var r=n.XQueryTokenizer=function i(e,t){function r(e,t){E=t,S=e,x=e.length,s(0,0,0)}function s(e,t,n){m=t,g=t,y=e,b=t,w=n,N=n,E.reset(S)}function o(){E.startNonterminal("EQName",g);switch(y){case 77:f(77);break;case 91:f(91);break;case 115:f(115);break;case 116:f(116);break;case 119:f(119);break;case 140:f(140);break;case 147:f(147);break;case 160:f(160);break;case 180:f(180);break;case 186:f(186);break;case 211:f(211);break;case 221:f(221);break;case 222:f(222);break;case 238:f(238);break;case 239:f(239);break;case 248:f(248);break;default:u()}E.endNonterminal("EQName",g)}function u(){E.startNonterminal("FunctionName",g);switch(y){case 14:f(14);break;case 65:f(65);break;case 68:f(68);break;case 69:f(69);break;case 70:f(70);break;case 74:f(74);break;case 75:f(75);break;case 79:f(79);break;case 83:f(83);break;case 84:f(84);break;case 85:f(85);break;case 88:f(88);break;case 89:f(89);break;case 98:f(98);break;case 100:f(100);break;case 103:f(103);break;case 104:f(104);break;case 105:f(105);break;case 106:f(106);break;case 107:f(107);break;case 108:f(108);break;case 113:f(113);break;case 114:f(114);break;case 117:f(117);break;case 118:f(118);break;case 121:f(121);break;case 123:f(123);break;case 124:f(124);break;case 126:f(126);break;case 129:f(129);break;case 130:f(130);break;case 131:f(131);break;case 132:f(132);break;case 141:f(141);break;case 143:f(143);break;case 145:f(145);break;case 146:f(146);break;case 148:f(148);break;case 154:f(154);break;case 155:f(155);break;case 157:f(157);break;case 158:f(158);break;case 159:f(159);break;case 165:f(165);break;case 167:f(167);break;case 169:f(169);break;case 173:f(173);break;case 175:f(175);break;case 176:f(176);break;case 177:f(177);break;case 179:f(179);break;case 181:f(181);break;case 193:f(193);break;case 195:f(195);break;case 196:f(196);break;case 197:f(197);break;case 201:f(201);break;case 207:f(207);break;case 208:f(208);break;case 213:f(213);break;case 214:f(214);break;case 215:f(215);break;case 219:f(219);break;case 224:f(224);break;case 230:f(230);break;case 231:f(231);break;case 232:f(232);break;case 243:f(243);break;case 244:f(244);break;case 245:f(245);break;case 249:f(249);break;case 251:f(251);break;case 255:f(255);break;case 261:f(261);break;case 265:f(265);break;case 269:f(269);break;case 67:f(67);break;case 76:f(76);break;case 78:f(78);break;case 80:f(80);break;case 81:f(81);break;case 86:f(86);break;case 93:f(93);break;case 96:f(96);break;case 97:f(97);break;case 99:f(99);break;case 101:f(101);break;case 120:f(120);break;case 127:f(127);break;case 128:f(128);break;case 136:f(136);break;case 149:f(149);break;case 150:f(150);break;case 156:f(156);break;case 166:f(166);break;case 187:f(187);break;case 194:f(194);break;case 198:f(198);break;case 217:f(217);break;case 220:f(220);break;case 223:f(223);break;case 229:f(229);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 256:f(256);break;case 257:f(257);break;case 258:f(258);break;case 262:f(262);break;case 92:f(92);break;case 171:f(171);break;default:f(216)}E.endNonterminal("FunctionName",g)}function a(){E.startNonterminal("NCName",g);switch(y){case 26:f(26);break;case 65:f(65);break;case 70:f(70);break;case 74:f(74);break;case 75:f(75);break;case 79:f(79);break;case 83:f(83);break;case 84:f(84);break;case 85:f(85);break;case 89:f(89);break;case 100:f(100);break;case 104:f(104);break;case 108:f(108);break;case 113:f(113);break;case 117:f(117);break;case 118:f(118);break;case 121:f(121);break;case 123:f(123);break;case 126:f(126);break;case 132:f(132);break;case 141:f(141);break;case 143:f(143);break;case 145:f(145);break;case 146:f(146);break;case 155:f(155);break;case 157:f(157);break;case 158:f(158);break;case 159:f(159);break;case 167:f(167);break;case 169:f(169);break;case 173:f(173);break;case 175:f(175);break;case 176:f(176);break;case 181:f(181);break;case 193:f(193);break;case 195:f(195);break;case 196:f(196);break;case 215:f(215);break;case 219:f(219);break;case 231:f(231);break;case 232:f(232);break;case 243:f(243);break;case 244:f(244);break;case 249:f(249);break;case 261:f(261);break;case 265:f(265);break;case 68:f(68);break;case 69:f(69);break;case 77:f(77);break;case 88:f(88);break;case 91:f(91);break;case 98:f(98);break;case 103:f(103);break;case 105:f(105);break;case 106:f(106);break;case 107:f(107);break;case 114:f(114);break;case 115:f(115);break;case 116:f(116);break;case 119:f(119);break;case 124:f(124);break;case 129:f(129);break;case 130:f(130);break;case 131:f(131);break;case 140:f(140);break;case 147:f(147);break;case 148:f(148);break;case 154:f(154);break;case 160:f(160);break;case 165:f(165);break;case 177:f(177);break;case 179:f(179);break;case 180:f(180);break;case 186:f(186);break;case 197:f(197);break;case 201:f(201);break;case 207:f(207);break;case 208:f(208);break;case 211:f(211);break;case 213:f(213);break;case 214:f(214);break;case 221:f(221);break;case 222:f(222);break;case 224:f(224);break;case 230:f(230);break;case 238:f(238);break;case 239:f(239);break;case 245:f(245);break;case 248:f(248);break;case 251:f(251);break;case 255:f(255);break;case 257:f(257);break;case 269:f(269);break;case 67:f(67);break;case 76:f(76);break;case 78:f(78);break;case 80:f(80);break;case 81:f(81);break;case 86:f(86);break;case 93:f(93);break;case 96:f(96);break;case 97:f(97);break;case 99:f(99);break;case 101:f(101);break;case 120:f(120);break;case 127:f(127);break;case 128:f(128);break;case 136:f(136);break;case 149:f(149);break;case 150:f(150);break;case 156:f(156);break;case 166:f(166);break;case 187:f(187);break;case 194:f(194);break;case 198:f(198);break;case 217:f(217);break;case 220:f(220);break;case 223:f(223);break;case 229:f(229);break;case 235:f(235);break;case 246:f(246);break;case 247:f(247);break;case 252:f(252);break;case 256:f(256);break;case 258:f(258);break;case 262:f(262);break;case 92:f(92);break;case 171:f(171);break;default:f(216)}E.endNonterminal("NCName",g)}function f(e){y==e?(l(),E.terminal(i.TOKEN[y],b,w>x?x:w),m=b,g=w,y=0):d(b,w,0,y,e)}function l(){g!=b&&(m=g,g=b,E.whitespace(m,g))}function c(e){var t;for(;;){t=C(e);if(t!=28)break}return t}function h(e){y==0&&(y=c(e),b=T,w=N)}function p(e){y==0&&(y=C(e),b=T,w=N)}function d(e,t,r,i,s){throw new n.ParseException(e,t,r,i,s)}function C(e){var t=!1;T=N;var n=N,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n<x?S.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<x?S.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,N=n)}r>>=12;if(r==0){N=n-1;var f=N<x?S.charCodeAt(N):0;return f>=56320&&f<57344&&--N,d(T,N,s,-1,-1)}if(t)for(var v=r>>9;v>0;--v){--N;var f=N<x?S.charCodeAt(N):0;f>=56320&&f<57344&&--N}else N-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return S},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=S.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+S.substring(e.getBegin(),Math.min(S.length,e.getBegin()+64))+"..."},this.parse_start=function(){E.startNonterminal("start",g),h(14);switch(y){case 55:f(55);break;case 54:f(54);break;case 56:f(56);break;case 40:f(40);break;case 42:f(42);break;case 41:f(41);break;case 35:f(35);break;case 38:f(38);break;case 274:f(274);break;case 271:f(271);break;case 39:f(39);break;case 43:f(43);break;case 49:f(49);break;case 62:f(62);break;case 63:f(63);break;case 46:f(46);break;case 48:f(48);break;case 53:f(53);break;case 51:f(51);break;case 34:f(34);break;case 273:f(273);break;case 2:f(2);break;case 1:f(1);break;case 3:f(3);break;case 12:f(12);break;case 13:f(13);break;case 15:f(15);break;case 16:f(16);break;case 17:f(17);break;case 5:f(5);break;case 6:f(6);break;case 4:f(4);break;case 33:f(33);break;default:o()}E.endNonterminal("start",g)},this.parse_StartTag=function(){E.startNonterminal("StartTag",g),h(8);switch(y){case 58:f(58);break;case 50:f(50);break;case 27:f(27);break;case 57:f(57);break;case 35:f(35);break;case 38:f(38);break;default:f(33)}E.endNonterminal("StartTag",g)},this.parse_TagContent=function(){E.startNonterminal("TagContent",g),p(11);switch(y){case 23:f(23);break;case 6:f(6);break;case 7:f(7);break;case 55:f(55);break;case 54:f(54);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;default:f(33)}E.endNonterminal("TagContent",g)},this.parse_AposAttr=function(){E.startNonterminal("AposAttr",g),p(10);switch(y){case 20:f(20);break;case 25:f(25);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 38:f(38);break;default:f(33)}E.endNonterminal("AposAttr",g)},this.parse_QuotAttr=function(){E.startNonterminal("QuotAttr",g),p(9);switch(y){case 19:f(19);break;case 24:f(24);break;case 18:f(18);break;case 29:f(29);break;case 272:f(272);break;case 275:f(275);break;case 271:f(271);break;case 35:f(35);break;default:f(33)}E.endNonterminal("QuotAttr",g)},this.parse_CData=function(){E.startNonterminal("CData",g),p(1);switch(y){case 11:f(11);break;case 64:f(64);break;default:f(33)}E.endNonterminal("CData",g)},this.parse_XMLComment=function(){E.startNonterminal("XMLComment",g),p(0);switch(y){case 9:f(9);break;case 47:f(47);break;default:f(33)}E.endNonterminal("XMLComment",g)},this.parse_PI=function(){E.startNonterminal("PI",g),p(3);switch(y){case 10:f(10);break;case 59:f(59);break;case 60:f(60);break;default:f(33)}E.endNonterminal("PI",g)},this.parse_Pragma=function(){E.startNonterminal("Pragma",g),p(2);switch(y){case 8:f(8);break;case 36:f(36);break;case 37:f(37);break;default:f(33)}E.endNonterminal("Pragma",g)},this.parse_Comment=function(){E.startNonterminal("Comment",g),p(4);switch(y){case 52:f(52);break;case 41:f(41);break;case 30:f(30);break;default:f(33)}E.endNonterminal("Comment",g)},this.parse_CommentDoc=function(){E.startNonterminal("CommentDoc",g),p(5);switch(y){case 31:f(31);break;case 32:f(32);break;case 52:f(52);break;case 41:f(41);break;default:f(33)}E.endNonterminal("CommentDoc",g)},this.parse_QuotString=function(){E.startNonterminal("QuotString",g),p(6);switch(y){case 18:f(18);break;case 29:f(29);break;case 19:f(19);break;case 21:f(21);break;case 35:f(35);break;default:f(33)}E.endNonterminal("QuotString",g)},this.parse_AposString=function(){E.startNonterminal("AposString",g),p(7);switch(y){case 18:f(18);break;case 29:f(29);break;case 20:f(20);break;case 22:f(22);break;case 38:f(38);break;default:f(33)}E.endNonterminal("AposString",g)},this.parse_Prefix=function(){E.startNonterminal("Prefix",g),h(13),l(),a(),E.endNonterminal("Prefix",g)},this.parse__EQName=function(){E.startNonterminal("_EQName",g),h(12),l(),o(),E.endNonterminal("_EQName",g)};var v,m,g,y,b,w,E,S,x,T,N};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<276;i+=32){var s=i,o=(i>>5)*2062+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,347,363,379,416,416,416,408,331,323,331,323,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,433,433,433,433,433,433,433,316,331,331,331,331,331,331,331,331,394,416,416,417,415,416,416,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,416,330,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,331,416,66,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,18,18,18,18,18,18,18,18,18,19,20,21,22,23,24,25,26,27,28,29,30,27,31,31,31,31,31,31,31,31,31,31,31,31,31,31,35,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,32,31,31,33,31,31,31,31,31,31,34,35,36,35,31,35,37,38,39,40,41,42,43,44,45,31,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,31,61,62,63,64,35,35,35,35,35,35,35,35,35,35,35,35,31,31,35,35,35,35,35,35,35,65,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,35,31,35,31,31,35],r.INITIAL=[1,2,36867,45060,5,6,7,8,9,10,11,12,13,14,15],r.TRANSITION=[17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22908,18836,17152,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18579,21711,17152,19008,19233,20367,19008,28684,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17365,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,17470,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18157,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,17848,17880,18731,17918,36551,17292,17934,17979,18727,18023,36545,18621,18039,18056,18072,18117,18143,18173,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17687,18805,18421,18437,18101,17393,18489,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20116,18836,18637,19008,19233,21267,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18763,18778,18794,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,18821,22923,18906,19008,19233,17431,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18937,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19054,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,18953,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21843,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21696,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22429,20131,18720,19008,19233,20367,19008,17173,23559,36437,17330,17349,18921,17189,17208,17281,20355,18087,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,21242,19111,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19024,18836,18609,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19081,22444,18987,19008,19233,20367,19008,19065,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21992,22007,18987,19008,19233,20367,19008,18690,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22414,18836,18987,19008,19233,30651,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19138,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,19280,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,19172,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21783,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,19218,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21651,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,19249,19265,19307,18888,27857,30536,24401,31444,23357,18888,19351,18888,18890,27211,19370,27211,27211,19392,24401,31911,24401,24401,25467,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,17994,24060,18888,18888,18888,18890,19468,27211,27211,27211,27211,19484,35367,19520,24401,24401,24401,19628,18888,29855,18888,18888,23086,27211,19538,27211,27211,30756,24012,24401,19560,24401,24401,26750,18888,18888,19327,27855,27211,27211,19580,17590,24017,24401,24401,19600,25665,18888,18888,28518,27211,27212,24016,19620,19868,28435,25722,18889,19644,27211,32888,35852,19868,31018,19694,19376,19717,22215,19735,22098,19751,35203,19776,19797,19817,19840,25783,31738,24135,19701,19856,31015,23516,31008,28311,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21768,18836,19307,18888,27857,27904,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,19888,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19440,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22399,18836,19918,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21666,18836,19307,18888,27857,27525,24401,29183,21467,18888,18888,18888,18890,27211,27211,27211,27211,19946,24401,24401,24401,24401,32382,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,19998,24401,24401,24401,24401,31500,18467,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,20021,24401,24401,24401,24401,24401,34271,18888,18888,18888,18888,23086,27211,27211,27211,27211,32926,29908,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,20050,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,20101,19039,20191,20412,20903,17569,20309,20872,25633,20623,20505,20218,20242,17189,17208,17281,20355,20265,20306,20328,20383,22490,20796,20619,21354,20654,20410,20956,21232,20765,17421,20535,17192,18127,22459,20312,25531,22470,20309,20428,18964,20466,20491,21342,21070,20521,20682,17714,18326,17543,17559,17585,22497,20559,19504,20279,20575,20290,20475,20604,20639,20226,20670,17661,21190,17703,21176,17730,19494,20698,20711,22480,21046,21116,18971,21130,20727,20755,17675,17753,17832,17590,25518,20394,20781,20831,20202,20847,21401,17292,17934,17979,18549,20863,20588,25542,20888,20919,18072,18117,20935,20972,21032,21062,21086,18239,21102,18563,21146,21162,21206,18351,20949,20902,18340,21222,21258,21283,18360,20249,17405,21295,21311,21327,20739,20343,21370,21386,21417,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21977,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,21452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,21504,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,36501,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,28674,21946,17617,36473,18223,17237,17477,19152,17860,17892,17675,17753,17832,21575,21534,17481,19156,17864,18731,17918,36551,17292,17934,21560,30628,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21798,18836,21612,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21636,18836,18987,19008,19233,17902,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21753,19096,21903,19008,19233,20367,19008,19291,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,17379,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,21931,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,18280,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21962,18594,18987,19008,19233,22043,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21681,21858,18987,19008,19233,20367,19008,21544,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,32319,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,22231,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,31678,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,33588,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,35019,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22248,24401,24401,24401,24401,30613,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,31500,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,21431,24401,24401,24401,24401,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22324,18836,22059,18888,27857,30501,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,34365,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22354,18836,18987,19008,19233,20367,19008,17173,27086,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,19930,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22309,22513,18987,19008,19233,20367,19008,19122,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,22544,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22608,18836,22988,23004,27585,23020,23036,23067,22087,18888,18888,18888,23083,27211,27211,27211,23102,22121,24401,24401,24401,23122,31386,26154,19674,18888,28119,28232,19424,23705,27211,27211,23142,23173,23189,23212,24401,24401,23246,34427,31693,23262,18888,23290,23308,27783,27620,23327,35263,35107,33383,23346,18193,23393,32748,23968,24401,23414,35153,23463,18888,33913,23442,23482,27211,27211,23532,23552,21431,23575,24401,24401,23604,26095,23635,23657,18888,33482,23685,33251,27211,22187,18851,23721,35536,24401,18887,23750,32641,27211,23769,23787,20080,33012,24384,25659,18888,18889,27211,27211,19719,23889,23803,31018,18890,27211,31833,19406,19447,23086,23330,19828,28224,31826,23823,26917,34978,23850,26493,25782,23878,23914,23516,31008,22105,19419,27963,19659,29781,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22623,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,30613,18888,18888,18888,18888,28909,25783,27211,27211,27211,34048,23933,22164,24401,24401,24401,28409,23949,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,31181,26583,18888,18888,18888,35585,23984,27211,27211,27211,24005,22201,24033,24401,24401,24401,24052,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,26496,24076,24126,24151,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22638,18836,22059,19678,27857,24185,24401,24201,24217,26592,18888,18888,18890,24252,24268,27211,27211,22121,24287,24303,24401,24401,30613,19781,35432,36007,32649,18888,25783,24322,28966,23771,27211,35072,22164,24358,32106,26829,24400,31500,31693,18888,18888,18888,24801,18890,27211,27211,27211,27211,24418,19484,24401,24401,24401,24401,20167,31181,18888,18888,18888,27833,23086,27211,27211,33540,27211,30756,21431,24401,24401,22972,24401,26095,18888,36131,18888,27855,27211,24440,27211,22187,22968,24401,24459,24401,31699,28454,18888,34528,34570,35779,24478,24402,24494,25659,18888,36228,27211,27211,24515,30981,23734,31018,18890,27211,31833,19406,19447,23086,23330,24538,31017,27856,31741,30059,23377,24563,19837,25782,19760,31015,23516,25374,22105,19419,29793,24579,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22653,18836,22059,25756,19982,34097,23196,29183,24614,24110,23641,24673,26103,24697,24443,24713,28558,22121,24748,24462,24764,23398,30613,18888,18888,18888,18888,24798,25783,27211,27211,27211,34232,35072,22164,24401,24401,24401,33302,31500,22559,24106,24232,18888,18888,34970,24817,30411,27211,27211,32484,19484,29750,35127,24401,24401,19872,31181,24852,18888,18888,24871,29221,27211,27211,32072,27211,30756,34441,24401,24401,31571,24401,26095,33141,27802,27011,27855,25295,25607,24888,22187,22968,19195,34593,24906,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,18888,33663,27211,27211,24924,24947,23588,31018,18890,27211,31833,22135,19447,23086,23330,19828,30904,31042,24972,19840,25e3,31738,30898,25782,19760,31015,23516,31008,22105,19419,25016,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22668,18836,25041,25057,31320,25073,25089,25105,22087,34796,24236,36138,34870,34125,25121,23106,35497,22248,36613,25137,30671,27365,30613,25153,26447,25199,25233,22574,23274,25249,25265,25281,25318,25344,25360,25400,25428,25452,26731,25504,31693,23669,25558,27407,25575,28599,25934,25599,27211,28180,27304,25623,25839,25649,24401,34820,25681,25698,22586,27775,30190,25745,25778,25799,25817,28995,33569,30756,21518,33443,25837,25855,25893,26095,31254,26677,30136,27855,25930,25950,27211,22187,22968,25966,25986,24401,23428,27763,36330,26959,26002,26029,26045,26085,26119,26170,26203,26222,26239,30527,26372,26274,28404,31018,33757,27211,34262,26316,36729,26345,26366,35337,31017,26388,26407,30954,26350,33861,26434,26463,26479,26512,23516,33189,26531,26547,27963,31293,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22683,18836,26568,26181,26608,34097,26643,29183,22087,26669,18888,18888,18890,26693,27211,27211,27211,22121,26720,24401,24401,24401,30613,18888,18888,18888,18888,26774,25783,27211,27211,27211,26619,35072,22164,24401,24401,24401,21596,31500,31693,18888,18888,33978,18888,18890,27211,27211,25801,27211,27211,19484,24401,24401,24401,26792,24401,31181,18888,18888,18888,35464,23086,27211,27211,27211,26809,30756,21431,24401,24401,24401,26828,26095,18888,18888,18888,27855,27211,27211,27211,22187,22968,24401,24401,24401,18887,18888,18888,27211,27211,35779,20080,24402,19868,25659,31948,18889,35707,27211,19719,26845,19868,31018,18890,27211,31833,19406,19447,23086,23330,26905,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,24984,31088,19419,26945,27651,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22698,18836,26999,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23051,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,27033,24401,24401,24401,24401,24036,31693,18888,18888,27056,18888,18890,27211,27211,30320,27211,27211,27075,24401,24401,29032,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,33986,27855,27211,27211,27102,17590,24017,24401,24401,27123,27144,36254,27162,27210,27228,28500,18187,34842,33426,27244,35980,27277,27302,27320,36048,34013,20999,31882,21478,27895,27356,30287,27381,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,26329,30087,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,27406,27423,27445,35294,27461,22087,18888,18888,30140,18890,27211,27211,27989,27211,22121,24401,24401,25682,24401,18866,18888,18888,18888,18888,18888,34042,27211,27211,27211,27211,29700,22164,24401,24401,24401,24401,27128,31693,27477,18888,18888,18888,18890,27194,27211,27211,27211,27211,19484,35299,24401,24401,24401,24401,19628,18888,18888,18888,27059,23086,27211,27211,27211,33366,30756,24012,24401,24401,24401,35044,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,20815,27211,30818,19960,33969,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22713,18836,22059,27496,27516,27541,35231,27557,22087,29662,26292,23292,27573,24836,27601,27211,27636,22121,35544,27686,24401,27721,18866,18888,27799,18888,27818,22071,27853,32260,27211,26013,27873,27920,22164,29419,24401,29946,33413,26742,27751,26881,18888,18888,27261,36776,27936,27211,27211,27211,27988,28005,28031,28052,24401,24401,28069,28088,28135,25488,28152,26069,28167,27211,28340,24657,28196,30756,31523,24401,28212,34176,36174,24956,28248,28266,28290,21488,33077,28327,28356,17590,20986,23126,28391,28425,28102,28451,28470,28490,28516,28534,20034,33728,25868,25659,18888,18889,27211,27211,19719,23889,19868,30241,28274,28553,28574,19406,28590,23086,23330,19828,19452,28615,28660,26147,25783,31738,19837,25782,19760,29613,35958,29276,22105,19419,27963,23157,28700,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,18888,27857,34097,24401,29183,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,22528,18888,18888,18888,18888,18890,27333,27211,27211,27211,27211,19484,30853,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22728,18836,28747,28782,28817,28841,28857,28880,28896,24161,28943,32011,36261,27340,28961,29492,28982,29011,24522,29027,25436,29048,23051,27500,29090,29110,30713,18888,23512,29130,25183,27211,29155,28927,27033,29173,23230,24401,29199,35373,31693,18888,18888,25583,32629,29218,27211,27211,31461,30692,29237,27075,24401,24401,24401,29262,29302,19628,18888,34329,18888,18888,23086,27211,29329,27211,27211,30756,24012,35933,24401,24401,24401,27705,31612,18888,18888,29346,29374,27211,35650,17590,21436,29393,24401,25970,18887,33895,18888,27211,32528,27212,24016,32769,19868,25659,18888,26889,27211,27211,29412,23889,24371,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31768,19840,25783,31738,19837,29435,29508,31102,29550,29606,22105,30300,29462,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22743,18836,22059,29629,29473,34097,33285,29183,29651,27254,18888,29678,33329,32535,27211,29694,29716,22121,19202,24401,32742,29741,18866,26776,33921,28474,18888,18888,25783,29766,27211,29809,27211,35072,22164,35825,24401,29828,24401,24036,36769,25217,18888,18888,29848,18890,27211,29871,27211,26258,27211,29894,24401,29929,24401,36587,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,29725,29962,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18473,18888,18888,19584,27211,27212,24016,29982,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19902,19447,32052,19544,19828,29998,30097,30031,19840,25783,30047,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,30075,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22758,18836,30121,30156,30206,30257,30273,30336,22087,35624,32837,25762,18890,29878,34934,26812,27211,22121,24931,23223,29202,24401,18866,34373,30352,18888,18888,18888,23447,24828,27211,27211,27211,35072,30370,35052,24401,24401,24401,24036,29523,18888,18888,27146,18888,31308,30386,27211,27211,30405,30558,19484,30427,24401,24401,29938,35686,19628,28766,30447,34506,35614,23086,28731,30482,30517,30552,30756,24012,20156,30574,30598,30667,26283,33464,28945,27670,30687,32915,33504,25328,17590,23963,20450,33837,21016,32397,26300,30708,30729,27885,30748,21588,36373,30779,26653,24628,33220,32514,30806,31835,25412,25906,26515,18890,28825,31833,26133,19447,28304,31730,23834,26057,30869,30885,32181,30920,30942,32797,25782,30970,31015,23516,31008,30997,31034,27963,19659,29450,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22773,18836,31058,31074,32463,31125,31141,31197,22087,18888,29534,35471,36738,27211,24342,31213,24424,22121,24401,20175,31229,31917,27736,31245,34334,27175,18888,29094,27286,27211,31278,31336,27211,31355,31371,24401,31402,31418,24401,31437,31693,18888,31619,32841,18888,18890,27211,27211,31460,31477,27211,19484,24401,24401,31497,36581,24401,33020,18888,18888,18888,18888,30007,27211,27211,27211,27211,31516,32310,24401,24401,24401,24401,31539,18888,28762,18888,24651,35740,27211,27211,28644,31565,35796,24401,24401,19318,32188,18888,24334,28366,27212,29966,29832,19868,25659,18888,18889,27211,27211,19719,31587,19868,31635,32435,33693,30105,31663,20005,31715,31757,31784,31812,30015,31851,31878,25783,31898,19837,25782,19760,31015,23516,31008,22105,19419,27963,31933,30221,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22788,18836,22059,25729,30466,31968,24306,31984,32e3,32807,35160,27017,29590,34941,19801,29377,33700,22121,27040,30431,29396,28864,29565,18888,18888,18888,32027,18888,25783,27211,27211,23698,27211,35072,22164,24401,24401,30845,24401,24036,32045,18888,26929,18888,18888,18890,27211,31481,32068,27211,27211,32088,24401,33058,32122,24401,24401,33736,18888,18888,33162,18888,23086,27211,27211,29484,27211,28375,32144,24401,24401,33831,24401,26750,18888,18888,18888,27855,27211,27211,27211,36704,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,33107,22171,33224,24271,32169,31017,27856,31741,19840,25783,31738,30234,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,32204,32232,32252,32677,33295,29074,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,23619,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,32276,24401,24401,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,32299,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,33886,18889,36065,27211,19719,35326,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22803,18836,32335,31647,34666,32351,32367,32417,22087,18888,32433,19335,32451,27211,32479,27107,32500,22121,24401,32551,20085,32572,18866,22287,23753,18888,18888,32602,32665,27211,32693,27211,26972,32713,32729,24401,32764,24401,25877,32785,34768,18888,27390,32823,24594,24855,32857,24890,32878,32904,27211,32942,32977,24401,33e3,29313,24401,30790,26206,27666,33904,18888,23086,36353,27211,33036,27211,30756,24012,32153,24401,33056,24401,35861,18888,18888,30354,27972,27211,27211,33800,17590,20145,24401,24401,34638,20811,18888,18888,33074,27211,27212,36167,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,34616,24169,33093,33123,33157,27856,31741,23862,26552,34302,19837,25782,19760,31015,23516,31008,33178,19973,27963,23497,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22818,18836,33205,28113,33240,34097,33275,29183,22087,33318,35438,18888,18890,33345,26391,33382,27211,22121,33399,28072,33442,24401,18866,22232,18888,33459,18888,18888,33480,33498,25175,27211,27211,26704,22164,24775,35239,24401,24401,25914,29580,18888,18888,31109,25211,33520,33539,27211,27211,33556,36284,19484,33585,24401,24401,33604,32556,19628,18888,18888,31262,33658,23086,27211,27211,33679,27211,30756,24012,24401,24401,33716,24401,26854,27480,18888,33752,27855,33259,34701,27211,17590,32102,24782,23807,24401,18887,18888,18888,27211,27211,27212,33773,36105,19868,25659,18888,23368,27211,29157,19719,23889,34454,29286,18890,33794,25302,33816,19447,34079,33853,31862,31017,27856,31741,33877,28920,33937,19837,30461,34002,22276,36041,34029,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22833,18836,34064,32616,34113,34141,34157,34192,34208,32216,36013,31549,31952,34224,34248,34287,29330,34350,34389,34413,34481,26793,18866,26187,29635,22293,18888,36654,25783,34522,34544,34566,25821,35072,22164,34586,34609,34632,19604,24036,36644,36674,24681,18888,32401,34654,31339,34682,34698,27211,34717,34753,28053,34812,34836,24401,33619,19628,34858,32236,34906,24598,33523,27612,34890,34922,24732,29246,36717,33634,34465,32984,34168,26750,34957,18888,18888,34994,35010,27211,33040,17590,29913,35035,24401,36304,25482,30171,35883,35068,35088,26627,20441,31173,35123,35143,35176,24640,30492,29358,19719,35192,35219,25384,28801,35255,35279,32586,34496,23086,23330,29061,31017,27856,31741,19840,25783,31738,24547,25164,35315,31796,35353,34316,22105,19419,27963,24091,28630,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22848,18836,22059,34782,34088,35389,21008,35405,35421,35454,18888,18888,23466,35487,27211,27211,27211,35513,31154,24401,24401,24401,35560,18888,26863,36664,35601,24872,25783,30389,23536,26250,35647,35666,22164,19522,19564,30582,35682,27697,35575,29114,18888,18888,18888,18890,27211,35702,27211,27211,27211,35723,24401,35527,24401,24401,24401,19628,30184,18888,18888,18888,23086,35739,27211,27211,27211,29139,22938,24401,24401,24401,24401,23898,35756,18888,18888,25025,35778,27211,27211,17590,20064,35795,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,23917,18890,34550,31833,22262,19447,23086,23330,26418,31017,27856,31741,19840,25783,35812,19837,27187,35841,33135,23516,31008,22105,22148,28712,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22863,18836,22059,35877,28723,34097,31164,29183,22087,26758,18888,22592,18890,23989,27211,29812,27211,22121,33778,24401,31421,24401,18866,18888,18888,26872,18888,18888,25783,27211,30732,27211,27211,35072,22164,24401,24908,24401,24401,24036,31693,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22878,18836,22059,27837,27857,35899,24401,35915,22087,18888,18888,18888,18890,27211,27211,27211,27211,22121,24401,24401,24401,24401,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,31602,18888,18888,18888,18888,26223,27211,27211,27211,27211,27211,19484,35931,24401,24401,24401,24401,19628,18888,28136,18888,18888,35949,27211,32862,27211,32697,30756,24012,24401,32283,24401,32128,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22893,18836,22059,35974,34882,34097,33960,29183,35996,18888,23311,18888,36029,27211,27211,36064,36081,22121,24401,24401,36104,33950,18866,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,35072,22164,24401,24401,24401,24401,24036,36121,18888,25559,18888,18888,18890,27211,27211,30313,27211,27211,36154,24401,24401,34397,24401,24401,19628,28250,18888,18888,18888,23086,30926,27211,27211,27211,26983,24012,33642,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22339,18836,22059,19354,27857,36190,24401,36206,22087,18888,18888,18888,18007,27211,27211,27211,24724,22121,24401,24401,24401,30827,18866,18888,36222,18888,28795,18888,25783,35100,27211,27429,27211,35072,22164,30836,24401,24499,24401,24036,31693,18888,36244,18888,18888,18890,27211,36088,27211,27211,27211,19484,24401,28036,24401,24401,24401,19628,18888,18888,35631,18888,35762,27211,27211,36277,27211,34730,24012,24401,24401,36300,24401,36320,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,25712,18888,18888,36346,27211,27212,19184,24402,19868,25659,32029,18889,27211,33359,19719,23889,36369,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22384,18836,36389,19008,19233,20367,36434,17173,17595,36437,17330,17349,18921,17189,17208,17281,20355,36453,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,22369,18836,18987,19008,19233,20367,19008,21737,30763,36437,17330,17349,18921,17189,17208,17281,20355,17949,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21813,18836,36489,19008,19233,20367,19008,17173,17737,36437,17330,17349,18921,17189,17208,17281,20355,17768,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20543,22022,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,18987,19008,19233,20367,19008,17173,30763,36437,17330,17349,18921,17189,17208,17281,20355,36517,17308,17327,17346,18918,18452,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,18127,21873,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,21828,18836,19307,18888,27857,30756,24401,29183,28015,18888,18888,18888,18890,27211,27211,27211,27211,36567,24401,24401,24401,24401,22953,18888,18888,18888,18888,18888,25783,27211,27211,27211,27211,28537,36603,24401,24401,24401,24401,24036,18881,18888,18888,18888,18888,18890,27211,27211,27211,27211,27211,19484,24401,24401,24401,24401,24401,19628,18888,18888,18888,18888,23086,27211,27211,27211,27211,30756,24012,24401,24401,24401,24401,26750,18888,18888,18888,27855,27211,27211,27211,17590,24017,24401,24401,24401,18887,18888,18888,27211,27211,27212,24016,24402,19868,25659,18888,18889,27211,27211,19719,23889,19868,31018,18890,27211,31833,19406,19447,23086,23330,19828,31017,27856,31741,19840,25783,31738,19837,25782,19760,31015,23516,31008,22105,19419,27963,19659,27951,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,36629,36690,18720,19008,19233,20367,19008,17454,17595,36437,17330,17349,18921,17189,17208,17281,20355,17223,17308,17327,17346,18918,36754,21880,18649,18665,19006,17265,22033,20765,17421,20535,17192,20362,21726,17311,18658,18999,19008,17447,32952,17497,17520,17251,36411,17782,20682,17714,18326,17543,17559,17585,21887,17504,17527,17258,36418,21915,21940,17611,36467,18217,17633,17661,21190,17703,21176,17730,34737,21946,17617,36473,18223,36531,17477,19152,17860,17892,17675,17753,17832,17590,21620,17481,19156,17864,18731,17918,36551,17292,17934,17979,18727,18681,18405,18621,18039,18056,18072,18117,18143,18706,18052,18209,18250,18239,18266,17963,18296,18312,18376,17807,36403,19232,17796,17163,30642,18392,17816,32961,17645,18805,18421,18437,18519,17393,18747,18505,18535,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,17590,0,94242,0,118820,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2482176,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,27,27,27,2207744,2404352,2412544,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3104768,2605056,2207744,2207744,2207744,2207744,2207744,2207744,2678784,2207744,2695168,2207744,2703360,2207744,2711552,2752512,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,0,2158592,2158592,3170304,3174400,2158592,0,139,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2158592,2158592,2158592,2863104,2891776,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2785280,2207744,2809856,2207744,2207744,2842624,2207744,2207744,2207744,2899968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2473984,2207744,2207744,2494464,2207744,2207744,2207744,2523136,2158592,2404352,2412544,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2605056,2158592,2158592,2158592,2158592,2158592,2158592,2678784,2158592,2695168,2158592,2703360,2158592,2711552,2752512,2158592,2158592,2785280,2158592,2158592,2785280,2158592,2809856,2158592,2158592,2842624,2158592,2158592,2158592,2899968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,18,0,0,0,0,0,0,0,2211840,0,0,641,0,2158592,0,0,0,0,0,0,0,0,2211840,0,0,32768,0,2158592,0,2158592,2158592,2158592,2383872,2158592,2158592,2158592,2158592,3006464,2383872,2207744,2207744,2207744,2207744,2158877,2158877,2158877,2158877,0,0,0,2158877,2572573,2158877,2158877,0,2207744,2207744,2596864,2207744,2207744,2207744,2207744,2207744,2207744,2641920,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,167936,0,0,2162688,0,0,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,0,0,2146304,2146304,2224128,2224128,2232320,2232320,2232320,641,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2531328,2158592,2158592,2158592,2158592,2158592,2617344,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,2158592,2502656,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2580480,2158592,2158592,2158592,2158592,2621440,2158592,2158592,2158592,2158592,2158592,2158592,2699264,2158592,2158592,2158592,2158592,2158592,2748416,2756608,2777088,2801664,2207744,2863104,2891776,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3018752,2207744,3043328,2207744,2207744,2207744,2207744,3080192,2207744,2207744,3112960,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,172310,279,0,2162688,0,0,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2158592,2158592,2158592,2404352,2412544,2158592,2510848,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2584576,2158592,2609152,2158592,2158592,2629632,2158592,2158592,2158592,2686976,2158592,2715648,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2158592,2158592,3170304,3174400,2158592,2367488,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,0,2207744,2207744,2207744,2433024,2207744,2453504,2461696,2207744,2207744,2207744,2207744,2207744,2207744,2510848,2207744,2207744,2207744,2207744,2207744,2531328,2207744,2207744,2207744,2207744,2207744,2617344,2207744,2207744,2207744,2207744,2158592,2158592,2158592,2158592,0,0,0,2158592,2572288,2158592,2158592,1508,2715648,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2867200,2207744,2904064,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2580480,2207744,2207744,2207744,2207744,2621440,2207744,2207744,2207744,3149824,2207744,2207744,3170304,3174400,2207744,0,0,0,0,0,0,0,0,0,0,138,2158592,2158592,2158592,2404352,2412544,2707456,2732032,2207744,2207744,2207744,2822144,2826240,2207744,2895872,2207744,2207744,2924544,2207744,2207744,2973696,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,285,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3186688,2158592,2207744,2207744,2158592,2158592,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2158592,0,0,2535424,2543616,2158592,2158592,2158592,0,0,0,2158592,2158592,2158592,2990080,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2572288,2981888,2207744,2207744,3002368,2207744,3047424,3063808,3076096,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3203072,2708960,2732032,2158592,2158592,2158592,2822144,2827748,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2981888,2158592,2158592,3002368,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2981888,2158592,2158592,3003876,2158592,3047424,3063808,3076096,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3203072,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,20480,0,0,0,0,0,2162688,20480,0,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2908160,2527232,2207744,2207744,2576384,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2908160,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,286,2158592,2158592,0,0,2158592,2158592,2158592,2158592,2633728,2658304,0,0,2740224,2744320,0,2834432,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,0,0,29315,0,0,0,0,45,45,45,45,45,933,45,45,45,45,442,45,45,45,45,45,45,45,45,45,67,67,2494464,2158592,2158592,2158592,2524757,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,1504,2158592,2498560,2158592,2158592,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,2736128,2158592,2158592,0,2158592,2912256,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3108864,2158592,2158592,3133440,3145728,3153920,2375680,2379776,2207744,2207744,2420736,2207744,2449408,2207744,2207744,2207744,2498560,2207744,2207744,2207744,2207744,2568192,2207744,0,0,0,0,0,0,2166784,0,0,0,0,0,551,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,2020,2158592,2592768,2625536,2207744,2207744,2674688,2736128,2207744,2207744,2207744,2912256,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,542,0,544,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,641,0,0,0,0,0,0,2367488,2158592,2498560,2158592,2158592,1621,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,1608,97,97,97,97,97,97,97,97,97,97,1107,97,97,1110,97,97,3133440,3145728,3153920,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3014656,2158592,2158592,3051520,2158592,2158592,3100672,2158592,2158592,3121152,2158592,2158592,2158592,3149824,2416640,2207744,2465792,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2633728,2658304,2740224,2744320,2834432,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158592,2408448,2416640,2158592,2465792,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,32768,0,0,0,0,0,0,2367488,2949120,2158592,2985984,2158592,2998272,2158592,2158592,2158592,3129344,2158592,2158592,2478080,2158592,2158592,2158592,2535424,2543616,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3117056,2207744,2207744,2478080,2207744,2207744,2207744,2207744,2699264,2207744,2207744,2207744,2207744,2207744,2748416,2756608,2777088,2801664,2207744,2207744,2158877,2158877,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,0,0,2535709,2543901,2158877,2158877,2158877,0,0,0,2158877,2158877,2158877,2990365,2158877,2158877,2158730,2158730,2158730,2158730,2158730,2572426,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158592,2158592,2478080,2207744,2207744,2990080,2207744,2207744,2158592,2158592,2482176,2158592,2158592,0,0,0,2158592,2158592,2158592,0,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,3010560,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158592,2428928,2158592,2514944,0,0,2158592,2588672,2158592,0,2838528,2158592,2158592,2158592,3010560,2158592,2506752,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,0,29315,922,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,1539,45,3006464,2383872,0,2020,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,2207744,0,0,2158592,2637824,2953216,2158592,2539520,2158592,2539520,2207744,0,0,2539520,2158592,2158592,2158592,2158592,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158592,2506752,0,0,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2158592,2207744,0,2158592,2965504,2965504,2965504,0,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2474269,2158877,2158877,0,0,2158877,2158877,2158877,2158877,2634013,2658589,0,0,2740509,2744605,0,2834717,40976,18,36884,45078,24,28,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,36884,0,0,0,24,24,24,27,27,27,27,90143,0,0,86016,0,0,2211840,102439,0,0,0,98347,0,2158592,2158592,2158592,2158592,2158592,3158016,0,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,0,94242,0,0,0,2211840,102439,0,0,106538,98347,135,2158592,2158592,2158592,2158592,2158592,2158592,2564096,2158592,2158592,2158592,2158592,2158592,2596864,2158592,2158592,2158592,2158592,2158592,2158592,2641920,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2494464,2158592,2158592,2158592,2523136,2527232,2158592,2158592,2576384,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,0,27,27,0,2158592,2498560,2158592,2158592,0,2158592,2158592,2568192,2158592,2592768,2625536,2158592,2158592,2674688,0,0,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2494464,2158592,2158592,2158592,3006464,2383872,0,0,2158592,2158592,2158592,2158592,3006464,2158592,2637824,2953216,2158592,2207744,2637824,2953216,40976,18,36884,45078,24,27,147488,94242,147456,147488,106538,98347,0,0,147456,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,81920,0,94242,0,0,0,2211840,0,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,2428928,2158592,2514944,2158592,2588672,2158592,2838528,2158592,2158592,40976,18,151573,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,1487,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,0,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,130,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2158592,3096576,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2158592,18,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,644,2207744,2207744,2207744,3186688,2207744,0,1080,0,1084,0,1088,0,0,0,0,0,0,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2531466,2158730,2158730,2158730,2158730,2158730,2617482,0,94242,0,0,0,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,2781184,2793472,2158592,2818048,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,159779,159744,102439,159779,98347,0,0,159744,40976,18,18,36884,0,45078,0,2224253,172032,2224253,2232448,2232448,172032,2232448,90143,0,0,2170880,0,0,550,829,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,124,124,127,127,127,40976,18,36884,45078,25,29,90143,94242,0,102439,106538,98347,0,0,163931,40976,18,18,36884,0,45078,249856,24,24,24,27,27,27,27,90143,0,0,2170880,0,0,827,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,4243810,4243810,24,24,27,27,27,2207744,0,0,0,0,0,0,2166784,0,0,0,0,57344,286,2158592,2158592,2158592,2158592,2707456,2732032,2158592,2158592,2158592,2822144,2826240,2158592,2895872,2158592,2158592,2924544,2158592,2158592,2973696,2158592,2207744,2207744,2207744,3186688,2207744,0,0,0,0,0,0,53248,0,0,0,0,0,97,97,97,97,97,1613,97,97,97,97,97,97,1495,97,97,97,97,97,97,97,97,97,566,97,97,97,97,97,97,2207744,0,0,0,0,0,0,2166784,546,0,0,0,0,286,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,17,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,120,121,18,18,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,0,2170880,0,53248,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,196608,18,266240,24,24,27,27,27,0,94242,0,0,0,38,102439,0,0,106538,98347,0,45,45,45,45,45,45,45,1535,45,45,45,45,45,45,45,1416,45,45,45,45,45,45,45,45,424,45,45,45,45,45,45,45,45,45,405,45,45,45,45,45,45,45,45,45,45,45,45,45,199,45,45,67,67,67,67,67,491,67,67,67,67,67,67,67,67,67,67,67,1766,67,67,67,1767,67,24850,24850,12564,12564,0,0,2166784,546,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,743,57889,0,2170880,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1856,45,1858,1859,67,67,67,1009,67,67,67,67,67,67,67,67,67,67,67,1021,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,0,2367773,2158877,2158877,2158877,2158877,2158877,2158877,2699549,2158877,2158877,2158877,2158877,2158877,2748701,2756893,2777373,2801949,97,1115,97,97,97,97,97,97,97,97,97,97,97,97,97,97,857,97,67,67,67,67,67,1258,67,67,67,67,67,67,67,67,67,67,67,1826,67,97,97,97,97,97,97,1338,97,97,97,97,97,97,97,97,97,97,97,97,97,870,97,97,67,67,67,1463,67,67,67,67,67,67,67,67,67,67,67,67,67,1579,67,67,97,97,97,1518,97,97,97,97,97,97,97,97,97,97,97,97,97,904,905,97,97,97,97,1620,97,97,97,97,97,97,97,97,97,97,97,0,921,0,0,0,0,0,0,45,1679,67,67,67,1682,67,67,67,67,67,67,67,67,67,1690,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,669,45,45,45,45,45,45,45,45,45,45,45,45,189,45,45,45,1748,45,45,45,1749,1750,45,45,45,45,45,45,45,45,67,67,67,67,1959,67,67,67,67,1768,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,1791,97,97,97,97,97,97,97,97,45,45,45,45,45,45,1802,67,1817,67,67,67,67,67,67,1823,67,67,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,1848,45,45,45,45,45,45,45,45,45,45,45,659,45,45,45,45,45,45,45,1863,67,67,67,67,67,67,67,67,67,67,67,67,495,67,67,67,67,67,1878,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,45,67,67,67,67,97,97,97,97,0,0,0,1973,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1165,97,1167,67,24850,24850,12564,12564,0,0,2166784,0,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,0,97,97,1789,97,0,94242,0,0,0,2211840,102439,0,0,106538,98347,136,2158592,2158592,2158592,2158592,2158592,3158016,229376,2375680,2379776,2158592,2158592,2420736,2158592,2449408,2158592,2158592,67,24850,24850,12564,12564,0,0,280,547,0,53531,53531,0,286,97,97,0,0,97,97,97,97,97,97,0,1788,97,97,0,97,2024,97,45,45,45,45,45,45,67,67,67,67,67,67,67,67,235,67,67,67,67,67,57889,547,547,0,0,550,0,97,97,97,97,97,97,97,97,97,45,45,45,1799,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1092,0,0,0,0,0,97,97,97,97,1612,97,97,97,97,1616,97,1297,1472,0,0,0,0,1303,1474,0,0,0,0,1309,1476,0,0,0,0,97,97,97,1481,97,97,97,97,97,97,1488,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,97,607,97,97,97,97,40976,18,36884,45078,26,30,90143,94242,0,102439,106538,98347,0,0,213080,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,143448,40976,18,18,36884,0,45078,0,24,24,24,27,27,27,27,0,0,0,0,97,97,97,97,1482,97,1483,97,97,97,97,97,97,1326,97,97,1329,1330,97,97,97,97,97,97,1159,1160,97,97,97,97,97,97,97,97,590,97,97,97,97,97,97,97,0,94242,0,0,0,2211974,102439,0,0,106538,98347,0,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2474122,2158730,2158730,2494602,2158730,2158730,2158730,2809994,2158730,2158730,2842762,2158730,2158730,2158730,2900106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3014794,2158730,2158730,3051658,2158730,2158730,3100810,2158730,2158730,2158730,2158730,3096714,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,2207744,541,541,543,543,0,0,2166784,0,548,549,549,0,286,2158877,2158877,2158877,2863389,2892061,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3186973,2158877,0,0,0,0,0,0,0,0,2367626,2158877,2404637,2412829,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2564381,2158877,2158877,2605341,2158877,2158877,2158877,2158877,2158877,2158877,2679069,2158877,2695453,2158877,2703645,2158877,2711837,2752797,2158877,0,2158877,2158877,2158877,2384010,2158730,2158730,2158730,2158730,3006602,2383872,2207744,2207744,2207744,2207744,2207744,2207744,3096576,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,0,2158877,2785565,2158877,2810141,2158877,2158877,2842909,2158877,2158877,2158877,2900253,2158877,2158877,2158877,2158877,2158877,2531613,2158877,2158877,2158877,2158877,2158877,2617629,2158877,2158877,2158877,2158877,2158730,2818186,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3105053,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,0,0,0,0,0,97,97,97,1611,97,97,97,97,97,97,97,1496,97,97,1499,97,97,97,97,97,2441354,2445450,2158730,2158730,2158730,2158730,2158730,2158730,2502794,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2433162,2158730,2453642,2461834,2158730,2158730,2158730,2158730,2158730,2158730,2580618,2158730,2158730,2158730,2158730,2621578,2158730,2158730,2158730,2158730,2158730,2158730,2699402,2158730,2158730,2158730,2158730,2678922,2158730,2695306,2158730,2703498,2158730,2711690,2752650,2158730,2158730,2785418,2158730,2158730,2158730,3113098,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3186826,2158730,2207744,2207744,2207744,2207744,2781184,2793472,2207744,2818048,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,541,0,543,2158877,2502941,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2580765,2158877,2158877,2158877,2158877,2621725,2158877,3019037,2158877,3043613,2158877,2158877,2158877,2158877,3080477,2158877,2158877,3113245,2158877,2158877,2158877,2158877,0,2158877,2908445,2158877,2158877,2158877,2978077,2158877,2158877,2158877,2158877,3039517,2158877,2158730,2510986,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2584714,2158730,2609290,2158730,2158730,2629770,2158730,2158730,2158730,2388106,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2605194,2158730,2158730,2158730,2158730,2687114,2158730,2715786,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2867338,2158730,2904202,2158730,2158730,2158730,2642058,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2781322,2793610,2158730,3121290,2158730,2158730,2158730,3149962,2158730,2158730,3170442,3174538,2158730,2367488,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2441216,2445312,2207744,2207744,2207744,2207744,2207744,2207744,2502656,2158877,2433309,2158877,2453789,2461981,2158877,2158877,2158877,2158877,2158877,2158877,2511133,2158877,2158877,2158877,2158877,2584861,2158877,2609437,2158877,2158877,2629917,2158877,2158877,2158877,2687261,2158877,2715933,2158877,2158730,2158730,2973834,2158730,2982026,2158730,2158730,3002506,2158730,3047562,3063946,3076234,2158730,2158730,2158730,2158730,2207744,2506752,2207744,2207744,2207744,2207744,2207744,2158877,2507037,0,0,2158877,2158730,2158730,2158730,3203210,2207744,2207744,2207744,2207744,2207744,2424832,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2564096,2207744,2207744,2207744,2707741,2732317,2158877,2158877,2158877,2822429,2826525,2158877,2896157,2158877,2158877,2924829,2158877,2158877,2973981,2158877,18,0,0,0,0,0,0,0,2211840,0,0,642,0,2158592,0,45,1529,45,45,45,45,45,45,45,45,45,45,45,45,45,1755,45,67,67,2982173,2158877,2158877,3002653,2158877,3047709,3064093,3076381,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3203357,2523274,2527370,2158730,2158730,2576522,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2908298,2494749,2158877,2158877,2158877,2523421,2527517,2158877,2158877,2576669,2158877,2158877,2158877,2158877,2158877,2158877,0,40976,0,18,18,4321280,2224253,2232448,4329472,2232448,2158730,2498698,2158730,2158730,2158730,2158730,2568330,2158730,2592906,2625674,2158730,2158730,2674826,2736266,2158730,2158730,2158730,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2158730,2912394,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3109002,2158730,2158730,3133578,3145866,3154058,2375680,2207744,3108864,2207744,2207744,3133440,3145728,3153920,2375965,2380061,2158877,2158877,2421021,2158877,2449693,2158877,2158877,2158877,3117341,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3104906,2158730,2158730,2158730,2158730,2158730,2158730,2158877,2498845,2158877,2158877,0,2158877,2158877,2568477,2158877,2593053,2625821,2158877,2158877,2674973,0,0,0,0,97,97,1480,97,97,97,97,97,1485,97,97,97,0,97,97,1729,97,1731,97,97,97,97,97,97,97,311,97,97,97,97,97,97,97,97,1520,97,97,1523,97,97,1526,97,2736413,2158877,2158877,0,2158877,2912541,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3109149,2158877,2158877,3014941,2158877,2158877,3051805,2158877,2158877,3100957,2158877,2158877,3121437,2158877,2158877,2158877,3150109,3133725,3146013,3154205,2158730,2408586,2416778,2158730,2465930,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3018890,2158730,3043466,2158730,2158730,2158730,2158730,3080330,2633866,2658442,2740362,2744458,2834570,2949258,2158730,2986122,2158730,2998410,2158730,2158730,2158730,3129482,2207744,2408448,2949120,2207744,2985984,2207744,2998272,2207744,2207744,2207744,3129344,2158877,2408733,2416925,2158877,2466077,2158877,2158877,3170589,3174685,2158877,0,0,0,2158730,2158730,2158730,2158730,2158730,2424970,2158730,2158730,2158730,2158730,2707594,2732170,2158730,2158730,2158730,2822282,2826378,2158730,2896010,2158730,2158730,2924682,2949405,2158877,2986269,2158877,2998557,2158877,2158877,2158877,3129629,2158730,2158730,2478218,2158730,2158730,2158730,2535562,2543754,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,2158730,3117194,2207744,2207744,2478080,2207744,2207744,2207744,2207744,3014656,2207744,2207744,3051520,2207744,2207744,3100672,2207744,2207744,3121152,2207744,2207744,2207744,2207744,2207744,2584576,2207744,2609152,2207744,2207744,2629632,2207744,2207744,2207744,2686976,2207744,2207744,2535424,2543616,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,3117056,2158877,2158877,2478365,0,2158877,2158877,2158877,2158877,2158877,2158877,2158730,2158730,2482314,2158730,2158730,2158730,2158730,2158730,2158730,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,823,0,825,2158730,2158730,2158730,2990218,2158730,2158730,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,135,0,2207744,2207744,2990080,2207744,2207744,2158877,2158877,2482461,2158877,2158877,0,0,0,2158877,2158877,2158877,2158877,2158877,2158730,2429066,2158730,2515082,2158730,2588810,2158730,2838666,2158730,2158730,2158730,3010698,2207744,2428928,2207744,2514944,2207744,2588672,2207744,2838528,2207744,2207744,2207744,3010560,2158877,2429213,2158877,2515229,0,0,2158877,2588957,2158877,0,2838813,2158877,2158877,2158877,3010845,2158730,2506890,2158730,2158730,2158730,2748554,2756746,2777226,2801802,2158730,2158730,2158730,2863242,2891914,2158730,2158730,2158730,2158730,2158730,2158730,2564234,2158730,2158730,2158730,2158730,2158730,2597002,2158730,2158730,2158730,3006464,2384157,0,0,2158877,2158877,2158877,2158877,3006749,2158730,2637962,2953354,2158730,2207744,2637824,2953216,2207744,0,0,2158877,2638109,2953501,2158877,2539658,2158730,2539520,2207744,0,0,2539805,2158877,2158730,2158730,2158730,2977930,2158730,2158730,2158730,2158730,3039370,2158730,2158730,2158730,2158730,2158730,2158730,3158154,2207744,0,2158877,2158730,2207744,0,2158877,2158730,2207744,0,2158877,2965642,2965504,2965789,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,97,1484,97,97,97,97,2158592,18,0,122880,0,0,0,77824,0,2211840,0,0,0,0,2158592,0,356,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,45,1751,45,45,45,45,45,45,45,67,67,1427,67,67,67,67,67,1432,67,67,67,3104768,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,122880,0,0,0,0,1315,0,0,0,0,97,97,97,97,97,97,1322,550,0,286,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,4329472,27,27,2207744,2207744,2977792,2207744,2207744,2207744,2207744,3039232,2207744,2207744,2207744,2207744,2207744,2207744,3158016,542,0,0,0,542,0,544,0,0,0,544,0,550,0,0,0,0,0,97,97,1610,97,97,97,97,97,97,97,97,898,97,97,97,97,97,97,97,0,94242,0,0,0,2211840,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,2158592,2158592,2158592,40976,18,36884,45078,24,27,90143,94242,237568,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,192512,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,94,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,96,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,12378,40976,18,18,36884,0,45078,0,24,24,24,126,126,126,126,90143,0,0,2170880,0,0,0,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,20480,40976,0,18,18,24,24,27,27,27,40976,18,36884,45078,24,27,90143,94242,241664,102439,106538,98347,0,0,20568,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,200797,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,0,0,44,0,0,20575,40976,18,36884,45078,24,27,90143,94242,0,41,41,41,0,0,1126400,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,0,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,89,40976,18,18,36884,0,45078,0,24,24,24,27,131201,27,27,90143,0,0,2170880,0,0,550,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2441216,2445312,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,208896,2211840,102439,0,0,106538,98347,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,0,0,0,0,0,0,2367488,32768,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2433024,2158592,2453504,2461696,2158592,2158592,2158592,2158592,2158592,2158592,2510848,2158592,2158592,2158592,2158592,40976,18,36884,245783,24,27,90143,94242,0,102439,106538,98347,0,0,20480,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,221184,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,180224,40976,18,18,36884,155648,45078,0,24,24,217088,27,27,27,217088,90143,0,0,2170880,0,0,828,0,2158592,2158592,2158592,2387968,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2387968,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,233472,0,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,718,45,45,45,45,45,45,45,45,45,727,131427,0,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,45,1808,45,45,45,45,67,67,67,67,67,67,67,97,97,0,0,97,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,0,0,97,97,97,97,97,97,1787,0,97,97,0,97,97,97,45,45,45,45,2029,45,67,67,67,67,2033,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,97,45,1798,45,45,1800,45,45,0,1472,0,0,0,0,0,1474,0,0,0,0,0,1476,0,0,0,0,1315,0,0,0,0,97,97,97,97,1320,97,97,0,0,97,97,97,97,1786,97,0,0,97,97,0,1790,1527,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,663,67,24850,24850,12564,12564,0,57889,281,0,0,53531,53531,367,286,97,97,0,0,97,97,97,1785,97,97,0,0,97,97,0,97,97,1979,97,97,45,45,1983,45,1984,45,45,45,45,45,652,45,45,45,45,45,45,45,45,45,45,690,45,45,694,45,45,40976,19,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,262144,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,46,67,98,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,45,67,97,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,258048,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,1122423,40976,18,36884,45078,24,27,90143,94242,0,1114152,1114152,1114152,0,0,1114112,40976,18,36884,45078,24,27,90143,94242,37,102439,106538,98347,0,0,204800,40976,18,36884,45078,24,27,90143,94242,0,102439,106538,98347,0,0,57436,40976,18,36884,45078,24,27,33,33,0,33,33,33,0,0,0,40976,18,18,36884,0,45078,0,124,124,124,127,127,127,127,90143,0,0,2170880,0,0,550,0,2158877,2158877,2158877,2388253,2158877,2158877,2158877,2158877,2158877,2781469,2793757,2158877,2818333,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2867485,2158877,2904349,2158877,2158877,2158877,2158877,2158877,2158877,2158877,3096861,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2158877,2441501,2445597,2158877,2158877,2158877,2158877,2158877,40976,122,123,36884,0,45078,0,24,24,24,27,27,27,27,90143,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,936,2158592,4243810,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,935,45,45,45,715,45,45,45,45,45,45,45,723,45,45,45,45,45,1182,45,45,45,45,45,45,45,45,45,45,430,45,45,45,45,45,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,47,68,99,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,48,69,100,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,49,70,101,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,50,71,102,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,51,72,103,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,52,73,104,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,53,74,105,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,54,75,106,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,55,76,107,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,56,77,108,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,57,78,109,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,58,79,110,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,59,80,111,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,60,81,112,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,61,82,113,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,62,83,114,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,63,84,115,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,64,85,116,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,65,86,117,40976,18,36884,45078,24,27,90143,94242,38,102439,106538,98347,66,87,118,40976,18,36884,45078,24,27,90143,94242,118820,102439,106538,98347,118820,118820,118820,40976,18,18,0,0,45078,0,24,24,24,27,27,27,27,90143,0,0,1314,0,0,0,0,0,0,97,97,97,97,97,1321,97,18,131427,0,0,0,0,0,0,362,0,0,365,0,367,0,0,1315,0,97,97,97,97,97,97,97,97,97,97,97,97,97,1360,97,97,131,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,145,149,45,45,45,45,45,174,45,179,45,185,45,188,45,45,202,67,255,67,67,269,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,292,296,97,97,97,97,97,321,97,326,97,332,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,646,335,97,97,349,97,97,0,40976,0,18,18,24,24,27,27,27,437,45,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,523,67,67,67,67,67,67,67,67,67,67,67,67,511,67,67,67,97,97,97,620,97,97,97,97,97,97,97,97,97,97,97,97,97,1501,1502,97,793,67,67,796,67,67,67,67,67,67,67,67,67,67,808,67,0,0,97,97,97,97,45,45,67,67,0,0,97,97,2052,67,67,67,67,813,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,830,97,97,97,97,97,97,97,97,97,315,97,97,97,97,97,97,841,97,97,97,97,97,97,97,97,97,854,97,97,97,97,97,97,589,97,97,97,97,97,97,97,97,97,867,97,97,97,97,97,97,97,891,97,97,894,97,97,97,97,97,97,97,97,97,97,906,45,937,45,45,940,45,45,45,45,45,45,948,45,45,45,45,45,734,735,67,737,67,738,67,740,67,67,67,45,967,45,45,45,45,45,45,45,45,45,45,45,45,45,45,435,45,45,45,980,45,45,45,45,45,45,45,45,45,45,45,45,45,415,45,45,67,67,1024,67,67,67,67,67,67,67,67,67,67,67,67,67,97,97,97,67,67,67,67,67,25398,1081,13112,1085,54074,1089,0,0,0,0,0,0,363,0,28809,0,139,45,45,45,45,45,45,1674,45,45,45,45,45,45,45,45,67,1913,67,1914,67,67,67,1918,67,67,97,97,97,97,1118,97,97,97,97,97,97,97,97,97,97,97,630,97,97,97,97,97,1169,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,45,1534,45,45,45,45,45,1538,45,45,45,45,1233,45,45,45,45,45,45,67,67,67,67,67,67,67,67,742,67,45,45,1191,45,45,45,45,45,45,45,45,45,45,45,45,45,454,67,67,67,67,1243,67,67,67,67,67,67,67,67,67,67,67,1251,67,0,0,97,97,97,97,45,45,67,67,2050,0,97,97,45,45,45,732,45,45,67,67,67,67,67,67,67,67,67,67,67,67,97,97,67,67,67,1284,67,67,67,67,67,67,67,67,67,67,67,67,772,67,67,67,1293,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,368,2158592,2158592,2158592,2404352,2412544,1323,97,97,97,97,97,97,97,97,97,97,97,1331,97,97,97,0,97,97,97,97,97,97,97,97,97,97,97,1737,97,1364,97,97,97,97,97,97,97,97,97,97,97,97,1373,97,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,647,45,45,1387,45,45,1391,45,45,45,45,45,45,45,45,45,45,410,45,45,45,45,45,1400,45,45,45,45,45,45,45,45,45,45,1407,45,45,45,45,45,941,45,943,45,45,45,45,45,45,951,45,67,1438,67,67,67,67,67,67,67,67,67,67,1447,67,67,67,67,67,67,782,67,67,67,67,67,67,67,67,67,756,67,67,67,67,67,67,97,1491,97,97,97,97,97,97,97,97,97,97,1500,97,97,97,0,97,97,97,97,97,97,97,97,97,97,1736,97,45,45,1541,45,45,45,45,45,45,45,45,45,45,45,45,45,677,45,45,67,1581,67,67,67,67,67,67,67,67,67,67,67,67,67,67,791,792,67,67,67,67,1598,67,1600,67,67,67,67,67,67,67,67,1472,97,97,97,1727,97,97,97,97,97,97,97,97,97,97,97,97,97,1513,97,97,67,67,97,1879,97,1881,97,0,1884,0,97,97,97,97,0,0,97,97,97,97,97,0,0,0,1842,97,97,67,67,67,67,67,97,97,97,97,1928,0,0,0,97,97,97,97,97,97,45,45,45,45,45,1903,45,45,45,67,67,67,67,97,97,97,97,1971,0,0,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,0,45,45,45,1381,45,45,45,45,1976,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1747,809,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,97,907,97,97,97,97,97,97,97,97,97,97,97,638,0,0,0,0,1478,97,97,97,97,97,97,97,97,97,97,97,1150,97,97,97,97,67,67,67,67,1244,67,67,67,67,67,67,67,67,67,67,67,477,67,67,67,67,67,67,1294,67,67,67,67,0,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1324,97,97,97,97,97,97,97,97,97,97,97,97,97,0,0,0,1374,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,945,45,45,45,45,45,45,45,45,1908,45,45,1910,45,67,67,67,67,67,67,67,67,1919,67,0,0,97,97,97,97,45,2048,67,2049,0,0,97,2051,45,45,45,939,45,45,45,45,45,45,45,45,45,45,45,45,397,45,45,45,1921,67,67,1923,67,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1947,45,1935,0,0,0,97,1939,97,97,1941,97,45,45,45,45,45,45,382,389,45,45,45,45,45,45,45,45,1810,45,45,1812,67,67,67,67,67,256,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,336,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,45,371,373,45,45,45,955,45,45,45,45,45,45,45,45,45,45,45,45,413,45,45,45,457,459,67,67,67,67,67,67,67,67,473,67,478,67,67,482,67,67,485,67,67,67,67,67,67,67,67,67,67,67,67,67,97,1828,97,554,556,97,97,97,97,97,97,97,97,570,97,575,97,97,579,97,97,582,97,97,97,97,97,97,97,97,97,97,97,97,97,330,97,97,67,746,67,67,67,67,67,67,67,67,67,758,67,67,67,67,67,67,67,1575,67,67,67,67,67,67,67,67,493,67,67,67,67,67,67,67,97,97,844,97,97,97,97,97,97,97,97,97,856,97,97,97,0,97,97,97,97,97,97,97,97,1735,97,97,97,0,97,97,97,97,97,97,97,1642,97,1644,97,97,890,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,0,67,67,67,67,1065,1066,67,67,67,67,67,67,67,67,67,67,532,67,67,67,67,67,67,67,1451,67,67,67,67,67,67,67,67,67,67,67,67,67,496,67,67,97,97,1505,97,97,97,97,97,97,97,97,97,97,97,97,97,593,97,97,0,1474,0,1476,0,97,97,97,97,97,97,97,97,97,97,1617,97,97,1635,0,1637,97,97,97,97,97,97,97,97,97,97,97,885,97,97,97,97,67,67,1704,67,67,67,67,97,97,97,97,97,97,97,97,97,565,572,97,97,97,97,97,97,97,97,1832,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,1946,45,45,67,67,67,67,67,97,1926,97,1927,97,0,0,0,97,97,1934,2043,0,0,97,97,97,2047,45,45,67,67,0,1832,97,97,45,45,45,981,45,45,45,45,45,45,45,45,45,45,45,45,1227,45,45,45,131427,0,0,0,0,362,0,365,28809,367,139,45,45,372,45,45,45,45,1661,1662,45,45,45,45,45,1666,45,45,45,45,45,1673,45,1675,45,45,45,45,45,45,45,67,1426,67,67,67,67,67,67,67,67,67,67,1275,67,67,67,67,67,45,418,45,45,420,45,45,423,45,45,45,45,45,45,45,45,959,45,45,962,45,45,45,45,458,67,67,67,67,67,67,67,67,67,67,67,67,67,67,483,67,67,67,67,504,67,67,506,67,67,509,67,67,67,67,67,67,67,528,67,67,67,67,67,67,67,67,1287,67,67,67,67,67,67,67,555,97,97,97,97,97,97,97,97,97,97,97,97,97,97,580,97,97,97,97,601,97,97,603,97,97,606,97,97,97,97,97,97,848,97,97,97,97,97,97,97,97,97,1498,97,97,97,97,97,97,45,45,714,45,45,45,45,45,45,45,45,45,45,45,45,45,989,990,45,67,67,67,67,67,1011,67,67,67,67,1015,67,67,67,67,67,67,67,753,67,67,67,67,67,67,67,67,467,67,67,67,67,67,67,67,45,45,1179,45,45,45,45,45,45,45,45,45,45,45,45,45,1003,1004,67,1217,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,728,67,1461,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1034,67,97,1516,97,97,97,97,97,97,97,97,97,97,97,97,97,97,871,97,67,67,67,1705,67,67,67,97,97,97,97,97,97,97,97,97,567,97,97,97,97,97,97,97,97,97,97,1715,97,97,97,97,97,97,97,97,97,0,0,0,45,45,1380,45,45,45,45,45,67,67,97,97,97,97,97,0,0,0,97,1887,97,97,0,0,97,97,97,0,97,97,97,97,97,2006,45,45,1907,45,45,45,45,45,67,67,67,67,67,67,67,67,67,1920,67,97,0,2035,97,97,97,97,97,45,45,45,45,67,67,67,1428,67,67,67,67,67,67,1435,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,146,45,152,45,45,165,45,175,45,180,45,45,187,190,195,45,203,254,257,262,67,270,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,293,97,299,97,97,312,97,322,97,327,97,97,334,337,342,97,350,97,97,0,40976,0,18,18,24,24,27,27,27,67,484,67,67,67,67,67,67,67,67,67,67,67,67,67,499,97,581,97,97,97,97,97,97,97,97,97,97,97,97,97,596,648,45,650,45,651,45,653,45,45,45,657,45,45,45,45,45,45,1954,67,67,67,1958,67,67,67,67,67,67,67,768,67,67,67,67,67,67,67,67,769,67,67,67,67,67,67,67,680,45,45,45,45,45,45,45,45,688,689,691,45,45,45,45,45,983,45,45,45,45,45,45,45,45,45,45,947,45,45,45,45,952,45,45,698,699,45,45,702,703,45,45,45,45,45,45,45,711,744,67,67,67,67,67,67,67,67,67,757,67,67,67,67,761,67,67,67,67,765,67,767,67,67,67,67,67,67,67,67,775,776,778,67,67,67,67,67,67,785,786,67,67,789,790,67,67,67,67,67,67,1442,67,67,67,67,67,67,67,67,67,97,97,97,1775,97,97,97,67,67,67,67,67,798,67,67,67,802,67,67,67,67,67,67,67,67,1465,67,67,1468,67,67,1471,67,67,810,67,67,67,67,67,67,67,67,67,821,25398,542,13112,544,57889,0,0,54074,54074,550,0,833,97,835,97,836,97,838,97,97,0,0,97,97,97,2002,97,97,97,97,97,45,45,45,45,45,1740,45,45,45,1744,45,45,45,97,842,97,97,97,97,97,97,97,97,97,855,97,97,97,97,0,1717,1718,97,97,97,97,97,1722,97,0,0,859,97,97,97,97,863,97,865,97,97,97,97,97,97,97,97,604,97,97,97,97,97,97,97,873,874,876,97,97,97,97,97,97,883,884,97,97,887,888,97,18,131427,0,0,0,0,0,0,362,225280,0,365,0,367,0,45,45,45,1531,45,45,45,45,45,45,45,45,45,45,45,1199,45,45,45,45,45,97,97,908,97,97,97,97,97,97,97,97,97,919,638,0,0,0,0,2158877,2158877,2158877,2158877,2158877,2425117,2158877,2158877,2158877,2158877,2158877,2158877,2597149,2158877,2158877,2158877,2158877,2158877,2158877,2642205,2158877,2158877,2158877,2158877,2158877,3158301,0,2375818,2379914,2158730,2158730,2420874,2158730,2449546,2158730,2158730,953,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,965,978,45,45,45,45,45,45,985,45,45,45,45,45,45,45,45,971,45,45,45,45,45,45,45,67,67,67,67,67,1027,67,1029,67,67,67,67,67,67,67,67,67,1455,67,67,67,67,67,67,67,1077,1078,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,366,0,139,2158730,2158730,2158730,2404490,2412682,1113,97,97,97,97,97,97,1121,97,1123,97,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1540,1155,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,615,1168,97,97,1171,1172,97,97,0,921,0,1175,0,0,0,0,45,45,45,45,45,1533,45,45,45,45,45,45,45,45,45,1663,45,45,45,45,45,45,45,45,45,183,45,45,45,45,201,45,45,45,1219,45,45,45,45,45,45,45,1226,45,45,45,45,45,168,45,45,45,45,45,45,45,45,45,45,427,45,45,45,45,45,45,45,1231,45,45,45,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,1242,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1046,67,67,1254,67,1256,67,67,67,67,67,67,67,67,67,67,67,67,806,807,67,67,97,1336,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1111,97,97,97,97,97,1351,97,97,97,1354,97,97,97,1359,97,97,97,0,97,97,97,97,1640,97,97,97,97,97,97,97,897,97,97,97,902,97,97,97,97,97,97,97,97,1366,97,97,97,97,97,97,97,1371,97,97,97,0,97,97,97,1730,97,97,97,97,97,97,97,97,915,97,97,97,97,0,360,0,67,67,67,1440,67,67,67,67,67,67,67,67,67,67,67,67,1017,67,1019,67,67,67,67,67,1453,67,67,67,67,67,67,67,67,67,67,1459,97,97,97,1493,97,97,97,97,97,97,97,97,97,97,97,97,97,1525,97,97,97,97,97,97,1507,97,97,97,97,97,97,97,97,97,97,1514,67,67,67,67,1584,67,67,67,67,67,1590,67,67,67,67,67,67,67,783,67,67,67,788,67,67,67,67,67,67,67,67,67,1599,1601,67,67,67,1604,67,1606,1607,67,1472,0,1474,0,1476,0,97,97,97,97,97,97,1614,97,97,97,97,45,45,1850,45,45,45,45,1855,45,45,45,45,45,1222,45,45,45,45,45,45,45,45,45,1229,97,1618,97,97,97,97,97,97,97,1625,97,97,97,97,97,0,1175,0,45,45,45,45,45,45,45,45,447,45,45,45,45,45,67,67,1633,97,97,0,97,97,97,97,97,97,97,97,1643,1645,97,97,0,0,97,97,1784,97,97,97,0,0,97,97,0,97,1894,1895,97,1897,97,45,45,45,45,45,45,45,45,45,656,45,45,45,45,45,45,97,1648,97,1650,1651,97,0,45,45,45,1654,45,45,45,45,45,169,45,45,45,45,45,45,45,45,45,45,658,45,45,45,45,664,45,45,1659,45,45,45,45,45,45,45,45,45,45,45,45,45,1187,45,45,1669,45,45,45,45,45,45,45,45,45,45,45,45,45,45,67,1005,67,67,1681,67,67,67,67,67,67,67,1686,67,67,67,67,67,67,67,784,67,67,67,67,67,67,67,67,1055,67,67,67,67,1060,67,67,97,97,1713,97,0,97,97,97,97,97,97,97,97,97,0,0,0,1378,45,45,45,45,45,45,45,408,45,45,45,45,45,45,45,45,1547,45,1549,45,45,45,45,45,97,97,1780,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,45,45,2027,2028,45,45,67,67,2031,2032,67,45,45,1804,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1917,67,67,67,67,67,67,67,1819,67,67,67,67,67,67,67,67,97,97,97,1708,97,97,97,97,97,45,45,1862,67,67,67,67,67,67,67,67,67,67,67,67,67,497,67,67,67,1877,97,97,97,97,97,0,0,0,97,97,97,97,0,0,97,97,97,97,97,1839,0,0,97,97,97,97,1936,0,0,97,97,97,97,97,97,1943,1944,1945,45,45,45,45,670,45,45,45,45,674,45,45,45,45,678,45,1948,45,1950,45,45,45,45,1955,1956,1957,67,67,67,1960,67,1962,67,67,67,67,1967,1968,1969,97,0,0,0,97,97,1974,97,0,1936,0,97,97,97,97,97,97,45,45,45,45,45,45,45,45,1906,0,1977,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,1746,45,45,45,45,2011,67,67,2013,67,67,67,2017,97,97,0,0,2021,97,8192,97,97,2025,45,45,45,45,45,45,67,67,67,67,67,1916,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,140,45,45,45,1180,45,45,45,45,1184,45,45,45,45,45,45,45,387,45,392,45,45,396,45,45,399,45,45,67,207,67,67,67,67,67,67,236,67,67,67,67,67,67,67,800,67,67,67,67,67,67,67,67,67,1603,67,67,67,67,67,0,97,97,287,97,97,97,97,97,97,316,97,97,97,97,97,97,0,45,45,45,45,45,45,45,1656,1657,45,376,45,45,45,45,45,388,45,45,45,45,45,45,45,45,1406,45,45,45,45,45,45,45,67,67,67,67,462,67,67,67,67,67,474,67,67,67,67,67,67,67,817,67,67,67,67,25398,542,13112,544,97,97,97,97,559,97,97,97,97,97,571,97,97,97,97,97,97,896,97,97,97,900,97,97,97,97,97,97,912,914,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,45,391,45,45,45,45,45,45,45,45,713,45,45,45,45,45,45,45,45,45,45,45,45,45,45,662,45,1140,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,636,67,67,1283,67,67,67,67,67,67,67,67,67,67,67,67,67,513,67,67,1363,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,889,97,97,97,1714,0,97,97,97,97,97,97,97,97,97,0,0,926,45,45,45,45,45,45,45,45,672,45,45,45,45,45,45,45,45,686,45,45,45,45,45,45,45,45,944,45,45,45,45,45,45,45,45,1676,45,45,45,45,45,45,67,97,97,97,1833,0,97,97,97,97,97,0,0,0,97,97,97,97,97,97,45,45,45,45,1902,45,45,45,45,45,957,45,45,45,45,961,45,963,45,45,45,67,97,2034,0,97,97,97,97,97,2040,45,45,45,2042,67,67,67,67,67,67,1574,67,67,67,67,67,1578,67,67,67,67,67,67,799,67,67,67,804,67,67,67,67,67,67,67,1298,0,0,0,1304,0,0,0,1310,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,45,1414,45,45,45,45,45,45,45,45,45,45,428,45,45,45,45,45,57889,0,0,54074,54074,550,831,97,97,97,97,97,97,97,97,97,568,97,97,97,97,578,97,45,45,968,45,45,45,45,45,45,45,45,45,45,45,45,45,1228,45,45,67,67,67,67,67,25398,1082,13112,1086,54074,1090,0,0,0,0,0,0,364,0,0,0,139,2158592,2158592,2158592,2404352,2412544,67,67,67,67,1464,67,67,67,67,67,67,67,67,67,67,67,510,67,67,67,67,97,97,97,97,1519,97,97,97,97,97,97,97,97,97,97,97,918,97,0,0,0,0,1528,45,45,45,45,45,45,45,45,45,45,45,45,45,45,976,45,1554,45,45,45,45,45,45,45,45,1562,45,45,1565,45,45,45,45,683,45,45,45,687,45,45,692,45,45,45,45,45,1953,45,67,67,67,67,67,67,67,67,67,1014,67,67,67,67,67,67,1568,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,0,67,67,67,67,67,1585,67,67,67,67,67,67,67,67,67,1594,97,97,1649,97,97,97,0,45,45,1653,45,45,45,45,45,45,383,45,45,45,45,45,45,45,45,45,986,45,45,45,45,45,45,45,45,1670,45,1672,45,45,45,45,45,45,45,45,45,45,67,736,67,67,67,67,67,741,67,67,67,1680,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1074,67,67,67,1692,67,67,67,67,67,67,67,1697,67,1699,67,67,67,67,67,67,1012,67,67,67,67,67,67,67,67,67,468,475,67,67,67,67,67,67,1769,67,67,67,67,67,67,67,97,97,97,97,97,97,97,624,97,97,97,97,97,97,634,97,97,1792,97,97,97,97,97,97,97,45,45,45,45,45,45,45,958,45,45,45,45,45,45,964,45,150,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,977,204,45,67,67,67,217,67,67,67,67,67,67,67,67,67,67,787,67,67,67,67,67,67,67,67,67,67,271,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,351,97,0,40976,0,18,18,24,24,27,27,27,45,45,938,45,45,45,45,45,45,45,45,45,45,45,45,45,1398,45,45,45,153,45,161,45,45,45,45,45,45,45,45,45,45,45,45,660,661,45,45,205,45,67,67,67,67,220,67,228,67,67,67,67,67,67,67,0,0,0,0,0,280,94,0,0,67,67,67,67,67,272,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,97,352,97,0,40976,0,18,18,24,24,27,27,27,45,439,45,45,45,45,45,445,45,45,45,452,45,45,67,67,212,216,67,67,67,67,67,241,67,246,67,252,67,67,486,67,67,67,67,67,67,67,494,67,67,67,67,67,67,67,1245,67,67,67,67,67,67,67,67,1013,67,67,1016,67,67,67,67,67,521,67,67,525,67,67,67,67,67,531,67,67,67,538,67,0,0,2046,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1192,45,45,45,45,45,45,45,45,45,45,45,45,1418,45,45,1421,97,97,583,97,97,97,97,97,97,97,591,97,97,97,97,97,97,913,97,97,97,97,97,97,0,0,0,45,45,45,45,45,45,45,1384,97,618,97,97,622,97,97,97,97,97,628,97,97,97,635,97,18,131427,0,0,0,639,0,132,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,932,45,45,45,45,45,1544,45,45,45,45,45,1550,45,45,45,45,45,1194,45,1196,45,45,45,45,45,45,45,45,999,45,45,45,45,45,67,67,45,45,667,45,45,45,45,45,45,45,45,45,45,45,45,45,1408,45,45,45,696,45,45,45,701,45,45,45,45,45,45,45,45,710,45,45,45,1220,45,45,45,45,45,45,45,45,45,45,45,45,194,45,45,45,729,45,45,45,45,45,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,797,67,67,67,67,67,67,805,67,67,67,67,67,67,67,1587,67,1589,67,67,67,67,67,67,67,67,1763,67,67,67,67,67,67,67,0,0,0,0,0,0,2162968,0,0,67,67,67,67,67,814,816,67,67,67,67,67,25398,542,13112,544,67,67,1008,67,67,67,67,67,67,67,67,67,67,67,1020,67,0,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,45,67,67,67,67,1429,67,1430,67,67,67,67,67,1062,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,518,1076,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,0,0,0,28809,0,139,45,45,45,45,45,97,97,97,97,1102,97,97,97,97,97,97,97,97,97,97,97,1124,97,1126,97,97,1114,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1112,97,97,1156,97,97,97,97,97,97,97,97,97,97,97,97,97,594,97,97,97,97,1170,97,97,97,97,0,921,0,0,0,0,0,0,45,45,45,45,1532,45,45,45,45,1536,45,45,45,45,45,172,45,45,45,45,45,45,45,45,45,45,706,45,45,709,45,45,1177,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1202,45,1204,45,45,45,45,45,45,45,45,45,45,45,45,1215,45,45,45,1232,45,45,45,45,45,45,45,67,1237,67,67,67,67,67,67,1053,1054,67,67,67,67,67,67,1061,67,67,1282,67,67,67,67,67,67,67,67,67,1289,67,67,67,1292,97,97,97,97,1339,97,97,97,97,97,97,1344,97,97,97,97,45,1849,45,1851,45,45,45,45,45,45,45,45,721,45,45,45,45,45,726,45,1385,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1188,45,45,1401,1402,45,45,45,45,1405,45,45,45,45,45,45,45,45,1752,45,45,45,45,45,67,67,1410,45,45,45,1413,45,1415,45,45,45,45,45,45,1419,45,45,45,45,1806,45,45,45,45,45,45,67,67,67,67,67,67,67,97,97,2019,0,97,67,67,67,1452,67,67,67,67,67,67,67,67,1457,67,67,67,67,67,67,1259,67,67,67,67,67,67,1264,67,67,1460,67,1462,67,67,67,67,67,67,1466,67,67,67,67,67,67,67,67,1588,67,67,67,67,67,67,67,0,1300,0,0,0,1306,0,0,0,97,97,97,1506,97,97,97,97,97,97,97,97,1512,97,97,97,0,1728,97,97,97,97,97,97,97,97,97,97,97,901,97,97,97,97,1515,97,1517,97,97,97,97,97,97,1521,97,97,97,97,97,97,0,45,1652,45,45,45,1655,45,45,45,45,45,1542,45,45,45,45,45,45,45,45,45,45,45,45,45,1552,1553,45,45,45,1556,45,45,45,45,45,45,45,45,45,45,45,45,45,693,45,45,45,67,67,67,67,1572,67,67,67,67,1576,67,67,67,67,67,67,67,67,1602,67,67,1605,67,67,67,0,67,1582,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1580,67,67,1596,67,67,67,67,67,67,67,67,67,67,67,67,67,0,542,0,544,67,67,67,67,1759,67,67,67,67,67,67,67,67,67,67,67,533,67,67,67,67,67,67,67,1770,67,67,67,67,67,97,97,97,97,97,97,1777,97,97,97,1793,97,97,97,97,97,45,45,45,45,45,45,45,998,45,45,1001,1002,45,45,67,67,45,1861,45,67,67,67,67,67,67,67,67,1871,67,1873,1874,67,0,97,45,67,0,97,45,67,16384,97,45,67,97,0,0,0,1473,0,1082,0,0,0,1475,0,1086,0,0,0,1477,1876,67,97,97,97,97,97,1883,0,1885,97,97,97,1889,0,0,0,286,0,0,0,286,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,0,40976,0,18,18,24,24,126,126,126,2053,0,2055,45,67,0,97,45,67,0,97,45,67,97,0,0,97,97,97,2039,97,45,45,45,45,67,67,67,67,67,226,67,67,67,67,67,67,67,67,1246,67,67,1249,1250,67,67,67,132,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,141,45,45,45,1403,45,45,45,45,45,45,45,45,45,45,45,45,1186,45,45,1189,45,45,155,45,45,45,45,45,45,45,45,45,191,45,45,45,45,700,45,45,45,45,45,45,45,45,45,45,45,1753,45,45,45,67,67,45,45,67,208,67,67,67,222,67,67,67,67,67,67,67,67,67,1764,67,67,67,67,67,67,67,258,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,288,97,97,97,302,97,97,97,97,97,97,97,97,97,627,97,97,97,97,97,97,338,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,0,362,0,365,28809,367,139,45,370,45,45,45,45,716,45,45,45,45,45,722,45,45,45,45,45,45,1912,67,67,67,67,67,67,67,67,67,819,67,67,25398,542,13112,544,45,403,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1409,45,67,67,67,67,489,67,67,67,67,67,67,67,67,67,67,67,771,67,67,67,67,520,67,67,67,67,67,67,67,67,67,67,67,534,67,67,67,67,67,67,1271,67,67,67,1274,67,67,67,1279,67,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,553,97,97,97,97,586,97,97,97,97,97,97,97,97,97,97,97,1138,97,97,97,97,617,97,97,97,97,97,97,97,97,97,97,97,631,97,97,97,0,1834,97,97,97,97,97,0,0,0,97,97,97,97,97,353,0,40976,0,18,18,24,24,27,27,27,45,45,668,45,45,45,45,45,45,45,45,45,45,45,45,45,724,45,45,45,45,45,682,45,45,45,45,45,45,45,45,45,45,45,45,45,949,45,45,45,67,67,747,748,67,67,67,67,755,67,67,67,67,67,67,67,0,0,0,1302,0,0,0,1308,0,67,794,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1701,67,97,97,97,845,846,97,97,97,97,853,97,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,97,892,97,97,97,97,97,97,97,97,97,97,97,97,97,610,97,97,45,992,45,45,45,45,45,45,45,45,45,45,45,45,67,67,67,1239,67,67,67,1063,67,67,67,67,67,1068,67,67,67,67,67,67,67,0,0,1301,0,0,0,1307,0,0,97,1141,97,97,97,97,97,97,97,97,97,97,97,1152,97,97,0,0,97,97,2001,0,97,2003,97,97,97,45,45,45,1739,45,45,45,1742,45,45,45,45,45,97,97,97,97,1157,97,97,97,97,97,1162,97,97,97,97,97,97,1145,97,97,97,97,97,1151,97,97,97,1253,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,539,45,1423,45,45,67,67,67,67,67,67,67,1431,67,67,67,67,67,67,67,1695,67,67,67,67,67,1700,67,1702,67,67,1439,67,67,67,67,67,67,67,67,67,67,67,67,67,514,67,67,97,97,1492,97,97,97,97,97,97,97,97,97,97,97,97,97,611,97,97,1703,67,67,67,67,67,67,97,97,97,97,97,97,97,97,97,852,97,97,97,97,97,97,45,1949,45,1951,45,45,45,67,67,67,67,67,67,67,1961,67,0,97,45,67,0,97,2060,2061,0,2062,45,67,97,0,0,2036,97,97,97,97,45,45,45,45,67,67,67,67,67,223,67,67,237,67,67,67,67,67,67,67,1272,67,67,67,67,67,67,67,67,507,67,67,67,67,67,67,67,1963,67,67,67,97,97,97,97,0,1972,0,97,97,97,1975,0,921,29315,0,0,0,0,45,45,45,931,45,45,45,45,45,407,45,45,45,45,45,45,45,45,45,417,45,45,1989,67,67,67,67,67,67,67,67,67,67,67,1996,97,18,131427,0,0,360,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,0,45,45,930,45,45,45,45,45,45,444,45,45,45,45,45,45,45,67,67,97,97,1998,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,1985,45,1986,45,45,45,156,45,45,170,45,45,45,45,45,45,45,45,45,45,675,45,45,45,45,679,131427,0,358,0,0,362,0,365,28809,367,139,45,45,45,45,45,381,45,45,45,45,45,45,45,45,45,400,45,45,419,45,45,45,45,45,45,45,45,45,45,45,45,436,67,67,67,67,67,505,67,67,67,67,67,67,67,67,67,67,820,67,25398,542,13112,544,67,67,522,67,67,67,67,67,529,67,67,67,67,67,67,67,0,1299,0,0,0,1305,0,0,0,97,97,619,97,97,97,97,97,626,97,97,97,97,97,97,97,1105,97,97,97,97,1109,97,97,97,67,67,67,67,749,67,67,67,67,67,67,67,67,67,760,67,0,97,45,67,2058,97,45,67,0,97,45,67,97,0,0,97,97,97,97,97,45,45,45,2041,67,67,67,67,67,780,67,67,67,67,67,67,67,67,67,67,67,67,67,516,67,67,97,97,97,878,97,97,97,97,97,97,97,97,97,97,97,97,97,1629,97,0,45,979,45,45,45,45,984,45,45,45,45,45,45,45,45,45,1198,45,45,45,45,45,45,67,1023,67,67,67,67,1028,67,67,67,67,67,67,67,67,67,470,67,67,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1094,0,0,0,1092,1315,0,0,0,0,97,97,97,97,97,97,97,97,97,1486,97,1489,97,97,97,1117,97,97,97,97,1122,97,97,97,97,97,97,97,1146,97,97,97,97,97,97,97,97,881,97,97,97,886,97,97,97,1311,0,0,0,0,0,0,0,0,97,97,97,97,97,97,97,1615,97,97,97,97,97,1619,97,97,97,97,97,97,97,97,97,97,97,97,1631,97,97,1847,97,45,45,45,45,1852,45,45,45,45,45,45,45,1235,45,45,45,67,67,67,67,67,1868,67,67,67,1872,67,67,67,67,67,97,97,97,97,1882,0,0,0,97,97,97,97,0,1891,67,67,67,67,67,97,97,97,97,97,1929,0,0,97,97,97,97,97,97,45,1900,45,1901,45,45,45,1905,45,67,2054,97,45,67,0,97,45,67,0,97,45,67,97,0,0,97,2037,2038,97,97,45,45,45,45,67,67,67,67,1867,67,67,67,67,67,67,67,67,67,1774,97,97,97,97,97,97,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,142,45,45,45,1412,45,45,45,45,45,45,45,45,45,45,45,45,432,45,45,45,45,45,157,45,45,171,45,45,45,182,45,45,45,45,200,45,45,45,1543,45,45,45,45,45,45,45,45,1551,45,45,45,45,1181,45,45,45,45,45,45,45,45,45,45,45,1211,45,45,45,1214,45,45,45,67,209,67,67,67,224,67,67,238,67,67,67,249,67,0,97,2056,2057,0,2059,45,67,0,97,45,67,97,0,0,1937,97,97,97,97,97,97,45,45,45,45,45,45,1741,45,45,45,45,45,45,67,67,67,267,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,289,97,97,97,304,97,97,318,97,97,97,329,97,97,0,0,97,1783,97,97,97,97,0,0,97,97,0,97,97,97,45,2026,45,45,45,45,67,2030,67,67,67,67,67,67,1041,67,67,67,67,67,67,67,67,67,1044,67,67,67,67,67,67,97,97,347,97,97,97,0,40976,0,18,18,24,24,27,27,27,45,666,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1420,45,57889,0,0,54074,54074,550,0,97,97,97,97,97,97,97,97,840,67,1007,67,67,67,67,67,67,67,67,67,67,67,67,67,67,759,67,67,67,67,67,67,67,1052,67,67,67,67,67,67,67,67,67,67,1031,67,67,67,67,67,97,97,97,1101,97,97,97,97,97,97,97,97,97,97,97,97,592,97,97,97,1190,45,45,45,45,45,1195,45,1197,45,45,45,45,1201,45,45,45,45,1952,45,45,67,67,67,67,67,67,67,67,67,67,67,67,250,67,67,67,1255,67,1257,67,67,67,67,1261,67,67,67,67,67,67,67,67,1685,67,67,67,67,67,67,67,0,24851,12565,0,0,0,0,28809,53532,67,67,1267,67,67,67,67,67,67,1273,67,67,67,67,67,67,67,67,1696,67,67,67,67,67,67,67,0,0,0,0,0,0,2162688,0,0,1281,67,67,67,67,1285,67,67,67,67,67,67,67,67,67,67,1070,67,67,67,67,67,1335,97,1337,97,97,97,97,1341,97,97,97,97,97,97,97,97,882,97,97,97,97,97,97,97,1347,97,97,97,97,97,97,1353,97,97,97,97,97,97,1361,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,0,544,0,550,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2473984,2158592,2158592,2158592,2990080,2158592,2158592,2207744,2207744,2482176,2207744,2207744,2207744,2207744,2207744,2207744,2207744,0,0,0,0,0,0,2162688,0,53530,97,97,97,1365,97,97,97,97,97,97,97,97,97,97,97,97,608,97,97,97,45,45,1424,45,1425,67,67,67,67,67,67,67,67,67,67,67,1058,67,67,67,67,45,1555,45,45,1557,45,45,45,45,45,45,45,45,45,45,45,707,45,45,45,45,67,67,1570,67,67,67,67,67,67,67,67,67,67,67,67,67,773,67,67,1595,67,67,1597,67,67,67,67,67,67,67,67,67,67,67,0,0,0,0,0,0,0,0,0,0,139,2158592,2158592,2158592,2404352,2412544,97,97,97,1636,97,97,97,1639,97,97,1641,97,97,97,97,97,97,1173,0,921,0,0,0,0,0,0,45,67,67,67,1693,67,67,67,67,67,67,67,1698,67,67,67,67,67,67,67,1773,67,97,97,97,97,97,97,97,625,97,97,97,97,97,97,97,97,850,97,97,97,97,97,97,97,97,880,97,97,97,97,97,97,97,97,1106,97,97,97,97,97,97,97,1860,45,45,67,67,1865,67,67,67,67,1870,67,67,67,67,1875,67,67,97,97,1880,97,97,0,0,0,97,97,1888,97,0,0,0,1938,97,97,97,97,97,45,45,45,45,45,45,1854,45,45,45,45,45,45,45,1909,45,45,1911,67,67,67,67,67,67,67,67,67,67,1248,67,67,67,67,67,67,1922,67,67,1924,97,97,97,97,97,0,0,0,97,97,97,97,97,1898,45,45,45,45,45,45,1904,45,45,67,67,67,67,97,97,97,97,0,0,16384,97,97,97,97,0,97,97,97,97,97,97,97,97,97,0,1724,2008,2009,45,45,67,67,67,2014,2015,67,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,45,45,45,2022,0,2023,97,97,45,45,45,45,45,45,67,67,67,67,67,67,1869,67,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,147,151,154,45,162,45,45,176,178,181,45,45,45,192,196,45,45,45,45,2012,67,67,67,67,67,67,2018,97,0,0,97,1978,97,97,97,1982,45,45,45,45,45,45,45,45,45,972,973,45,45,45,45,45,67,259,263,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,294,298,301,97,309,97,97,323,325,328,97,97,97,97,97,560,97,97,97,569,97,97,97,97,97,97,306,97,97,97,97,97,97,97,97,97,1624,97,97,97,97,97,97,97,0,921,0,1175,0,0,0,0,45,339,343,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,67,67,503,67,67,67,67,67,67,67,67,67,512,67,67,519,97,97,600,97,97,97,97,97,97,97,97,97,609,97,97,616,45,649,45,45,45,45,45,654,45,45,45,45,45,45,45,45,1393,45,45,45,45,45,45,45,45,1209,45,45,45,45,45,45,45,67,763,67,67,67,67,67,67,67,67,770,67,67,67,774,67,0,2045,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,994,45,45,45,45,45,45,45,45,45,45,67,67,213,67,219,67,67,232,67,242,67,247,67,67,67,779,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1018,67,67,67,67,811,67,67,67,67,67,67,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,834,97,97,97,97,97,839,97,18,131427,0,638,0,0,0,0,362,0,0,365,29315,367,645,97,97,861,97,97,97,97,97,97,97,97,868,97,97,97,872,97,97,877,97,97,97,97,97,97,97,97,97,97,97,97,97,613,97,97,97,97,97,909,97,97,97,97,97,97,97,97,97,0,0,0,18,18,24,24,27,27,27,1036,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1047,67,67,67,1050,67,67,67,67,67,67,67,67,67,67,67,67,1033,67,67,67,97,97,1130,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,0,67,67,67,1295,67,67,67,0,0,0,0,0,0,0,0,0,97,1317,97,97,97,97,97,97,1375,97,97,97,0,0,0,45,1379,45,45,45,45,45,45,422,45,45,45,429,431,45,45,45,45,0,1090,0,0,97,1479,97,97,97,97,97,97,97,97,97,97,1357,97,97,97,97,97,97,97,97,97,1716,97,97,97,97,97,97,97,97,97,1723,0,921,29315,0,0,0,0,45,929,45,45,45,45,45,45,45,1392,45,45,45,45,45,45,45,45,45,960,45,45,45,45,45,45,97,97,97,1738,45,45,45,45,45,45,45,1743,45,45,45,45,166,45,45,45,45,184,186,45,45,197,45,45,97,1779,0,0,97,97,97,97,97,97,0,0,97,97,0,97,18,131427,0,638,0,0,0,0,362,0,640,365,29315,367,0,921,29315,0,0,0,0,45,45,45,45,45,45,45,45,45,45,1537,45,45,45,45,45,1803,45,45,45,45,45,1809,45,45,45,67,67,67,1814,67,67,67,67,67,67,1821,67,67,67,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,0,0,67,67,67,1818,67,67,67,67,67,1824,67,67,67,97,97,97,97,97,0,0,0,97,97,97,97,1890,0,1829,97,97,0,0,97,97,1836,97,97,0,0,0,97,97,97,97,1981,45,45,45,45,45,45,45,45,45,1987,1845,97,97,97,45,45,45,45,45,1853,45,45,45,1857,45,45,45,67,1864,67,1866,67,67,67,67,67,67,67,67,67,97,97,97,97,97,97,97,1710,1711,67,67,97,97,97,97,97,0,0,0,1886,97,97,97,0,0,97,97,97,97,1838,0,0,0,97,1843,97,0,1893,97,97,97,97,97,45,45,45,45,45,45,45,45,45,45,1745,45,45,67,67,67,67,67,97,97,97,97,97,0,0,1931,97,97,97,97,97,588,97,97,97,97,97,97,97,97,97,97,629,97,97,97,97,97,67,2044,0,97,97,97,97,45,45,67,67,0,0,97,97,45,45,45,1660,45,45,45,45,45,45,45,45,45,45,45,45,453,45,455,67,67,67,67,268,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,348,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,359,0,0,362,0,365,28809,367,139,45,45,45,45,45,421,45,45,45,45,45,45,45,434,45,45,695,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1667,45,0,921,29315,0,925,0,0,45,45,45,45,45,45,45,45,45,1811,45,67,67,67,67,67,67,1037,67,1039,67,67,67,67,67,67,67,67,67,67,67,67,1277,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,1095,0,0,0,1096,97,97,97,97,97,97,97,97,97,97,97,97,869,97,97,97,97,97,97,1131,97,1133,97,97,97,97,97,97,97,97,97,97,1370,97,97,97,97,97,1312,0,0,0,0,1096,0,0,0,97,97,97,97,97,97,97,1327,97,97,97,97,97,1332,97,97,97,1830,97,0,0,97,97,97,97,97,0,0,0,97,97,97,1896,97,97,45,45,45,45,45,45,45,45,45,1548,45,45,45,45,45,45,133,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,45,380,45,45,45,45,45,45,45,45,45,45,401,45,45,158,45,45,45,45,45,45,45,45,45,45,45,45,45,1200,45,45,45,45,206,67,67,67,67,67,225,67,67,67,67,67,67,67,67,754,67,67,67,67,67,67,67,57889,0,0,54074,54074,550,832,97,97,97,97,97,97,97,97,97,1342,97,97,97,97,97,97,67,67,67,67,67,25398,1083,13112,1087,54074,1091,0,0,0,0,0,0,1316,0,831,97,97,97,97,97,97,97,1174,921,0,1175,0,0,0,0,45,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,45,148,67,67,264,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,97,295,97,97,97,97,313,97,97,97,97,331,333,97,18,131427,356,638,0,0,0,0,362,0,0,365,0,367,0,45,45,1530,45,45,45,45,45,45,45,45,45,45,45,45,988,45,45,45,97,344,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,402,404,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1756,67,438,45,45,45,45,45,45,45,45,449,450,45,45,45,67,67,214,218,221,67,229,67,67,243,245,248,67,67,67,67,67,488,490,67,67,67,67,67,67,67,67,67,67,67,1071,67,1073,67,67,67,67,67,524,67,67,67,67,67,67,67,67,535,536,67,67,67,67,67,67,1683,1684,67,67,67,67,1688,1689,67,67,67,67,67,67,1586,67,67,67,67,67,67,67,67,67,469,67,67,67,67,67,67,97,97,97,585,587,97,97,97,97,97,97,97,97,97,97,97,1163,97,97,97,97,97,97,97,621,97,97,97,97,97,97,97,97,632,633,97,97,0,0,1782,97,97,97,97,97,0,0,97,97,0,97,712,45,45,45,717,45,45,45,45,45,45,45,45,725,45,45,45,163,167,173,177,45,45,45,45,45,193,45,45,45,45,982,45,45,45,45,45,45,987,45,45,45,45,45,1558,45,1560,45,45,45,45,45,45,45,45,704,705,45,45,45,45,45,45,45,45,731,45,45,45,67,67,67,67,67,739,67,67,67,67,67,67,273,0,24850,12564,0,0,0,0,28809,53531,67,67,67,764,67,67,67,67,67,67,67,67,67,67,67,67,1290,67,67,67,67,67,67,812,67,67,67,67,818,67,67,67,25398,542,13112,544,57889,0,0,54074,54074,550,0,97,97,97,97,97,837,97,97,97,97,97,602,97,97,97,97,97,97,97,97,97,97,1137,97,97,97,97,97,97,97,97,97,862,97,97,97,97,97,97,97,97,97,97,97,1627,97,97,97,0,97,97,97,97,910,97,97,97,97,916,97,97,97,0,0,0,97,97,1940,97,97,1942,45,45,45,45,45,45,385,45,45,45,45,395,45,45,45,45,966,45,969,45,45,45,45,45,45,45,45,45,45,975,45,45,45,406,45,45,45,45,45,45,45,45,45,45,45,45,974,45,45,45,67,67,67,67,1010,67,67,67,67,67,67,67,67,67,67,67,1262,67,67,67,67,67,67,67,67,67,1040,67,1042,67,1045,67,67,67,67,67,67,67,97,1706,97,97,97,1709,97,97,97,67,67,67,67,1051,67,67,67,67,67,1057,67,67,67,67,67,67,67,1443,67,67,1446,67,67,67,67,67,67,67,1297,0,0,0,1303,0,0,0,1309,67,67,67,67,1079,25398,0,13112,0,54074,0,0,0,0,0,0,0,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2207744,2207744,2207744,2207744,2207744,2572288,2207744,2207744,2207744,1098,97,97,97,97,97,1104,97,97,97,97,97,97,97,97,97,1356,97,97,97,97,97,97,1128,97,97,97,97,97,97,1134,97,1136,97,1139,97,97,97,97,97,97,1622,97,97,97,97,97,97,97,97,0,921,0,0,0,1176,0,646,45,67,67,67,1268,67,67,67,67,67,67,67,67,67,67,67,67,1469,67,67,67,97,1348,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1127,97,67,1569,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1448,1449,67,1816,67,67,67,67,67,67,67,67,67,1825,67,67,1827,97,97,0,1781,97,97,97,97,97,97,0,0,97,97,0,97,97,97,1831,0,0,97,97,97,97,97,0,0,0,97,97,97,1980,97,45,45,45,45,45,45,45,45,45,45,1395,45,45,45,45,45,97,1846,97,97,45,45,45,45,45,45,45,45,45,45,45,45,1212,45,45,45,45,45,45,2010,45,67,67,67,67,67,2016,67,97,97,0,0,97,97,97,0,97,97,97,97,97,45,45,2007,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,143,45,45,45,1671,45,45,45,45,45,45,45,45,45,45,45,67,1813,67,67,1815,45,45,67,210,67,67,67,67,67,67,239,67,67,67,67,67,67,67,1454,67,67,67,67,67,67,67,67,67,1445,67,67,67,67,67,67,97,97,290,97,97,97,97,97,97,319,97,97,97,97,97,97,303,97,97,317,97,97,97,97,97,97,305,97,97,97,97,97,97,97,97,97,899,97,97,97,97,97,97,375,45,45,45,379,45,45,390,45,45,394,45,45,45,45,45,443,45,45,45,45,45,45,45,45,67,67,67,67,67,461,67,67,67,465,67,67,476,67,67,480,67,67,67,67,67,67,1694,67,67,67,67,67,67,67,67,67,1288,67,67,67,67,67,67,500,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1075,97,97,97,558,97,97,97,562,97,97,573,97,97,577,97,97,97,97,97,895,97,97,97,97,97,97,903,97,97,97,0,97,97,1638,97,97,97,97,97,97,97,97,1646,597,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1334,45,681,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1396,45,45,1399,45,45,730,45,45,45,45,67,67,67,67,67,67,67,67,67,67,1434,67,67,67,67,67,67,750,67,67,67,67,67,67,67,67,67,67,1456,67,67,67,67,67,45,45,993,45,45,45,45,45,45,45,45,45,45,45,67,67,1238,67,67,1006,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1280,1048,1049,67,67,67,67,67,67,67,67,67,67,1059,67,67,67,67,67,67,1286,67,67,67,67,67,67,67,1291,67,97,97,1100,97,97,97,97,97,97,97,97,97,97,97,97,97,638,0,920,97,97,1142,1143,97,97,97,97,97,97,97,97,97,97,1153,97,97,97,97,97,1158,97,97,97,1161,97,97,97,97,1166,97,97,97,97,97,1325,97,97,97,97,97,97,97,97,97,97,1328,97,97,97,97,97,97,97,45,1218,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1678,45,45,45,67,67,67,67,67,1269,67,67,67,67,67,67,67,67,1278,67,67,67,67,67,67,1761,67,67,67,67,67,67,67,67,67,530,67,67,67,67,67,67,97,97,1349,97,97,97,97,97,97,97,97,1358,97,97,97,97,97,97,1623,97,97,97,97,97,97,97,97,0,921,0,0,926,0,0,0,45,45,1411,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1754,45,45,67,67,1301,0,1307,0,1313,97,97,97,97,97,97,97,97,97,97,97,21054,97,97,97,97,67,1757,67,67,67,1760,67,67,67,67,67,67,67,67,67,67,1467,67,67,67,67,67,1778,97,0,0,97,97,97,97,97,97,0,0,97,97,0,97,97,97,97,97,1352,97,97,97,97,97,97,97,97,97,97,1511,97,97,97,97,97,67,67,67,67,67,1820,67,1822,67,67,67,67,67,97,97,97,97,97,0,0,0,97,1933,97,1892,97,97,97,97,97,97,1899,45,45,45,45,45,45,45,45,1664,45,45,45,45,45,45,45,45,1546,45,45,45,45,45,45,45,45,1208,45,45,45,45,45,45,45,45,1224,45,45,45,45,45,45,45,45,673,45,45,45,45,45,45,45,67,67,67,67,67,1925,97,97,97,97,0,0,0,97,97,97,97,97,623,97,97,97,97,97,97,97,97,97,97,307,97,97,97,97,97,97,97,97,97,1796,97,45,45,45,45,45,45,45,970,45,45,45,45,45,45,45,45,1417,45,45,45,45,45,45,45,67,1964,67,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,97,97,97,97,1721,97,97,0,0,1997,97,0,0,2e3,97,97,0,97,97,97,97,97,45,45,45,45,733,45,67,67,67,67,67,67,67,67,67,67,803,67,67,67,67,67,0,94242,0,0,0,38,102439,0,0,106538,98347,28809,45,45,144,45,45,45,1805,45,1807,45,45,45,45,45,67,67,67,67,67,67,231,67,67,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,45,45,67,211,67,67,67,67,230,234,240,244,67,67,67,67,67,67,464,67,67,67,67,67,67,479,67,67,67,260,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,97,291,97,97,97,97,310,314,320,324,97,97,97,97,97,97,1367,97,97,97,97,97,97,97,97,97,1355,97,97,97,97,97,97,1362,340,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,360,0,362,0,365,28809,367,139,369,45,45,45,374,67,67,460,67,67,67,67,466,67,67,67,67,67,67,67,67,801,67,67,67,67,67,67,67,67,67,487,67,67,67,67,67,67,67,67,67,67,498,67,67,67,67,67,67,1772,67,67,97,97,97,97,97,97,97,0,921,922,1175,0,0,0,0,45,67,502,67,67,67,67,67,67,67,508,67,67,67,515,517,67,67,67,67,67,97,97,97,97,97,0,0,0,1932,97,97,0,1999,97,97,97,0,97,97,2004,2005,97,45,45,45,45,1193,45,45,45,45,45,45,45,45,45,45,45,676,45,45,45,45,67,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,552,97,97,97,97,97,1377,0,0,45,45,45,45,45,45,45,45,655,45,45,45,45,45,45,45,97,97,557,97,97,97,97,563,97,97,97,97,97,97,97,97,1135,97,97,97,97,97,97,97,97,97,584,97,97,97,97,97,97,97,97,97,97,595,97,97,97,97,97,911,97,97,97,97,97,97,97,638,0,0,0,0,1315,0,0,0,0,97,97,97,1319,97,97,97,0,97,97,97,97,97,97,1733,97,97,97,97,97,97,1340,97,97,97,1343,97,97,1345,97,1346,97,599,97,97,97,97,97,97,97,605,97,97,97,612,614,97,97,97,97,97,1794,97,97,97,45,45,45,45,45,45,45,1207,45,45,45,45,45,45,1213,45,45,745,67,67,67,67,751,67,67,67,67,67,67,67,67,67,67,1577,67,67,67,67,67,762,67,67,67,67,766,67,67,67,67,67,67,67,67,67,67,1765,67,67,67,67,67,777,67,67,781,67,67,67,67,67,67,67,67,67,67,67,67,1592,1593,67,67,97,843,97,97,97,97,849,97,97,97,97,97,97,97,97,97,1510,97,97,97,97,97,97,97,860,97,97,97,97,864,97,97,97,97,97,97,97,97,97,1797,45,45,45,45,1801,45,97,875,97,97,879,97,97,97,97,97,97,97,97,97,97,97,1522,97,97,97,97,97,991,45,45,45,45,996,45,45,45,45,45,45,45,45,67,67,215,67,67,67,67,233,67,67,67,67,251,253,1022,67,67,67,1026,67,67,67,67,67,67,67,67,67,67,1035,67,67,1038,67,67,67,67,67,67,67,67,67,67,67,67,67,1458,67,67,67,67,67,1064,67,67,67,1067,67,67,67,67,1072,67,67,67,67,67,67,1296,0,0,0,0,0,0,0,0,0,2367488,2158592,2158592,2158592,2158592,2158592,2158592,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,1096,0,921,29315,0,0,0,0,928,45,45,45,45,45,934,45,45,45,164,45,45,45,45,45,45,45,45,45,198,45,45,45,378,45,45,45,45,45,45,393,45,45,45,398,45,97,97,1116,97,97,97,1120,97,97,97,97,97,97,97,97,97,1147,1148,97,97,97,97,97,97,97,1129,97,97,1132,97,97,97,97,97,97,97,97,97,97,97,1626,97,97,97,97,0,45,1178,45,45,45,45,45,45,45,45,45,1185,45,45,45,45,441,45,45,45,45,45,45,451,45,45,67,67,67,67,67,227,67,67,67,67,67,67,67,67,1260,67,67,67,1263,67,67,1265,1203,45,45,1205,45,1206,45,45,45,45,45,45,45,45,45,1216,67,1266,67,67,67,67,67,67,67,67,67,1276,67,67,67,67,67,67,492,67,67,67,67,67,67,67,67,67,471,67,67,67,67,481,67,45,1386,45,1389,45,45,45,45,1394,45,45,45,1397,45,45,45,45,995,45,997,45,45,45,45,45,45,45,67,67,67,67,1915,67,67,67,67,67,1422,45,45,45,67,67,67,67,67,67,67,67,67,1433,67,1436,67,67,67,67,1441,67,67,67,1444,67,67,67,67,67,67,67,0,24850,12564,0,0,0,281,28809,53531,97,97,97,97,1494,97,97,97,1497,97,97,97,97,97,97,97,1368,97,97,97,97,97,97,97,97,851,97,97,97,97,97,97,97,67,67,67,1571,67,67,67,67,67,67,67,67,67,67,67,67,25398,542,13112,544,67,67,1583,67,67,67,67,67,67,67,67,1591,67,67,67,67,67,67,752,67,67,67,67,67,67,67,67,67,1056,67,67,67,67,67,67,97,1634,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1125,97,97,97,1647,97,97,97,97,97,0,45,45,45,45,45,45,45,45,45,1183,45,45,45,45,45,45,45,45,45,409,45,45,45,45,45,45,1658,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1668,1712,97,97,97,0,97,97,97,97,97,97,97,97,97,0,0,1835,97,97,97,97,0,0,0,97,97,1844,97,97,1726,0,97,97,97,97,97,1732,97,1734,97,97,97,97,97,300,97,308,97,97,97,97,97,97,97,97,866,97,97,97,97,97,97,97,67,67,67,1758,67,67,67,1762,67,67,67,67,67,67,67,67,1043,67,67,67,67,67,67,67,67,67,67,67,67,1771,67,67,67,97,97,97,97,97,1776,97,97,97,97,297,97,97,97,97,97,97,97,97,97,97,97,1108,97,97,97,97,67,67,67,1966,97,97,97,1970,0,0,0,97,97,97,97,0,97,97,97,1720,97,97,97,97,97,0,0,97,97,97,1837,97,0,1840,1841,97,97,97,1988,45,67,67,67,67,67,67,67,67,67,1994,1995,67,97,97,97,97,97,1103,97,97,97,97,97,97,97,97,97,97,917,97,97,0,0,0,67,67,265,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,345,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,131427,0,0,0,361,362,0,365,28809,367,139,45,45,45,45,45,671,45,45,45,45,45,45,45,45,45,45,411,45,45,414,45,45,45,45,377,45,45,45,386,45,45,45,45,45,45,45,45,45,1223,45,45,45,45,45,45,45,45,45,426,45,45,433,45,45,45,67,67,67,67,67,463,67,67,67,472,67,67,67,67,67,67,67,527,67,67,67,67,67,67,537,67,540,24850,24850,12564,12564,0,57889,0,0,0,53531,53531,367,286,97,97,97,97,97,1119,97,97,97,97,97,97,97,97,97,97,1509,97,97,97,97,97,97,97,97,564,97,97,97,97,97,97,97,637,18,131427,0,0,0,0,0,0,362,0,0,365,29315,367,0,921,29315,0,0,0,927,45,45,45,45,45,45,45,45,45,1234,45,45,45,45,67,67,67,67,1240,45,697,45,45,45,45,45,45,45,45,45,45,708,45,45,45,45,1221,45,45,45,45,1225,45,45,45,45,45,45,384,45,45,45,45,45,45,45,45,45,1210,45,45,45,45,45,45,67,67,795,67,67,67,67,67,67,67,67,67,67,67,67,67,1470,67,67,67,67,67,67,67,815,67,67,67,67,67,67,25398,542,13112,544,97,97,97,893,97,97,97,97,97,97,97,97,97,97,97,97,1164,97,97,97,67,67,67,1025,67,67,67,67,67,67,67,67,67,67,67,67,1687,67,67,67,67,67,67,67,67,67,25398,0,13112,0,54074,0,0,0,0,0,1097,1241,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1450,45,45,1388,45,1390,45,45,45,45,45,45,45,45,45,45,45,1236,67,67,67,67,67,1437,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1472,1490,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1503,67,67,67,67,67,97,97,97,97,97,0,1930,0,97,97,97,97,97,847,97,97,97,97,97,97,97,97,97,858,67,67,1965,67,97,97,97,97,0,0,0,97,97,97,97,0,97,97,1719,97,97,97,97,97,97,0,0,0,45,45,45,45,1382,45,1383,45,45,45,159,45,45,45,45,45,45,45,45,45,45,45,45,45,1563,45,45,45,45,45,67,261,67,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,341,97,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,97,1099,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1333,97,1230,45,45,45,45,45,45,45,45,45,45,67,67,67,67,67,67,1992,67,1993,67,67,67,97,97,45,45,160,45,45,45,45,45,45,45,45,45,45,45,45,45,1665,45,45,45,45,45,131427,357,0,0,0,362,0,365,28809,367,139,45,45,45,45,45,684,45,45,45,45,45,45,45,45,45,45,412,45,45,45,416,45,45,45,440,45,45,45,45,45,45,45,45,45,45,45,67,67,1990,67,1991,67,67,67,67,67,67,67,97,97,1707,97,97,97,97,97,97,501,67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,1691,67,67,67,67,67,526,67,67,67,67,67,67,67,67,67,67,1030,67,1032,67,67,67,67,598,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,1632,0,921,29315,923,0,0,0,45,45,45,45,45,45,45,45,45,1404,45,45,45,45,45,45,45,45,45,425,45,45,45,45,45,45,67,67,67,67,67,25398,0,13112,0,54074,0,0,1093,0,0,0,0,0,97,1609,97,97,97,97,97,97,97,97,97,1369,97,97,97,1372,97,97,67,67,266,67,67,67,67,0,24850,12564,0,0,0,0,28809,53531,97,346,97,97,97,97,0,40976,0,18,18,24,24,27,27,27,665,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,1677,45,45,45,45,67,45,45,954,45,956,45,45,45,45,45,45,45,45,45,45,45,1545,45,45,45,45,45,45,45,45,45,448,45,45,45,45,67,456,67,67,67,67,67,1270,67,67,67,67,67,67,67,67,67,67,1069,67,67,67,67,67,67,97,97,97,1350,97,97,97,97,97,97,97,97,97,97,97,97,1524,97,97,97,97,97,97,97,1376,0,0,0,45,45,45,45,45,45,45,45,1559,1561,45,45,45,1564,45,1566,1567,45,67,67,67,67,67,1573,67,67,67,67,67,67,67,67,67,67,1247,67,67,67,67,67,1252,97,1725,97,0,97,97,97,97,97,97,97,97,97,97,97,97,1628,97,1630,0,0,94242,0,0,0,2211840,0,1118208,0,0,0,0,2158592,2158731,2158592,2158592,2158592,3117056,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,3018752,2158592,3043328,2158592,2158592,2158592,2158592,3080192,2158592,2158592,3112960,2158592,2158592,2158592,2158592,2158592,2158878,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2605056,2158592,2158592,2207744,0,542,0,544,0,0,2166784,0,0,0,550,0,0,2158592,2158592,2686976,2158592,2715648,2158592,2158592,2158592,2158592,2158592,2158592,2158592,2867200,2158592,2904064,2158592,2158592,2158592,2158592,2158592,2158592,2158592,0,94242,0,0,0,2211840,0,0,1130496,0,0,0,2158592,2158592,2158592,2158592,2158592,3186688,2158592,0,0,139,0,0,0,139,0,2367488,2207744,0,0,0,0,176128,0,2166784,0,0,0,0,0,286,2158592,2158592,3170304,3174400,2158592,0,0,0,2158592,2158592,2158592,2158592,2158592,2424832,2158592,2158592,2158592,1508,2158592,2908160,2158592,2158592,2158592,2977792,2158592,2158592,2158592,2158592,3039232,2158592,2158592,2158592,2158592,2158592,2158592,3158016,67,24850,24850,12564,12564,0,0,0,0,0,53531,53531,0,286,97,97,97,97,97,1144,97,97,97,97,97,97,97,97,97,97,1149,97,97,97,97,1154,57889,0,0,0,0,550,0,97,97,97,97,97,97,97,97,97,561,97,97,97,97,97,97,576,97,97,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,139264,0,0,139264,0,921,29315,0,0,926,0,45,45,45,45,45,45,45,45,45,719,720,45,45,45,45,45,45,45,45,685,45,45,45,45,45,45,45,45,45,942,45,45,946,45,45,45,950,45,45,0,2146304,2146304,0,0,0,0,2224128,2224128,2224128,2232320,2232320,2232320,2232320,0,0,1301,0,0,0,0,0,1307,0,0,0,0,0,1313,0,0,0,0,0,0,0,97,97,1318,97,97,97,97,97,97,1795,97,97,45,45,45,45,45,45,45,446,45,45,45,45,45,45,67,67,2158592,2146304,0,0,0,0,0,0,0,2211840,0,0,0,0,2158592,0,921,29315,0,924,0,0,45,45,45,45,45,45,45,45,45,1e3,45,45,45,45,67,67],r.EXPECTED=[290,300,304,353,296,309,305,319,315,324,328,352,354,334,338,330,320,345,349,293,358,362,341,366,312,370,374,378,382,386,390,394,398,737,402,634,439,604,634,634,634,634,408,634,634,634,404,634,634,634,457,634,634,963,634,634,413,634,634,634,634,634,634,634,663,418,422,903,902,426,431,548,634,437,521,919,443,615,409,449,455,624,731,751,634,461,465,672,470,469,474,481,485,477,489,493,629,542,497,505,603,602,991,648,510,804,634,515,958,526,525,530,768,634,546,552,711,710,593,558,562,618,566,570,574,578,582,586,590,608,612,660,822,821,634,622,596,444,628,533,724,633,640,653,647,652,536,1008,451,450,445,657,670,676,685,689,693,697,701,704,707,715,719,798,815,634,723,762,996,634,728,969,730,735,908,634,741,679,889,511,747,634,750,755,499,666,499,501,759,772,776,780,634,787,784,797,802,809,808,427,814,1006,517,634,519,853,634,813,850,793,634,819,826,833,832,837,843,847,857,861,863,867,871,875,879,883,643,887,539,980,979,634,893,944,634,900,896,634,907,933,506,912,917,828,433,636,635,554,961,923,930,927,937,941,634,634,634,974,948,952,985,913,968,967,743,634,973,839,634,978,599,634,984,989,765,444,995,1e3,634,1003,790,955,1012,681,634,634,634,634,634,414,1016,1020,1024,1085,1027,1090,1090,1046,1080,1137,1108,1215,1049,1032,1039,1085,1085,1085,1085,1058,1062,1068,1085,1086,1090,1090,1091,1072,1064,1107,1090,1090,1090,1118,1123,1138,1078,1074,1084,1085,1085,1085,1087,1090,1062,1052,1060,1114,1062,1104,1085,1085,1090,1090,1028,1122,1063,1128,1139,1127,1158,1085,1085,1151,1090,1090,1090,1095,1090,1132,1073,1136,1143,1061,1150,1085,1155,1098,1101,1146,1162,1169,1101,1185,1151,1090,1110,1173,1054,1087,1109,1177,1165,1089,1204,1184,1107,1189,1193,1088,1197,1180,1201,1208,1042,1212,1219,1223,1227,1231,1235,1245,1777,1527,1686,1686,1238,1686,1254,1686,1686,1686,1294,1669,1686,1686,1686,1322,1625,1534,1268,1624,1275,1281,1443,1292,1300,1686,1686,1686,1350,1826,1306,1686,1686,1240,2032,1317,1321,1686,1686,1253,1686,1326,1686,1686,1686,1418,1709,1446,1686,1686,1686,1492,1686,1295,1447,1686,1686,1258,1686,1736,1686,1686,1520,1355,1686,1288,1348,1361,1686,1359,1686,1364,1498,1368,1302,1362,1381,1389,1395,1486,1686,1371,1377,1370,1686,1375,1382,1384,1402,1408,1385,1383,1619,1413,1423,1428,1433,1686,1686,1270,1686,1338,1686,1440,1686,1686,1686,1499,1465,1686,1686,1686,1639,1473,1884,1686,1686,1293,1864,1686,1686,1296,1321,1483,1686,1686,1686,1646,1686,1748,1496,1686,1418,1675,1686,1418,1702,1686,1418,1981,1686,1429,1409,1427,1504,1692,1686,1686,1313,1448,1651,1508,1686,1686,1340,1686,1903,1686,1686,1435,1513,1686,1283,1287,1519,1686,1524,1363,1568,1938,1539,1566,1579,1479,1533,1538,1553,1544,1552,1557,1563,1574,1557,1583,1589,1590,1759,1594,1603,1607,1611,1686,1436,1514,1686,1434,1656,1686,1434,1680,1686,1453,1686,1686,1686,1559,1617,1686,1770,1418,1623,1769,1629,1686,1515,1335,1686,1285,1686,1671,1921,1650,1686,1686,1344,1308,1666,1686,1686,1686,1659,1685,1686,1686,1686,1686,1241,1686,1686,1844,1691,1686,1630,1977,1970,1362,1686,1686,1686,1693,1698,1686,1686,1686,1697,1686,1764,1715,1686,1634,1638,1686,1599,1585,1686,1271,1686,1269,1686,1721,1686,1686,1354,1686,1801,1686,1799,1686,1640,1686,1686,1461,1686,1686,1732,1686,1944,1686,1740,1686,1746,1415,1396,1686,1598,1547,1417,1597,1416,1577,1546,1397,1577,1547,1548,1570,1398,1753,1686,1652,1509,1686,1686,1686,1757,1686,1419,1686,1763,1418,1768,1781,1686,1686,1686,1705,1686,2048,1792,1686,1686,1686,1735,1686,1797,1686,1686,1404,1686,1639,1815,1686,1686,1418,2017,1820,1686,1686,1803,1686,1686,1686,1736,1489,1686,1686,1825,1338,1260,1263,1686,1686,1785,1686,1686,1728,1686,1686,1749,1497,1830,1830,1262,1248,1261,1329,1260,1264,1329,1248,1249,1259,1540,1849,1842,1686,1686,1835,1686,1686,1816,1686,1686,1831,1882,1848,1686,1686,1686,1774,2071,1854,1686,1686,1469,1884,1686,1821,1859,1686,1686,1350,1883,1686,1686,1686,1781,1391,1875,1686,1686,1613,1644,1686,1686,1889,1686,1686,1662,1884,1686,1885,1890,1686,1686,1686,1894,1686,1686,1678,1686,1907,1686,1686,1529,1914,1686,1838,1686,1686,1881,1686,1686,1872,1876,1836,1919,1686,1837,1692,1910,1686,1925,1928,1742,1686,1811,1811,1930,1810,1929,1935,1928,1900,1942,1867,1868,1931,1035,1788,1948,1952,1956,1960,1964,1686,1976,1686,1686,1686,2065,1686,1992,2037,1686,1686,1998,2009,1972,2002,1686,1686,1686,2077,1300,2023,1686,1686,1686,1807,2031,1686,1686,1686,1860,1500,2032,1686,1686,1686,2083,1686,2036,1686,1277,1276,2042,1877,1686,1686,2041,1686,1686,2027,2037,2012,1686,2012,1855,1850,1686,2046,1686,1686,2054,1996,1686,1897,1309,2059,2052,1686,2058,1686,1686,2081,1686,1717,1477,1686,1331,1686,1686,1687,1686,1860,1681,1686,1686,1686,1966,1724,1686,1686,1686,1984,2015,1686,1686,1686,1988,1686,2063,1686,1686,1686,2005,1686,1727,1686,1686,1711,1457,2069,1686,1686,1686,2019,2075,1686,1686,1915,1686,1686,1793,1874,1686,1686,1491,1362,1449,1686,1686,1460,2098,2087,2091,2095,2184,2102,2113,2780,2117,2134,2142,2281,2146,2146,2146,2304,2296,2181,2639,2591,2872,2592,2873,2313,2195,2200,2281,2146,2273,2226,2204,2152,2219,2276,2167,2177,2276,2235,2276,2276,2230,2281,2276,2296,2276,2293,2276,2276,2276,2276,2234,2276,2311,2314,2210,2199,2217,2222,2276,2276,2276,2240,2276,2294,2276,2276,2173,2276,2198,2281,2281,2281,2281,2282,2146,2146,2146,2146,2205,2146,2204,2248,2276,2235,2276,2297,2276,2276,2276,2277,2256,2281,2283,2146,2146,2146,2275,2276,2295,2276,2276,2293,2146,2304,2264,2269,2221,2276,2276,2276,2293,2295,2276,2276,2276,2295,2263,2205,2268,2220,2172,2276,2276,2276,2296,2276,2276,2296,2294,2276,2276,2278,2281,2281,2280,2281,2281,2281,2283,2206,2223,2276,2276,2279,2281,2281,2146,2273,2276,2276,2281,2281,2281,2276,2292,2276,2298,2225,2276,2298,2169,2224,2292,2298,2171,2229,2281,2281,2171,2236,2281,2281,2281,2146,2275,2225,2292,2299,2276,2229,2281,2146,2276,2290,2297,2283,2146,2146,2274,2224,2227,2298,2225,2297,2276,2230,2170,2230,2282,2146,2147,2151,2156,2288,2276,2230,2303,2308,2236,2284,2228,2318,2318,2318,2326,2335,2339,2343,2349,2416,2693,2357,2592,2109,2592,2592,2162,2943,2823,2646,2592,2361,2592,2122,2592,2592,2122,2470,2592,2592,2592,2109,2107,2592,2592,2592,2123,2592,2592,2592,2125,2592,2413,2592,2592,2592,2127,2592,2592,2414,2592,2592,2592,2130,2952,2592,2594,2592,2592,2212,2609,2252,2592,2592,2592,2446,2434,2592,2592,2592,2212,2446,2450,2456,2431,2435,2592,2592,2243,2478,2448,2439,2946,2592,2592,2592,2368,2809,2813,2450,2441,2212,2812,2449,2440,2947,2592,2592,2592,2345,2451,2457,2948,2592,2124,2592,2592,2650,2823,2449,2455,2946,2592,2128,2592,2592,2649,2952,2592,2810,2448,2461,2991,2467,2592,2592,2329,2817,2474,2990,2466,2592,2592,2373,2447,2992,2469,2592,2592,2592,2373,2447,2477,2468,2592,2592,2353,2469,2592,2495,2592,2592,2415,2483,2592,2415,2496,2592,2592,2352,2592,2592,2352,2352,2469,2592,2592,2363,2331,2494,2592,2592,2592,2375,2592,2375,2415,2504,2592,2592,2367,2372,2503,2592,2592,2592,2389,2418,2415,2592,2592,2373,2592,2592,2592,2593,2732,2417,2415,2592,2417,2520,2592,2592,2592,2390,2521,2521,2592,2592,2592,2401,2599,2585,2526,2531,2120,2592,2212,2426,2450,2463,2948,2592,2592,2592,2213,2389,2527,2532,2121,2542,2551,2105,2592,2213,2592,2592,2592,2558,2538,2544,2553,2557,2537,2543,2552,2421,2572,2576,2546,2543,2547,2592,2592,2373,2615,2575,2545,2105,2592,2244,2479,2592,2129,2592,2592,2628,2690,2469,2562,2566,2592,2592,2592,2415,2928,2934,2401,2570,2574,2564,2572,2585,2590,2592,2592,2585,2965,2592,2592,2592,2445,2251,2592,2592,2592,2474,2592,2609,2892,2592,2362,2592,2592,2138,2851,2159,2592,2592,2592,2509,2888,2892,2592,2592,2592,2490,2418,2891,2592,2592,2376,2592,2592,2374,2592,2889,2388,2592,2373,2373,2890,2592,2592,2387,2592,2887,2505,2892,2592,2373,2610,2388,2592,2592,2376,2373,2592,2887,2891,2592,2374,2592,2592,2608,2159,2614,2620,2592,2592,2394,2594,2887,2399,2592,2887,2397,2508,2374,2507,2592,2375,2592,2592,2592,2595,2508,2506,2592,2506,2505,2505,2592,2507,2637,2505,2592,2592,2401,2661,2592,2643,2592,2592,2417,2592,2655,2592,2592,2592,2510,2414,2656,2592,2592,2592,2516,2592,2593,2660,2665,2880,2592,2592,2592,2522,2767,2666,2881,2592,2592,2420,2571,2696,2592,2592,2592,2580,2572,2686,2632,2698,2592,2383,2514,2592,2163,2932,2465,2685,2631,2697,2592,2388,2592,2592,2212,2604,2671,2632,2678,2592,2401,2405,2409,2592,2592,2592,2679,2592,2592,2592,2592,2108,2677,2591,2592,2592,2592,2419,2592,2683,2187,2191,2469,2671,2189,2467,2592,2401,2629,2633,2702,2468,2592,2592,2421,2536,2703,2469,2592,2592,2422,2573,2593,2672,2467,2592,2402,2406,2592,2402,2979,2592,2592,2626,2673,2467,2592,2446,2259,2947,2592,2377,2709,2592,2592,2522,2862,2713,2468,2592,2592,2581,2572,2562,2374,2374,2592,2376,2721,2724,2592,2592,2624,2373,2731,2592,2592,2592,2626,2732,2592,2592,2592,2755,2656,2726,2736,2741,2592,2486,2593,2381,2592,2727,2737,2742,2715,2747,2753,2592,2498,2469,2873,2743,2592,2592,2592,2791,2759,2763,2592,2592,2627,2704,2592,2592,2522,2789,2593,2761,2753,2592,2498,2863,2592,2592,2767,2592,2592,2592,2792,2789,2592,2592,2592,2803,2126,2592,2592,2592,2811,2122,2592,2592,2592,2834,2777,2592,2592,2592,2848,2936,2591,2489,2797,2592,2592,2670,2631,2490,2798,2592,2592,2592,2963,2807,2592,2592,2592,2965,2838,2592,2592,2592,2975,2330,2818,2829,2592,2498,2939,2592,2498,2592,2791,2331,2819,2830,2592,2592,2592,2982,2834,2817,2828,2106,2592,2592,2592,2405,2405,2817,2828,2592,2592,2415,2849,2842,2592,2522,2773,2592,2522,2868,2592,2580,2600,2586,2137,2850,2843,2592,2592,2855,2937,2844,2592,2592,2592,2987,2936,2591,2592,2592,2684,2630,2592,2856,2938,2592,2592,2860,2939,2592,2592,2872,2592,2861,2591,2592,2592,2887,2616,2592,2867,2592,2592,2708,2592,2498,2469,2498,2497,2785,2773,2499,2783,2770,2877,2877,2877,2772,2592,2592,2345,2885,2592,2592,2592,2715,2762,2515,2896,2592,2592,2715,2917,2516,2897,2592,2592,2592,2901,2906,2911,2592,2592,2956,2960,2715,2902,2907,2912,2593,2916,2920,2820,2922,2822,2592,2592,2715,2927,2921,2821,2106,2592,2592,2974,2408,2321,2821,2106,2592,2592,2983,2592,2593,2404,2408,2592,2592,2717,2749,2716,2928,2322,2822,2593,2926,2919,2820,2934,2823,2592,2592,2592,2651,2824,2592,2592,2592,2130,2952,2592,2592,2592,2592,2964,2592,2592,2716,2748,2592,2969,2592,2592,2716,2918,2368,2970,2592,2592,2592,2403,2407,2592,2592,2787,2211,2404,2409,2592,2592,2802,2837,2987,2592,2592,2592,2809,2427,2592,2793,2592,2592,2809,2447,1073741824,2147483648,539754496,542375936,402653184,554434560,571736064,545521856,268451840,335544320,268693630,512,2048,256,1024,0,1024,0,1073741824,2147483648,0,0,0,8388608,0,0,1073741824,1073741824,0,2147483648,537133056,4194304,1048576,268435456,-1073741824,0,0,0,1048576,0,0,0,1572864,0,0,0,4194304,0,134217728,16777216,0,0,32,64,98304,0,33554432,8388608,192,67108864,67108864,67108864,67108864,16,32,4,0,8192,196608,196608,229376,80,4096,524288,8388608,0,0,32,128,256,24576,24600,24576,24576,2,24576,24576,24576,24584,24592,24576,24578,24576,24578,24576,24576,16,512,2048,2048,256,4096,32768,1048576,4194304,67108864,134217728,268435456,262144,134217728,0,128,128,64,16384,16384,16384,67108864,32,32,4,4,4096,262144,134217728,0,0,0,2,0,8192,131072,131072,4096,4096,4096,4096,24576,24576,24576,8,8,24576,24576,16384,16384,16384,24576,24584,24576,24576,24576,16384,24576,536870912,262144,0,0,32,2048,8192,4,4096,4096,4096,786432,8388608,16777216,0,128,16384,16384,16384,32768,65536,2097152,32,32,32,32,4,4,4,4,4,4096,67108864,67108864,67108864,24576,24576,24576,24576,0,16384,16384,16384,16384,67108864,67108864,8,67108864,24576,8,8,8,24576,24576,24576,24578,24576,24576,24576,2,2,2,16384,67108864,67108864,67108864,32,67108864,8,8,24576,2048,2147483648,536870912,262144,262144,262144,67108864,8,24576,16384,32768,1048576,4194304,25165824,67108864,24576,32770,2,4,112,512,98304,524288,50,402653186,1049090,1049091,10,66,100925514,10,66,12582914,0,0,-1678194207,-1678194207,-1041543218,0,32768,0,0,32,65536,268435456,1,1,513,1048577,0,12582912,0,0,0,4,1792,0,0,0,7,29360128,0,0,0,8,0,0,0,12,1,1,0,0,-604102721,-604102721,4194304,8388608,0,0,0,31,925600,997981306,997981306,997981306,0,0,2048,8388608,0,0,1,2,4,32,64,512,8192,0,0,0,245760,997720064,0,0,0,32,0,0,0,3,12,16,32,8,112,3072,12288,16384,32768,65536,131072,7864320,16777216,973078528,0,0,65536,131072,3670016,4194304,16777216,33554432,2,8,48,2048,8192,16384,32768,65536,131072,524288,131072,524288,3145728,4194304,16777216,33554432,65536,131072,2097152,4194304,16777216,33554432,134217728,268435456,536870912,0,0,0,1024,0,8,48,2048,8192,65536,33554432,268435456,536870912,65536,268435456,536870912,0,0,32768,0,0,126,623104,65011712,0,32,65536,536870912,0,0,65536,524288,0,32,65536,0,0,0,2048,0,0,0,15482,245760,-604102721,0,0,0,18913,33062912,925600,-605028352,0,0,0,65536,31,8096,131072,786432,3145728,3145728,12582912,50331648,134217728,268435456,160,256,512,7168,131072,786432,131072,786432,1048576,2097152,12582912,16777216,268435456,1073741824,2147483648,12582912,16777216,33554432,268435456,1073741824,2147483648,3,12,16,160,256,7168,786432,1048576,12582912,16777216,268435456,1073741824,0,8,16,32,128,256,512,7168,786432,1048576,2097152,0,1,2,8,16,7168,786432,1048576,8388608,16777216,16777216,1073741824,0,0,0,0,1,0,0,8,32,128,256,7168,8,32,0,3072,0,8,32,3072,4096,524288,8,32,0,0,3072,4096,0,2048,524288,8388608,8,2048,0,0,1,12,256,4096,32768,262144,1048576,4194304,67108864,0,2048,0,2048,2048,1073741824,-58805985,-58805985,-58805985,0,0,262144,0,0,32,4194304,16777216,134217728,4382,172032,-58982400,0,0,2,28,256,4096,8192,8192,32768,131072,262144,524288,1,2,12,256,4096,0,0,4194304,67108864,134217728,805306368,1073741824,0,0,1,2,12,16,256,4096,1048576,67108864,134217728,268435456,0,512,1048576,4194304,201326592,1879048192,0,0,12,256,4096,134217728,268435456,536870912,12,256,268435456,536870912,0,12,256,0,0,1,32,64,512,0,0,205236961,205236961,0,0,0,1,96,640,1,10976,229376,204996608,0,640,2048,8192,229376,1572864,1572864,2097152,201326592,0,0,0,64,512,2048,229376,1572864,201326592,1572864,201326592,0,0,1,4382,0,1,32,2048,65536,131072,1572864,201326592,131072,1572864,134217728,0,0,524288,524288,0,0,0,-68582786,-68582786,-68582786,0,0,2097152,524288,0,524288,0,0,65536,131072,1572864,0,0,2,4,0,0,65011712,-134217728,0,0,0,0,2,4,120,512,-268435456,0,0,0,2,8,48,64,2048,8192,98304,524288,2097152,4194304,25165824,33554432,134217728,268435456,2147483648,0,0,25165824,33554432,134217728,1879048192,2147483648,0,0,4,112,512,622592,65011712,134217728,-268435456,16777216,33554432,134217728,1610612736,0,0,0,64,98304,524288,4194304,16777216,33554432,0,98304,524288,16777216,33554432,0,65536,524288,33554432,536870912,1073741824,0,65536,524288,536870912,1073741824,0,0,65536,524288,536870912,0,524288,0,524288,524288,1048576,2086666240,2147483648,0,-1678194207,0,0,0,8,32,2048,524288,8388608,0,0,33062912,436207616,2147483648,0,0,32,64,2432,16384,32768,32768,524288,3145728,4194304,25165824,25165824,167772160,268435456,2147483648,0,32,64,384,2048,16384,32768,1048576,2097152,4194304,25165824,32,64,128,256,2048,16384,2048,16384,1048576,4194304,16777216,33554432,134217728,536870912,1073741824,0,0,2048,16384,4194304,16777216,33554432,134217728,805306368,0,0,16777216,134217728,268435456,2147483648,0,622592,622592,622592,8807,8807,434791,0,0,16777216,0,0,0,7,608,8192,0,0,0,3,4,96,512,32,64,8192,0,0,16777216,134217728,0,0,2,4,8192,16384,65536,2097152,33554432,268435456],r.TOKEN=["(0)","ModuleDecl","Annotation","OptionDecl","Operator","Variable","Tag","EndTag","PragmaContents","DirCommentContents","DirPIContents","CDataSectionContents","AttrTest","Wildcard","EQName","IntegerLiteral","DecimalLiteral","DoubleLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","QuotChar","AposChar","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","NCName","QName","S","CharRef","CommentContents","DocTag","DocCommentContents","EOF","'!'","'\"'","'#'","'#)'","''''","'('","'(#'","'(:'","'(:~'","')'","'*'","'*'","','","'-->'","'.'","'/'","'/>'","':'","':)'","';'","'<!--'","'<![CDATA['","'<?'","'='","'>'","'?'","'?>'","'NaN'","'['","']'","']]>'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'|'","'}'","'}}'"]},{}],2:[function(e,t,n){"use strict";var r=function(e){var t=e;this.tokens=[],this.reset=function(){t=t,this.tokens=[]},this.startNonterminal=function(){},this.endNonterminal=function(){},this.terminal=function(e,n,r){this.tokens.push({name:e,value:t.substring(n,r)})},this.whitespace=function(e,n){this.tokens.push({name:"WS",value:t.substring(e,n)})}};n.Lexer=function(e,t){this.tokens=[],this.getLineTokens=function(n,i){i=i==="start"||!i?'["start"]':i;var s=JSON.parse(i),o=new r(n),u=new e(n,o),a=[];for(;;){var f=s[s.length-1];try{o.tokens=[],u["parse_"+f]();var l=null;o.tokens.length>1&&o.tokens[0].name==="WS"&&(a.push({type:"text",value:o.tokens[0].value}),o.tokens.splice(0,1));var c=o.tokens[0],h=t[f];for(var p=0;p<h.length;p++){var d=t[f][p];if(typeof d.name=="function"&&d.name(c)||d.name===c.name){l=d;break}}if(c.name==="EOF")break;if(c.value==="")throw"Encountered empty string lexical rule.";a.push({type:l===null?"text":typeof l.token=="function"?l.token(c.value):l.token,value:c.value}),l&&l.next&&l.next(s)}catch(v){if(v instanceof u.ParseException){var m=0;for(var g=0;g<a.length;g++)m+=a[g].value.length;return a.push({type:"text",value:n.substring(m)}),{tokens:a,state:JSON.stringify(["start"])}}throw v}}return{tokens:a,state:JSON.stringify(s)}}}},{}],3:[function(e,t,n){"use strict";var r=e("./XQueryTokenizer").XQueryTokenizer,i=e("./lexer").Lexer,s="after|ancestor|ancestor-or-self|and|as|ascending|attribute|before|case|cast|castable|child|collation|comment|copy|count|declare|default|delete|descendant|descendant-or-self|descending|div|document|document-node|element|else|empty|empty-sequence|end|eq|every|except|first|following|following-sibling|for|function|ge|group|gt|idiv|if|import|insert|instance|intersect|into|is|item|last|le|let|lt|mod|modify|module|namespace|namespace-node|ne|node|only|or|order|ordered|parent|preceding|preceding-sibling|processing-instruction|rename|replace|return|satisfies|schema-attribute|schema-element|self|some|stable|start|switch|text|to|treat|try|typeswitch|union|unordered|validate|where|with|xquery|contains|paragraphs|sentences|times|words|by|collectionreturn|variable|version|option|when|encoding|toswitch|catch|tumbling|sliding|window|at|using|stemming|collection|schema|while|on|nodes|index|external|then|in|updating|value|of|containsbreak|loop|continue|exit|returning|append|json|position|strict".split("|"),o=s.map(function(e){return{name:"'"+e+"'",token:"keyword"}}),u=s.map(function(e){return{name:"'"+e+"'",token:"text",next:function(e){e.pop()}}}),a="constant.language",f="constant",l="comment",c="xml-pe",h="constant.buildin",p=function(e){return"'"+e+"'"},d={start:[{name:p("(#"),token:h,next:function(e){e.push("Pragma")}},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p("(:~"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:p("<?"),token:c,next:function(e){e.push("PI")}},{name:p("''"),token:"string",next:function(e){e.push("AposString")}},{name:p('"'),token:"string",next:function(e){e.push("QuotString")}},{name:"Annotation",token:"support.function"},{name:"ModuleDecl",token:"keyword",next:function(e){e.push("Prefix")}},{name:"OptionDecl",token:"keyword",next:function(e){e.push("_EQName")}},{name:"AttrTest",token:"support.type"},{name:"Variable",token:"variable"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:"IntegerLiteral",token:f},{name:"DecimalLiteral",token:f},{name:"DoubleLiteral",token:f},{name:"Operator",token:"keyword.operator"},{name:"EQName",token:function(e){return s.indexOf(e)!==-1?"keyword":"support.function"}},{name:p("("),token:"lparen"},{name:p(")"),token:"rparen"},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:p("}"),token:"text",next:function(e){e.length>1&&e.pop()}},{name:p("{"),token:"text",next:function(e){e.push("start")}}].concat(o),_EQName:[{name:"EQName",token:"text",next:function(e){e.pop()}}].concat(u),Prefix:[{name:"NCName",token:"text",next:function(e){e.pop()}}].concat(u),StartTag:[{name:p(">"),token:"meta.tag",next:function(e){e.push("TagContent")}},{name:"QName",token:"entity.other.attribute-name"},{name:p("="),token:"text"},{name:p("''"),token:"string",next:function(e){e.push("AposAttr")}},{name:p('"'),token:"string",next:function(e){e.push("QuotAttr")}},{name:p("/>"),token:"meta.tag.r",next:function(e){e.pop()}}],TagContent:[{name:"ElementContentChar",token:"text"},{name:p("<![CDATA["),token:a,next:function(e){e.push("CData")}},{name:p("<!--"),token:l,next:function(e){e.push("XMLComment")}},{name:"Tag",token:"meta.tag",next:function(e){e.push("StartTag")}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"text"},{name:p("}}"),token:"text"},{name:p("{"),token:"text",next:function(e){e.push("start")}},{name:"EndTag",token:"meta.tag",next:function(e){e.pop(),e.pop()}}],AposAttr:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],QuotAttr:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotAttrContentChar",token:"string"},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:p("{{"),token:"string"},{name:p("}}"),token:"string"},{name:p("{"),token:"text",next:function(e){e.push("start")}}],Pragma:[{name:"PragmaContents",token:h},{name:p("#"),token:h},{name:p("#)"),token:h,next:function(e){e.pop()}}],Comment:[{name:"CommentContents",token:"comment"},{name:p("(:"),token:"comment",next:function(e){e.push("Comment")}},{name:p(":)"),token:"comment",next:function(e){e.pop()}}],CommentDoc:[{name:"DocCommentContents",token:"comment.doc"},{name:"DocTag",token:"comment.doc.tag"},{name:p("(:"),token:"comment.doc",next:function(e){e.push("CommentDoc")}},{name:p(":)"),token:"comment.doc",next:function(e){e.pop()}}],XMLComment:[{name:"DirCommentContents",token:l},{name:p("-->"),token:l,next:function(e){e.pop()}}],CData:[{name:"CDataSectionContents",token:a},{name:p("]]>"),token:a,next:function(e){e.pop()}}],PI:[{name:"DirPIContents",token:c},{name:p("?"),token:c},{name:p("?>"),token:c,next:function(e){e.pop()}}],AposString:[{name:p("''"),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeApos",token:"constant.language.escape"},{name:"AposChar",token:"string"}],QuotString:[{name:p('"'),token:"string",next:function(e){e.pop()}},{name:"PredefinedEntityRef",token:"constant.language.escape"},{name:"CharRef",token:"constant.language.escape"},{name:"EscapeQuot",token:"constant.language.escape"},{name:"QuotChar",token:"string"}]};n.XQueryLexer=function(){return new i(r,d)}},{"./XQueryTokenizer":1,"./lexer":2}]},{},[3])(3)}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&h.isAutoInsertedClosing(u,a,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),h=f.substring(a.column,a.column+1),p=r.getTokenAt(a.row,a.column),d=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&p&&/escape/.test(p.type))return null;var v=p&&/string/.test(p.type),m=!d||/string/.test(d.type),g;if(h==s)g=v!==m;else{if(v&&!m)return null;if(v&&m)return null;var y=r.$mode.tokenRe;y.lastIndex=0;var b=y.test(l);y.lastIndex=0;var w=y.test(l);if(b||w)return null;if(h&&!/[\s;,.})\]\\]/.test(h))return null;g=!0}return{text:g?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};h.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getCursorPosition(),a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:"></"+v+">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="</"?{text:"\n"+d+"\n"+p,selection:[1,d.length,1,d.length]}:{text:"\n"+d}}}}})};r.inherits(a,i),t.XmlBehaviour=a}),ace.define("ace/mode/behaviour/xquery",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/mode/behaviour/xml","ace/token_iterator"],function(e,t,n){"use strict";function a(e,t){var n=!0,r=e.type.split("."),i=t.split(".");return i.forEach(function(e){if(r.indexOf(e)==-1)return n=!1,!1}),n}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../behaviour/xml").XmlBehaviour,u=e("../../token_iterator").TokenIterator,f=function(){this.inherit(s,["braces","parens","string_dquotes"]),this.inherit(o),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var s=n.getCursorPosition(),o=new u(r,s.row,s.column),f=o.getCurrentToken(),l=!1,e=JSON.parse(e).pop();if(f&&f.value===">"||e!=="StartTag")return;if(!f||!a(f,"meta.tag")&&(!a(f,"text")||!f.value.match("/"))){do f=o.stepBackward();while(f&&(a(f,"string")||a(f,"keyword.operator")||a(f,"entity.attribute-name")||a(f,"text")))}else l=!0;var c=o.stepBackward();if(!f||!a(f,"meta.tag")||c!==null&&c.value.match("/"))return;var h=f.value.substring(1);if(l)var h=h.substring(0,s.column-f.start);return{text:"></"+h+">",selection:[1,1]}}})};r.inherits(f,i),t.XQueryBehaviour=f}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/)#(end)?region\b/,a=1;while(++n<s){t=e.getLine(n);var f=u.exec(t);if(!f)continue;f[1]?a--:a++;if(!a)break}var l=n;if(l>o)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/xquery",["require","exports","module","ace/worker/worker_client","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/xquery/xquery_lexer","ace/range","ace/mode/behaviour/xquery","ace/mode/folding/cstyle","ace/anchor"],function(e,t,n){"use strict";var r=e("../worker/worker_client").WorkerClient,i=e("../lib/oop"),s=e("./text").Mode,o=e("./text_highlight_rules").TextHighlightRules,u=e("./xquery/xquery_lexer").XQueryLexer,a=e("../range").Range,f=e("./behaviour/xquery").XQueryBehaviour,l=e("./folding/cstyle").FoldMode,c=e("../anchor").Anchor,h=function(){this.$tokenizer=new u,this.$behaviour=new f,this.foldingRules=new l,this.$highlightRules=new o};i.inherits(h,s),function(){this.completer={getCompletions:function(e,t,n,r,i){if(!t.$worker)return i();t.$worker.emit("complete",{data:{pos:n,prefix:r}}),t.$worker.on("complete",function(e){i(null,e.data)})}},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=t.match(/\s*(?:then|else|return|[{\(]|<\w+>)\s*$/);return i&&(r+=n),r},this.checkOutdent=function(e,t,n){return/^\s+$/.test(t)?/^\s*[\}\)]/.test(n):!1},this.autoOutdent=function(e,t,n){var r=t.getLine(n),i=r.match(/^(\s*[\}\)])/);if(!i)return 0;var s=i[1].length,o=t.findMatchingBracket({row:n,column:s});if(!o||o.row==n)return 0;var u=this.$getIndent(t.getLine(o.row));t.replace(new a(n,0,n,s-1),u)},this.toggleCommentLines=function(e,t,n,r){var i,s,o=!0,u=/^\s*\(:(.*):\)/;for(i=n;i<=r;i++)if(!u.test(t.getLine(i))){o=!1;break}var f=new a(0,0,0,0);for(i=n;i<=r;i++)s=t.getLine(i),f.start.row=i,f.end.row=i,f.end.column=s.length,t.replace(f,o?s.match(u)[1]:"(:"+s+":)")},this.createWorker=function(e){var t=new r(["ace"],"ace/mode/xquery_worker","XQueryWorker"),n=this;return t.attachToDocument(e.getDocument()),t.on("ok",function(t){e.clearAnnotations()}),t.on("markers",function(t){e.clearAnnotations(),n.addMarkers(t.data,e)}),t.on("highlight",function(t){n.$tokenizer.tokens=t.data.tokens,n.$tokenizer.lines=e.getDocument().getAllLines();var r=Object.keys(n.$tokenizer.tokens);for(var i=0;i<r.length;i++){var s=parseInt(r[i]);delete e.bgTokenizer.lines[s],delete e.bgTokenizer.states[s],e.bgTokenizer.fireUpdateEvent(s,s)}}),t},this.removeMarkers=function(e){var t=e.getMarkers(!1);for(var n in t)t[n].clazz.indexOf("language_highlight_")===0&&e.removeMarker(n);for(var r=0;r<e.markerAnchors.length;r++)e.markerAnchors[r].detach();e.markerAnchors=[]},this.addMarkers=function(e,t){var n=this;t.markerAnchors||(t.markerAnchors=[]),this.removeMarkers(t),t.languageAnnos=[],e.forEach(function(e){function u(i){r&&t.removeMarker(r),o.row=n.row;if(e.pos.sc!==undefined&&e.pos.ec!==undefined){var s=new a(e.pos.sl,e.pos.sc,e.pos.el,e.pos.ec);r=t.addMarker(s,"language_highlight_"+(e.type?e.type:"default"))}i&&t.setAnnotations(t.languageAnnos)}var n=new c(t.getDocument(),e.pos.sl,e.pos.sc||0);t.markerAnchors.push(n);var r,i=e.pos.ec-e.pos.sc,s=e.pos.el-e.pos.sl,o={guttertext:e.message,type:e.level||"warning",text:e.message};u(),n.on("change",function(){u(!0)}),e.message&&t.languageAnnos.push(o)}),t.setAnnotations(t.languageAnnos)},this.$id="ace/mode/xquery"}.call(h.prototype),t.Mode=h})
\ No newline at end of file
diff --git a/js/ace/mode-yaml.js b/js/ace/mode-yaml.js
new file mode 100644
index 0000000..df458d7
--- /dev/null
+++ b/js/ace/mode-yaml.js
@@ -0,0 +1 @@
+ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:"#.*$"},{token:"list.markup",regex:/^(?:-{3}|\.{3})\s*(?=#|$)/},{token:"list.markup",regex:/^\s*[\-?](?:$|\s)/},{token:"constant",regex:"!![\\w//]+"},{token:"constant.language",regex:"[&\\*][a-zA-Z0-9-_]+"},{token:["meta.tag","keyword"],regex:/^(\s*\w.*?)(\:(?:\s+|$))/},{token:["meta.tag","keyword"],regex:/(\w+?)(\s*\:(?:\s+|$))/},{token:"keyword.operator",regex:"<<\\w*:\\w*"},{token:"keyword.operator",regex:"-\\s*(?=[{])"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"[|>][-+\\d\\s]*$",next:"qqstring"},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"constant.numeric",regex:/(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)/},{token:"constant.numeric",regex:/[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/},{token:"constant.language.boolean",regex:"(?:true|false|TRUE|FALSE|True|False|yes|no)\\b"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"}],qqstring:[{token:"string",regex:"(?=(?:(?:\\\\.)|(?:[^:]))*?:)",next:"start"},{token:"string",regex:".+"}]}};r.inherits(s,i),t.YamlHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++n<f){o=e.getLine(n);var h=o.search(i);if(h==-1)continue;if(o[h]!="#")break;c=n}if(c>l){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u<a?"start":"","";if(u==-1){if(i==a&&r[i]=="#"&&s[i]=="#")return e.foldWidgets[n-1]="",e.foldWidgets[n+1]="","start"}else if(u==i&&r[i]=="#"&&o[i]=="#"&&e.getLine(n-2).search(/\S/)==-1)return e.foldWidgets[n-1]="start",e.foldWidgets[n+1]="","";return u!=-1&&u<i?e.foldWidgets[n-1]="start":e.foldWidgets[n-1]="",i<a?"start":""}}.call(o.prototype)}),ace.define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./yaml_highlight_rules").YamlHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./folding/coffee").FoldMode,a=function(){this.HighlightRules=s,this.$outdent=new o,this.foldingRules=new u};r.inherits(a,i),function(){this.lineCommentStart="#",this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.$id="ace/mode/yaml"}.call(a.prototype),t.Mode=a})
\ No newline at end of file
diff --git a/js/ace/snippets/abap.js b/js/ace/snippets/abap.js
new file mode 100644
index 0000000..5e1c4c2
--- /dev/null
+++ b/js/ace/snippets/abap.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/abap",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="abap"})
\ No newline at end of file
diff --git a/js/ace/snippets/abc.js b/js/ace/snippets/abc.js
new file mode 100644
index 0000000..ed591a5
--- /dev/null
+++ b/js/ace/snippets/abc.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/abc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='\nsnippet zupfnoter.print\n	%%%%hn.print {"startpos": ${1:pos_y}, "t":"${2:title}", "v":[${3:voices}], "s":[[${4:syncvoices}1,2]], "f":[${5:flowlines}],  "sf":[${6:subflowlines}], "j":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n	%%%%hn.note {"pos": [${1:pos_x},${2:pos_y}], "text": "${3:text}", "style": "${4:style}"}\n\nsnippet zupfnoter.annotation\n	%%%%hn.annotation {"id": "${1:id}", "pos": [${2:pos}], "text": "${3:text}"}\n\nsnippet zupfnoter.lyrics\n	%%%%hn.lyrics {"pos": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n	%%%%hn.legend {"pos": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n	"^:${1:target}"\n\nsnippet zupfnoter.goto\n	"^@${1:target}@${2:distance}"\n\nsnippet zupfnoter.annotationref\n	"^#${1:target}"\n\nsnippet zupfnoter.annotation\n	"^!${1:text}@${2:x_offset},${3:y_offset}"\n\n\n',t.scope="abc"})
\ No newline at end of file
diff --git a/js/ace/snippets/actionscript.js b/js/ace/snippets/actionscript.js
new file mode 100644
index 0000000..8ff3786
--- /dev/null
+++ b/js/ace/snippets/actionscript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/actionscript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet main\n	package {\n		import flash.display.*;\n		import flash.Events.*;\n	\n		public class Main extends Sprite {\n			public function Main (	) {\n				trace("start");\n				stage.scaleMode = StageScaleMode.NO_SCALE;\n				stage.addEventListener(Event.RESIZE, resizeListener);\n			}\n	\n			private function resizeListener (e:Event):void {\n				trace("The application window changed size!");\n				trace("New width:  " + stage.stageWidth);\n				trace("New height: " + stage.stageHeight);\n			}\n	\n		}\n	\n	}\nsnippet class\n	${1:public|internal} class ${2:name} ${3:extends } {\n		public function $2 (	) {\n			("start");\n		}\n	}\nsnippet all\n	package name {\n\n		${1:public|internal|final} class ${2:name} ${3:extends } {\n			private|public| static const FOO = "abc";\n			private|public| static var BAR = "abc";\n			if Cababilities.os == "Linux|MacOS" {\n				FOO = "other";\n			}\n			public function $2 (	){\n				super2();\n				trace("start");\n			}\n			public function name (a, b...){\n				super.name(..);\n				lable:break\n			}\n		}\n	}\n\n	function A(){\n	}\nsnippet switch\n	switch(${1}){\n		case ${2}:\n			${3}\n		break;\n		default:\n	}\nsnippet case\n		case ${1}:\n			${2}\n		break;\nsnippet package\n	package ${1:package}{\n		${2}\n	}\nsnippet wh\n	while ${1:cond}{\n		${2}\n	}\nsnippet do\n	do {\n		${2}\n	} while (${1:cond})\nsnippet while\n	while ${1:cond}{\n		${2}\n	}\nsnippet for enumerate names\n	for (${1:var} in ${2:object}){\n		${3}\n	}\nsnippet for enumerate values\n	for each (${1:var} in ${2:object}){\n		${3}\n	}\nsnippet get_set\n	function get ${1:name} {\n		return ${2}\n	}\n	function set $1 (newValue) {\n		${3}\n	}\nsnippet interface\n	interface name {\n		function method(${1}):${2:returntype};\n	}\nsnippet try\n	try {\n		${1}\n	} catch (error:ErrorType) {\n		${2}\n	} finally {\n		${3}\n	}\n# For Loop (same as c.snippet)\nsnippet for for (..) {..}\n	for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n		${4:/* code */}\n	}\n# Custom For Loop\nsnippet forr\n	for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {\n		${5:/* code */}\n	}\n# If Condition\nsnippet if\n	if (${1:/* condition */}) {\n		${2:/* code */}\n	}\nsnippet el\n	else {\n		${1}\n	}\n# Ternary conditional\nsnippet t\n	${1:/* condition */} ? ${2:a} : ${3:b}\nsnippet fun\n	function ${1:function_name}(${2})${3}\n	{\n		${4:/* code */}\n	}\n# FlxSprite (usefull when using the flixel library)\nsnippet FlxSprite\n	package\n	{\n		import org.flixel.*\n\n		public class ${1:ClassName} extends ${2:FlxSprite}\n		{\n			public function $1(${3: X:Number, Y:Number}):void\n			{\n				super(X,Y);\n				${4: //code...}\n			}\n\n			override public function update():void\n			{\n				super.update();\n				${5: //code...}\n			}\n		}\n	}\n\n',t.scope="actionscript"})
\ No newline at end of file
diff --git a/js/ace/snippets/ada.js b/js/ace/snippets/ada.js
new file mode 100644
index 0000000..65a1adc
--- /dev/null
+++ b/js/ace/snippets/ada.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ada",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ada"})
\ No newline at end of file
diff --git a/js/ace/snippets/apache_conf.js b/js/ace/snippets/apache_conf.js
new file mode 100644
index 0000000..a4364ec
--- /dev/null
+++ b/js/ace/snippets/apache_conf.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/apache_conf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="apache_conf"})
\ No newline at end of file
diff --git a/js/ace/snippets/applescript.js b/js/ace/snippets/applescript.js
new file mode 100644
index 0000000..d3a7cd5
--- /dev/null
+++ b/js/ace/snippets/applescript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/applescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="applescript"})
\ No newline at end of file
diff --git a/js/ace/snippets/asciidoc.js b/js/ace/snippets/asciidoc.js
new file mode 100644
index 0000000..ec76c4f
--- /dev/null
+++ b/js/ace/snippets/asciidoc.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/asciidoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="asciidoc"})
\ No newline at end of file
diff --git a/js/ace/snippets/assembly_x86.js b/js/ace/snippets/assembly_x86.js
new file mode 100644
index 0000000..7c6e632
--- /dev/null
+++ b/js/ace/snippets/assembly_x86.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/assembly_x86",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="assembly_x86"})
\ No newline at end of file
diff --git a/js/ace/snippets/autohotkey.js b/js/ace/snippets/autohotkey.js
new file mode 100644
index 0000000..0507ad9
--- /dev/null
+++ b/js/ace/snippets/autohotkey.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/autohotkey",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="autohotkey"})
\ No newline at end of file
diff --git a/js/ace/snippets/batchfile.js b/js/ace/snippets/batchfile.js
new file mode 100644
index 0000000..bffe14e
--- /dev/null
+++ b/js/ace/snippets/batchfile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/batchfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="batchfile"})
\ No newline at end of file
diff --git a/js/ace/snippets/c9search.js b/js/ace/snippets/c9search.js
new file mode 100644
index 0000000..0f455c1
--- /dev/null
+++ b/js/ace/snippets/c9search.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/c9search",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="c9search"})
\ No newline at end of file
diff --git a/js/ace/snippets/c_cpp.js b/js/ace/snippets/c_cpp.js
new file mode 100644
index 0000000..9fc5a58
--- /dev/null
+++ b/js/ace/snippets/c_cpp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/c_cpp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="## STL Collections\n# std::array\nsnippet array\n	std::array<${1:T}, ${2:N}> ${3};${4}\n# std::vector\nsnippet vector\n	std::vector<${1:T}> ${2};${3}\n# std::deque\nsnippet deque\n	std::deque<${1:T}> ${2};${3}\n# std::forward_list\nsnippet flist\n	std::forward_list<${1:T}> ${2};${3}\n# std::list\nsnippet list\n	std::list<${1:T}> ${2};${3}\n# std::set\nsnippet set\n	std::set<${1:T}> ${2};${3}\n# std::map\nsnippet map\n	std::map<${1:Key}, ${2:T}> ${3};${4}\n# std::multiset\nsnippet mset\n	std::multiset<${1:T}> ${2};${3}\n# std::multimap\nsnippet mmap\n	std::multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_set\nsnippet uset\n	std::unordered_set<${1:T}> ${2};${3}\n# std::unordered_map\nsnippet umap\n	std::unordered_map<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_multiset\nsnippet umset\n	std::unordered_multiset<${1:T}> ${2};${3}\n# std::unordered_multimap\nsnippet ummap\n	std::unordered_multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::stack\nsnippet stack\n	std::stack<${1:T}> ${2};${3}\n# std::queue\nsnippet queue\n	std::queue<${1:T}> ${2};${3}\n# std::priority_queue\nsnippet pqueue\n	std::priority_queue<${1:T}> ${2};${3}\n##\n## Access Modifiers\n# private\nsnippet pri\n	private\n# protected\nsnippet pro\n	protected\n# public\nsnippet pub\n	public\n# friend\nsnippet fr\n	friend\n# mutable\nsnippet mu\n	mutable\n## \n## Class\n# class\nsnippet cl\n	class ${1:`Filename('$1', 'name')`} \n	{\n	public:\n		$1(${2});\n		~$1();\n\n	private:\n		${3:/* data */}\n	};\n# member function implementation\nsnippet mfun\n	${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {\n		${5:/* code */}\n	}\n# namespace\nsnippet ns\n	namespace ${1:`Filename('', 'my')`} {\n		${2}\n	} /* namespace $1 */\n##\n## Input/Output\n# std::cout\nsnippet cout\n	std::cout << ${1} << std::endl;${2}\n# std::cin\nsnippet cin\n	std::cin >> ${1};${2}\n##\n## Iteration\n# for i \nsnippet fori\n	for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n		${4:/* code */}\n	}${5}\n\n# foreach\nsnippet fore\n	for (${1:auto} ${2:i} : ${3:container}) {\n		${4:/* code */}\n	}${5}\n# iterator\nsnippet iter\n	for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) {\n		${6}\n	}${7}\n\n# auto iterator\nsnippet itera\n	for (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) {\n		${2:std::cout << *$1 << std::endl;}\n	}${3}\n##\n## Lambdas\n# lamda (one line)\nsnippet ld\n	[${1}](${2}){${3:/* code */}}${4}\n# lambda (multi-line)\nsnippet lld\n	[${1}](${2}){\n		${3:/* code */}\n	}${4}\n",t.scope="c_cpp"})
\ No newline at end of file
diff --git a/js/ace/snippets/cirru.js b/js/ace/snippets/cirru.js
new file mode 100644
index 0000000..8ecce1b
--- /dev/null
+++ b/js/ace/snippets/cirru.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/cirru",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cirru"})
\ No newline at end of file
diff --git a/js/ace/snippets/clojure.js b/js/ace/snippets/clojure.js
new file mode 100644
index 0000000..3aebfa5
--- /dev/null
+++ b/js/ace/snippets/clojure.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/clojure",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet comm\n	(comment\n	  ${1}\n	  )\nsnippet condp\n	(condp ${1:pred} ${2:expr}\n	  ${3})\nsnippet def\n	(def ${1})\nsnippet defm\n	(defmethod ${1:multifn} "${2:doc-string}" ${3:dispatch-val} [${4:args}]\n	  ${5})\nsnippet defmm\n	(defmulti ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defma\n	(defmacro ${1:name} "${2:doc-string}" ${3:dispatch-fn})\nsnippet defn\n	(defn ${1:name} "${2:doc-string}" [${3:arg-list}]\n	  ${4})\nsnippet defp\n	(defprotocol ${1:name}\n	  ${2})\nsnippet defr\n	(defrecord ${1:name} [${2:fields}]\n	  ${3:protocol}\n	  ${4})\nsnippet deft\n	(deftest ${1:name}\n	    (is (= ${2:assertion})))\n	  ${3})\nsnippet is\n	(is (= ${1} ${2}))\nsnippet defty\n	(deftype ${1:Name} [${2:fields}]\n	  ${3:Protocol}\n	  ${4})\nsnippet doseq\n	(doseq [${1:elem} ${2:coll}]\n	  ${3})\nsnippet fn\n	(fn [${1:arg-list}] ${2})\nsnippet if\n	(if ${1:test-expr}\n	  ${2:then-expr}\n	  ${3:else-expr})\nsnippet if-let \n	(if-let [${1:result} ${2:test-expr}]\n		(${3:then-expr} $1)\n		(${4:else-expr}))\nsnippet imp\n	(:import [${1:package}])\n	& {:keys [${1:keys}] :or {${2:defaults}}}\nsnippet let\n	(let [${1:name} ${2:expr}]\n		${3})\nsnippet letfn\n	(letfn [(${1:name) [${2:args}]\n	          ${3})])\nsnippet map\n	(map ${1:func} ${2:coll})\nsnippet mapl\n	(map #(${1:lambda}) ${2:coll})\nsnippet met\n	(${1:name} [${2:this} ${3:args}]\n	  ${4})\nsnippet ns\n	(ns ${1:name}\n	  ${2})\nsnippet dotimes\n	(dotimes [_ 10]\n	  (time\n	    (dotimes [_ ${1:times}]\n	      ${2})))\nsnippet pmethod\n	(${1:name} [${2:this} ${3:args}])\nsnippet refer\n	(:refer-clojure :exclude [${1}])\nsnippet require\n	(:require [${1:namespace} :as [${2}]])\nsnippet use\n	(:use [${1:namespace} :only [${2}]])\nsnippet print\n	(println ${1})\nsnippet reduce\n	(reduce ${1:(fn [p n] ${3})} ${2})\nsnippet when\n	(when ${1:test} ${2:body})\nsnippet when-let\n	(when-let [${1:result} ${2:test}]\n		${3:body})\n',t.scope="clojure"})
\ No newline at end of file
diff --git a/js/ace/snippets/cobol.js b/js/ace/snippets/cobol.js
new file mode 100644
index 0000000..f957427
--- /dev/null
+++ b/js/ace/snippets/cobol.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/cobol",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="cobol"})
\ No newline at end of file
diff --git a/js/ace/snippets/coffee.js b/js/ace/snippets/coffee.js
new file mode 100644
index 0000000..ac1b730
--- /dev/null
+++ b/js/ace/snippets/coffee.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/coffee",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Closure loop\nsnippet forindo\n	for ${1:name} in ${2:array}\n		do ($1) ->\n			${3:// body}\n# Array comprehension\nsnippet fora\n	for ${1:name} in ${2:array}\n		${3:// body...}\n# Object comprehension\nsnippet foro\n	for ${1:key}, ${2:value} of ${3:object}\n		${4:// body...}\n# Range comprehension (inclusive)\nsnippet forr\n	for ${1:name} in [${2:start}..${3:finish}]\n		${4:// body...}\nsnippet forrb\n	for ${1:name} in [${2:start}..${3:finish}] by ${4:step}\n		${5:// body...}\n# Range comprehension (exclusive)\nsnippet forrex\n	for ${1:name} in [${2:start}...${3:finish}]\n		${4:// body...}\nsnippet forrexb\n	for ${1:name} in [${2:start}...${3:finish}] by ${4:step}\n		${5:// body...}\n# Function\nsnippet fun\n	(${1:args}) ->\n		${2:// body...}\n# Function (bound)\nsnippet bfun\n	(${1:args}) =>\n		${2:// body...}\n# Class\nsnippet cla class ..\n	class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n		${2}\nsnippet cla class .. constructor: ..\n	class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n		constructor: (${2:args}) ->\n			${3}\n\n		${4}\nsnippet cla class .. extends ..\n	class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n		${3}\nsnippet cla class .. extends .. constructor: ..\n	class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n		constructor: (${3:args}) ->\n			${4}\n\n		${5}\n# If\nsnippet if\n	if ${1:condition}\n		${2:// body...}\n# If __ Else\nsnippet ife\n	if ${1:condition}\n		${2:// body...}\n	else\n		${3:// body...}\n# Else if\nsnippet elif\n	else if ${1:condition}\n		${2:// body...}\n# Ternary If\nsnippet ifte\n	if ${1:condition} then ${2:value} else ${3:other}\n# Unless\nsnippet unl\n	${1:action} unless ${2:condition}\n# Switch\nsnippet swi\n	switch ${1:object}\n		when ${2:value}\n			${3:// body...}\n\n# Log\nsnippet log\n	console.log ${1}\n# Try __ Catch\nsnippet try\n	try\n		${1}\n	catch ${2:error}\n		${3}\n# Require\nsnippet req\n	${2:$1} = require '${1:sys}'${3}\n# Export\nsnippet exp\n	${1:root} = exports ? this\n",t.scope="coffee"})
\ No newline at end of file
diff --git a/js/ace/snippets/coldfusion.js b/js/ace/snippets/coldfusion.js
new file mode 100644
index 0000000..5342f2f
--- /dev/null
+++ b/js/ace/snippets/coldfusion.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/coldfusion",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="coldfusion"})
\ No newline at end of file
diff --git a/js/ace/snippets/csharp.js b/js/ace/snippets/csharp.js
new file mode 100644
index 0000000..9805077
--- /dev/null
+++ b/js/ace/snippets/csharp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/csharp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="csharp"})
\ No newline at end of file
diff --git a/js/ace/snippets/css.js b/js/ace/snippets/css.js
new file mode 100644
index 0000000..9659ba4
--- /dev/null
+++ b/js/ace/snippets/css.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/css",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet .\n	${1} {\n		${2}\n	}\nsnippet !\n	 !important\nsnippet bdi:m+\n	-moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:m\n	-moz-border-image: ${1};\nsnippet bdrz:m\n	-moz-border-radius: ${1};\nsnippet bxsh:m+\n	-moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:m\n	-moz-box-shadow: ${1};\nsnippet bdi:w+\n	-webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:w\n	-webkit-border-image: ${1};\nsnippet bdrz:w\n	-webkit-border-radius: ${1};\nsnippet bxsh:w+\n	-webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:w\n	-webkit-box-shadow: ${1};\nsnippet @f\n	@font-face {\n		font-family: ${1};\n		src: url(${2});\n	}\nsnippet @i\n	@import url(${1});\nsnippet @m\n	@media ${1:print} {\n		${2}\n	}\nsnippet bg+\n	background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\nsnippet bga\n	background-attachment: ${1};\nsnippet bga:f\n	background-attachment: fixed;\nsnippet bga:s\n	background-attachment: scroll;\nsnippet bgbk\n	background-break: ${1};\nsnippet bgbk:bb\n	background-break: bounding-box;\nsnippet bgbk:c\n	background-break: continuous;\nsnippet bgbk:eb\n	background-break: each-box;\nsnippet bgcp\n	background-clip: ${1};\nsnippet bgcp:bb\n	background-clip: border-box;\nsnippet bgcp:cb\n	background-clip: content-box;\nsnippet bgcp:nc\n	background-clip: no-clip;\nsnippet bgcp:pb\n	background-clip: padding-box;\nsnippet bgc\n	background-color: #${1:FFF};\nsnippet bgc:t\n	background-color: transparent;\nsnippet bgi\n	background-image: url(${1});\nsnippet bgi:n\n	background-image: none;\nsnippet bgo\n	background-origin: ${1};\nsnippet bgo:bb\n	background-origin: border-box;\nsnippet bgo:cb\n	background-origin: content-box;\nsnippet bgo:pb\n	background-origin: padding-box;\nsnippet bgpx\n	background-position-x: ${1};\nsnippet bgpy\n	background-position-y: ${1};\nsnippet bgp\n	background-position: ${1:0} ${2:0};\nsnippet bgr\n	background-repeat: ${1};\nsnippet bgr:n\n	background-repeat: no-repeat;\nsnippet bgr:x\n	background-repeat: repeat-x;\nsnippet bgr:y\n	background-repeat: repeat-y;\nsnippet bgr:r\n	background-repeat: repeat;\nsnippet bgz\n	background-size: ${1};\nsnippet bgz:a\n	background-size: auto;\nsnippet bgz:ct\n	background-size: contain;\nsnippet bgz:cv\n	background-size: cover;\nsnippet bg\n	background: ${1};\nsnippet bg:ie\n	filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\nsnippet bg:n\n	background: none;\nsnippet bd+\n	border: ${1:1px} ${2:solid} #${3:000};\nsnippet bdb+\n	border-bottom: ${1:1px} ${2:solid} #${3:000};\nsnippet bdbc\n	border-bottom-color: #${1:000};\nsnippet bdbi\n	border-bottom-image: url(${1});\nsnippet bdbi:n\n	border-bottom-image: none;\nsnippet bdbli\n	border-bottom-left-image: url(${1});\nsnippet bdbli:c\n	border-bottom-left-image: continue;\nsnippet bdbli:n\n	border-bottom-left-image: none;\nsnippet bdblrz\n	border-bottom-left-radius: ${1};\nsnippet bdbri\n	border-bottom-right-image: url(${1});\nsnippet bdbri:c\n	border-bottom-right-image: continue;\nsnippet bdbri:n\n	border-bottom-right-image: none;\nsnippet bdbrrz\n	border-bottom-right-radius: ${1};\nsnippet bdbs\n	border-bottom-style: ${1};\nsnippet bdbs:n\n	border-bottom-style: none;\nsnippet bdbw\n	border-bottom-width: ${1};\nsnippet bdb\n	border-bottom: ${1};\nsnippet bdb:n\n	border-bottom: none;\nsnippet bdbk\n	border-break: ${1};\nsnippet bdbk:c\n	border-break: close;\nsnippet bdcl\n	border-collapse: ${1};\nsnippet bdcl:c\n	border-collapse: collapse;\nsnippet bdcl:s\n	border-collapse: separate;\nsnippet bdc\n	border-color: #${1:000};\nsnippet bdci\n	border-corner-image: url(${1});\nsnippet bdci:c\n	border-corner-image: continue;\nsnippet bdci:n\n	border-corner-image: none;\nsnippet bdf\n	border-fit: ${1};\nsnippet bdf:c\n	border-fit: clip;\nsnippet bdf:of\n	border-fit: overwrite;\nsnippet bdf:ow\n	border-fit: overwrite;\nsnippet bdf:r\n	border-fit: repeat;\nsnippet bdf:sc\n	border-fit: scale;\nsnippet bdf:sp\n	border-fit: space;\nsnippet bdf:st\n	border-fit: stretch;\nsnippet bdi\n	border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:n\n	border-image: none;\nsnippet bdl+\n	border-left: ${1:1px} ${2:solid} #${3:000};\nsnippet bdlc\n	border-left-color: #${1:000};\nsnippet bdli\n	border-left-image: url(${1});\nsnippet bdli:n\n	border-left-image: none;\nsnippet bdls\n	border-left-style: ${1};\nsnippet bdls:n\n	border-left-style: none;\nsnippet bdlw\n	border-left-width: ${1};\nsnippet bdl\n	border-left: ${1};\nsnippet bdl:n\n	border-left: none;\nsnippet bdlt\n	border-length: ${1};\nsnippet bdlt:a\n	border-length: auto;\nsnippet bdrz\n	border-radius: ${1};\nsnippet bdr+\n	border-right: ${1:1px} ${2:solid} #${3:000};\nsnippet bdrc\n	border-right-color: #${1:000};\nsnippet bdri\n	border-right-image: url(${1});\nsnippet bdri:n\n	border-right-image: none;\nsnippet bdrs\n	border-right-style: ${1};\nsnippet bdrs:n\n	border-right-style: none;\nsnippet bdrw\n	border-right-width: ${1};\nsnippet bdr\n	border-right: ${1};\nsnippet bdr:n\n	border-right: none;\nsnippet bdsp\n	border-spacing: ${1};\nsnippet bds\n	border-style: ${1};\nsnippet bds:ds\n	border-style: dashed;\nsnippet bds:dtds\n	border-style: dot-dash;\nsnippet bds:dtdtds\n	border-style: dot-dot-dash;\nsnippet bds:dt\n	border-style: dotted;\nsnippet bds:db\n	border-style: double;\nsnippet bds:g\n	border-style: groove;\nsnippet bds:h\n	border-style: hidden;\nsnippet bds:i\n	border-style: inset;\nsnippet bds:n\n	border-style: none;\nsnippet bds:o\n	border-style: outset;\nsnippet bds:r\n	border-style: ridge;\nsnippet bds:s\n	border-style: solid;\nsnippet bds:w\n	border-style: wave;\nsnippet bdt+\n	border-top: ${1:1px} ${2:solid} #${3:000};\nsnippet bdtc\n	border-top-color: #${1:000};\nsnippet bdti\n	border-top-image: url(${1});\nsnippet bdti:n\n	border-top-image: none;\nsnippet bdtli\n	border-top-left-image: url(${1});\nsnippet bdtli:c\n	border-corner-image: continue;\nsnippet bdtli:n\n	border-corner-image: none;\nsnippet bdtlrz\n	border-top-left-radius: ${1};\nsnippet bdtri\n	border-top-right-image: url(${1});\nsnippet bdtri:c\n	border-top-right-image: continue;\nsnippet bdtri:n\n	border-top-right-image: none;\nsnippet bdtrrz\n	border-top-right-radius: ${1};\nsnippet bdts\n	border-top-style: ${1};\nsnippet bdts:n\n	border-top-style: none;\nsnippet bdtw\n	border-top-width: ${1};\nsnippet bdt\n	border-top: ${1};\nsnippet bdt:n\n	border-top: none;\nsnippet bdw\n	border-width: ${1};\nsnippet bd\n	border: ${1};\nsnippet bd:n\n	border: none;\nsnippet b\n	bottom: ${1};\nsnippet b:a\n	bottom: auto;\nsnippet bxsh+\n	box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh\n	box-shadow: ${1};\nsnippet bxsh:n\n	box-shadow: none;\nsnippet bxz\n	box-sizing: ${1};\nsnippet bxz:bb\n	box-sizing: border-box;\nsnippet bxz:cb\n	box-sizing: content-box;\nsnippet cps\n	caption-side: ${1};\nsnippet cps:b\n	caption-side: bottom;\nsnippet cps:t\n	caption-side: top;\nsnippet cl\n	clear: ${1};\nsnippet cl:b\n	clear: both;\nsnippet cl:l\n	clear: left;\nsnippet cl:n\n	clear: none;\nsnippet cl:r\n	clear: right;\nsnippet cp\n	clip: ${1};\nsnippet cp:a\n	clip: auto;\nsnippet cp:r\n	clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\nsnippet c\n	color: #${1:000};\nsnippet ct\n	content: ${1};\nsnippet ct:a\n	content: attr(${1});\nsnippet ct:cq\n	content: close-quote;\nsnippet ct:c\n	content: counter(${1});\nsnippet ct:cs\n	content: counters(${1});\nsnippet ct:ncq\n	content: no-close-quote;\nsnippet ct:noq\n	content: no-open-quote;\nsnippet ct:n\n	content: normal;\nsnippet ct:oq\n	content: open-quote;\nsnippet coi\n	counter-increment: ${1};\nsnippet cor\n	counter-reset: ${1};\nsnippet cur\n	cursor: ${1};\nsnippet cur:a\n	cursor: auto;\nsnippet cur:c\n	cursor: crosshair;\nsnippet cur:d\n	cursor: default;\nsnippet cur:ha\n	cursor: hand;\nsnippet cur:he\n	cursor: help;\nsnippet cur:m\n	cursor: move;\nsnippet cur:p\n	cursor: pointer;\nsnippet cur:t\n	cursor: text;\nsnippet d\n	display: ${1};\nsnippet d:mib\n	display: -moz-inline-box;\nsnippet d:mis\n	display: -moz-inline-stack;\nsnippet d:b\n	display: block;\nsnippet d:cp\n	display: compact;\nsnippet d:ib\n	display: inline-block;\nsnippet d:itb\n	display: inline-table;\nsnippet d:i\n	display: inline;\nsnippet d:li\n	display: list-item;\nsnippet d:n\n	display: none;\nsnippet d:ri\n	display: run-in;\nsnippet d:tbcp\n	display: table-caption;\nsnippet d:tbc\n	display: table-cell;\nsnippet d:tbclg\n	display: table-column-group;\nsnippet d:tbcl\n	display: table-column;\nsnippet d:tbfg\n	display: table-footer-group;\nsnippet d:tbhg\n	display: table-header-group;\nsnippet d:tbrg\n	display: table-row-group;\nsnippet d:tbr\n	display: table-row;\nsnippet d:tb\n	display: table;\nsnippet ec\n	empty-cells: ${1};\nsnippet ec:h\n	empty-cells: hide;\nsnippet ec:s\n	empty-cells: show;\nsnippet exp\n	expression()\nsnippet fl\n	float: ${1};\nsnippet fl:l\n	float: left;\nsnippet fl:n\n	float: none;\nsnippet fl:r\n	float: right;\nsnippet f+\n	font: ${1:1em} ${2:Arial},${3:sans-serif};\nsnippet fef\n	font-effect: ${1};\nsnippet fef:eb\n	font-effect: emboss;\nsnippet fef:eg\n	font-effect: engrave;\nsnippet fef:n\n	font-effect: none;\nsnippet fef:o\n	font-effect: outline;\nsnippet femp\n	font-emphasize-position: ${1};\nsnippet femp:a\n	font-emphasize-position: after;\nsnippet femp:b\n	font-emphasize-position: before;\nsnippet fems\n	font-emphasize-style: ${1};\nsnippet fems:ac\n	font-emphasize-style: accent;\nsnippet fems:c\n	font-emphasize-style: circle;\nsnippet fems:ds\n	font-emphasize-style: disc;\nsnippet fems:dt\n	font-emphasize-style: dot;\nsnippet fems:n\n	font-emphasize-style: none;\nsnippet fem\n	font-emphasize: ${1};\nsnippet ff\n	font-family: ${1};\nsnippet ff:c\n	font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\nsnippet ff:f\n	font-family: ${1:Capitals,Impact},fantasy;\nsnippet ff:m\n	font-family: ${1:Monaco,'Courier New'},monospace;\nsnippet ff:ss\n	font-family: ${1:Helvetica,Arial},sans-serif;\nsnippet ff:s\n	font-family: ${1:Georgia,'Times New Roman'},serif;\nsnippet fza\n	font-size-adjust: ${1};\nsnippet fza:n\n	font-size-adjust: none;\nsnippet fz\n	font-size: ${1};\nsnippet fsm\n	font-smooth: ${1};\nsnippet fsm:aw\n	font-smooth: always;\nsnippet fsm:a\n	font-smooth: auto;\nsnippet fsm:n\n	font-smooth: never;\nsnippet fst\n	font-stretch: ${1};\nsnippet fst:c\n	font-stretch: condensed;\nsnippet fst:e\n	font-stretch: expanded;\nsnippet fst:ec\n	font-stretch: extra-condensed;\nsnippet fst:ee\n	font-stretch: extra-expanded;\nsnippet fst:n\n	font-stretch: normal;\nsnippet fst:sc\n	font-stretch: semi-condensed;\nsnippet fst:se\n	font-stretch: semi-expanded;\nsnippet fst:uc\n	font-stretch: ultra-condensed;\nsnippet fst:ue\n	font-stretch: ultra-expanded;\nsnippet fs\n	font-style: ${1};\nsnippet fs:i\n	font-style: italic;\nsnippet fs:n\n	font-style: normal;\nsnippet fs:o\n	font-style: oblique;\nsnippet fv\n	font-variant: ${1};\nsnippet fv:n\n	font-variant: normal;\nsnippet fv:sc\n	font-variant: small-caps;\nsnippet fw\n	font-weight: ${1};\nsnippet fw:b\n	font-weight: bold;\nsnippet fw:br\n	font-weight: bolder;\nsnippet fw:lr\n	font-weight: lighter;\nsnippet fw:n\n	font-weight: normal;\nsnippet f\n	font: ${1};\nsnippet h\n	height: ${1};\nsnippet h:a\n	height: auto;\nsnippet l\n	left: ${1};\nsnippet l:a\n	left: auto;\nsnippet lts\n	letter-spacing: ${1};\nsnippet lh\n	line-height: ${1};\nsnippet lisi\n	list-style-image: url(${1});\nsnippet lisi:n\n	list-style-image: none;\nsnippet lisp\n	list-style-position: ${1};\nsnippet lisp:i\n	list-style-position: inside;\nsnippet lisp:o\n	list-style-position: outside;\nsnippet list\n	list-style-type: ${1};\nsnippet list:c\n	list-style-type: circle;\nsnippet list:dclz\n	list-style-type: decimal-leading-zero;\nsnippet list:dc\n	list-style-type: decimal;\nsnippet list:d\n	list-style-type: disc;\nsnippet list:lr\n	list-style-type: lower-roman;\nsnippet list:n\n	list-style-type: none;\nsnippet list:s\n	list-style-type: square;\nsnippet list:ur\n	list-style-type: upper-roman;\nsnippet lis\n	list-style: ${1};\nsnippet lis:n\n	list-style: none;\nsnippet mb\n	margin-bottom: ${1};\nsnippet mb:a\n	margin-bottom: auto;\nsnippet ml\n	margin-left: ${1};\nsnippet ml:a\n	margin-left: auto;\nsnippet mr\n	margin-right: ${1};\nsnippet mr:a\n	margin-right: auto;\nsnippet mt\n	margin-top: ${1};\nsnippet mt:a\n	margin-top: auto;\nsnippet m\n	margin: ${1};\nsnippet m:4\n	margin: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet m:3\n	margin: ${1:0} ${2:0} ${3:0};\nsnippet m:2\n	margin: ${1:0} ${2:0};\nsnippet m:0\n	margin: 0;\nsnippet m:a\n	margin: auto;\nsnippet mah\n	max-height: ${1};\nsnippet mah:n\n	max-height: none;\nsnippet maw\n	max-width: ${1};\nsnippet maw:n\n	max-width: none;\nsnippet mih\n	min-height: ${1};\nsnippet miw\n	min-width: ${1};\nsnippet op\n	opacity: ${1};\nsnippet op:ie\n	filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\nsnippet op:ms\n	-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\nsnippet orp\n	orphans: ${1};\nsnippet o+\n	outline: ${1:1px} ${2:solid} #${3:000};\nsnippet oc\n	outline-color: ${1:#000};\nsnippet oc:i\n	outline-color: invert;\nsnippet oo\n	outline-offset: ${1};\nsnippet os\n	outline-style: ${1};\nsnippet ow\n	outline-width: ${1};\nsnippet o\n	outline: ${1};\nsnippet o:n\n	outline: none;\nsnippet ovs\n	overflow-style: ${1};\nsnippet ovs:a\n	overflow-style: auto;\nsnippet ovs:mq\n	overflow-style: marquee;\nsnippet ovs:mv\n	overflow-style: move;\nsnippet ovs:p\n	overflow-style: panner;\nsnippet ovs:s\n	overflow-style: scrollbar;\nsnippet ovx\n	overflow-x: ${1};\nsnippet ovx:a\n	overflow-x: auto;\nsnippet ovx:h\n	overflow-x: hidden;\nsnippet ovx:s\n	overflow-x: scroll;\nsnippet ovx:v\n	overflow-x: visible;\nsnippet ovy\n	overflow-y: ${1};\nsnippet ovy:a\n	overflow-y: auto;\nsnippet ovy:h\n	overflow-y: hidden;\nsnippet ovy:s\n	overflow-y: scroll;\nsnippet ovy:v\n	overflow-y: visible;\nsnippet ov\n	overflow: ${1};\nsnippet ov:a\n	overflow: auto;\nsnippet ov:h\n	overflow: hidden;\nsnippet ov:s\n	overflow: scroll;\nsnippet ov:v\n	overflow: visible;\nsnippet pb\n	padding-bottom: ${1};\nsnippet pl\n	padding-left: ${1};\nsnippet pr\n	padding-right: ${1};\nsnippet pt\n	padding-top: ${1};\nsnippet p\n	padding: ${1};\nsnippet p:4\n	padding: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet p:3\n	padding: ${1:0} ${2:0} ${3:0};\nsnippet p:2\n	padding: ${1:0} ${2:0};\nsnippet p:0\n	padding: 0;\nsnippet pgba\n	page-break-after: ${1};\nsnippet pgba:aw\n	page-break-after: always;\nsnippet pgba:a\n	page-break-after: auto;\nsnippet pgba:l\n	page-break-after: left;\nsnippet pgba:r\n	page-break-after: right;\nsnippet pgbb\n	page-break-before: ${1};\nsnippet pgbb:aw\n	page-break-before: always;\nsnippet pgbb:a\n	page-break-before: auto;\nsnippet pgbb:l\n	page-break-before: left;\nsnippet pgbb:r\n	page-break-before: right;\nsnippet pgbi\n	page-break-inside: ${1};\nsnippet pgbi:a\n	page-break-inside: auto;\nsnippet pgbi:av\n	page-break-inside: avoid;\nsnippet pos\n	position: ${1};\nsnippet pos:a\n	position: absolute;\nsnippet pos:f\n	position: fixed;\nsnippet pos:r\n	position: relative;\nsnippet pos:s\n	position: static;\nsnippet q\n	quotes: ${1};\nsnippet q:en\n	quotes: '\\201C' '\\201D' '\\2018' '\\2019';\nsnippet q:n\n	quotes: none;\nsnippet q:ru\n	quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\nsnippet rz\n	resize: ${1};\nsnippet rz:b\n	resize: both;\nsnippet rz:h\n	resize: horizontal;\nsnippet rz:n\n	resize: none;\nsnippet rz:v\n	resize: vertical;\nsnippet r\n	right: ${1};\nsnippet r:a\n	right: auto;\nsnippet tbl\n	table-layout: ${1};\nsnippet tbl:a\n	table-layout: auto;\nsnippet tbl:f\n	table-layout: fixed;\nsnippet tal\n	text-align-last: ${1};\nsnippet tal:a\n	text-align-last: auto;\nsnippet tal:c\n	text-align-last: center;\nsnippet tal:l\n	text-align-last: left;\nsnippet tal:r\n	text-align-last: right;\nsnippet ta\n	text-align: ${1};\nsnippet ta:c\n	text-align: center;\nsnippet ta:l\n	text-align: left;\nsnippet ta:r\n	text-align: right;\nsnippet td\n	text-decoration: ${1};\nsnippet td:l\n	text-decoration: line-through;\nsnippet td:n\n	text-decoration: none;\nsnippet td:o\n	text-decoration: overline;\nsnippet td:u\n	text-decoration: underline;\nsnippet te\n	text-emphasis: ${1};\nsnippet te:ac\n	text-emphasis: accent;\nsnippet te:a\n	text-emphasis: after;\nsnippet te:b\n	text-emphasis: before;\nsnippet te:c\n	text-emphasis: circle;\nsnippet te:ds\n	text-emphasis: disc;\nsnippet te:dt\n	text-emphasis: dot;\nsnippet te:n\n	text-emphasis: none;\nsnippet th\n	text-height: ${1};\nsnippet th:a\n	text-height: auto;\nsnippet th:f\n	text-height: font-size;\nsnippet th:m\n	text-height: max-size;\nsnippet th:t\n	text-height: text-size;\nsnippet ti\n	text-indent: ${1};\nsnippet ti:-\n	text-indent: -9999px;\nsnippet tj\n	text-justify: ${1};\nsnippet tj:a\n	text-justify: auto;\nsnippet tj:d\n	text-justify: distribute;\nsnippet tj:ic\n	text-justify: inter-cluster;\nsnippet tj:ii\n	text-justify: inter-ideograph;\nsnippet tj:iw\n	text-justify: inter-word;\nsnippet tj:k\n	text-justify: kashida;\nsnippet tj:t\n	text-justify: tibetan;\nsnippet to+\n	text-outline: ${1:0} ${2:0} #${3:000};\nsnippet to\n	text-outline: ${1};\nsnippet to:n\n	text-outline: none;\nsnippet tr\n	text-replace: ${1};\nsnippet tr:n\n	text-replace: none;\nsnippet tsh+\n	text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet tsh\n	text-shadow: ${1};\nsnippet tsh:n\n	text-shadow: none;\nsnippet tt\n	text-transform: ${1};\nsnippet tt:c\n	text-transform: capitalize;\nsnippet tt:l\n	text-transform: lowercase;\nsnippet tt:n\n	text-transform: none;\nsnippet tt:u\n	text-transform: uppercase;\nsnippet tw\n	text-wrap: ${1};\nsnippet tw:no\n	text-wrap: none;\nsnippet tw:n\n	text-wrap: normal;\nsnippet tw:s\n	text-wrap: suppress;\nsnippet tw:u\n	text-wrap: unrestricted;\nsnippet t\n	top: ${1};\nsnippet t:a\n	top: auto;\nsnippet va\n	vertical-align: ${1};\nsnippet va:bl\n	vertical-align: baseline;\nsnippet va:b\n	vertical-align: bottom;\nsnippet va:m\n	vertical-align: middle;\nsnippet va:sub\n	vertical-align: sub;\nsnippet va:sup\n	vertical-align: super;\nsnippet va:tb\n	vertical-align: text-bottom;\nsnippet va:tt\n	vertical-align: text-top;\nsnippet va:t\n	vertical-align: top;\nsnippet v\n	visibility: ${1};\nsnippet v:c\n	visibility: collapse;\nsnippet v:h\n	visibility: hidden;\nsnippet v:v\n	visibility: visible;\nsnippet whsc\n	white-space-collapse: ${1};\nsnippet whsc:ba\n	white-space-collapse: break-all;\nsnippet whsc:bs\n	white-space-collapse: break-strict;\nsnippet whsc:k\n	white-space-collapse: keep-all;\nsnippet whsc:l\n	white-space-collapse: loose;\nsnippet whsc:n\n	white-space-collapse: normal;\nsnippet whs\n	white-space: ${1};\nsnippet whs:n\n	white-space: normal;\nsnippet whs:nw\n	white-space: nowrap;\nsnippet whs:pl\n	white-space: pre-line;\nsnippet whs:pw\n	white-space: pre-wrap;\nsnippet whs:p\n	white-space: pre;\nsnippet wid\n	widows: ${1};\nsnippet w\n	width: ${1};\nsnippet w:a\n	width: auto;\nsnippet wob\n	word-break: ${1};\nsnippet wob:ba\n	word-break: break-all;\nsnippet wob:bs\n	word-break: break-strict;\nsnippet wob:k\n	word-break: keep-all;\nsnippet wob:l\n	word-break: loose;\nsnippet wob:n\n	word-break: normal;\nsnippet wos\n	word-spacing: ${1};\nsnippet wow\n	word-wrap: ${1};\nsnippet wow:no\n	word-wrap: none;\nsnippet wow:n\n	word-wrap: normal;\nsnippet wow:s\n	word-wrap: suppress;\nsnippet wow:u\n	word-wrap: unrestricted;\nsnippet z\n	z-index: ${1};\nsnippet z:a\n	z-index: auto;\nsnippet zoo\n	zoom: 1;\n",t.scope="css"})
\ No newline at end of file
diff --git a/js/ace/snippets/curly.js b/js/ace/snippets/curly.js
new file mode 100644
index 0000000..6bb5604
--- /dev/null
+++ b/js/ace/snippets/curly.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/curly",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="curly"})
\ No newline at end of file
diff --git a/js/ace/snippets/d.js b/js/ace/snippets/d.js
new file mode 100644
index 0000000..1057608
--- /dev/null
+++ b/js/ace/snippets/d.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/d",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="d"})
\ No newline at end of file
diff --git a/js/ace/snippets/dart.js b/js/ace/snippets/dart.js
new file mode 100644
index 0000000..63c63c9
--- /dev/null
+++ b/js/ace/snippets/dart.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/dart",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lib\n	library ${1};\n	${2}\nsnippet im\n	import '${1}';\n	${2}\nsnippet pa\n	part '${1}';\n	${2}\nsnippet pao\n	part of ${1};\n	${2}\nsnippet main\n	void main() {\n	  ${1:/* code */}\n	}\nsnippet st\n	static ${1}\nsnippet fi\n	final ${1}\nsnippet re\n	return ${1}\nsnippet br\n	break;\nsnippet th\n	throw ${1}\nsnippet cl\n	class ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet imp\n	implements ${1}\nsnippet ext\n	extends ${1}\nsnippet if\n	if (${1:true}) {\n	  ${2}\n	}\nsnippet ife\n	if (${1:true}) {\n	  ${2}\n	} else {\n	  ${3}\n	}\nsnippet el\n	else\nsnippet sw\n	switch (${1}) {\n	  ${2}\n	}\nsnippet cs\n	case ${1}:\n	  ${2}\nsnippet de\n	default:\n	  ${1}\nsnippet for\n	for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n	  ${4:$1[$2]}\n	}\nsnippet fore\n	for (final ${2:item} in ${1:itemList}) {\n	  ${3:/* code */}\n	}\nsnippet wh\n	while (${1:/* condition */}) {\n	  ${2:/* code */}\n	}\nsnippet dowh\n	do {\n	  ${2:/* code */}\n	} while (${1:/* condition */});\nsnippet as\n	assert(${1:/* condition */});\nsnippet try\n	try {\n	  ${2}\n	} catch (${1:Exception e}) {\n	}\nsnippet tryf\n	try {\n	  ${2}\n	} catch (${1:Exception e}) {\n	} finally {\n	}\n",t.scope="dart"})
\ No newline at end of file
diff --git a/js/ace/snippets/diff.js b/js/ace/snippets/diff.js
new file mode 100644
index 0000000..493c0e9
--- /dev/null
+++ b/js/ace/snippets/diff.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/diff",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\nsnippet header DEP-3 style header\n	Description: ${1}\n	Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n	Bug: ${4:url in upstream bugtracker}\n	Forwarded: ${5:no|not-needed|url}\n	Author: ${6:`g:snips_author`}\n	Reviewed-by: ${7:name and email}\n	Last-Update: ${8:`strftime("%Y-%m-%d")`}\n	Applied-Upstream: ${9:upstream version|url|commit}\n\n',t.scope="diff"})
\ No newline at end of file
diff --git a/js/ace/snippets/django.js b/js/ace/snippets/django.js
new file mode 100644
index 0000000..d0f67a6
--- /dev/null
+++ b/js/ace/snippets/django.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/django",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# Model Fields\n\n# Note: Optional arguments are using defaults that match what Django will use\n# as a default, e.g. with max_length fields.  Doing this as a form of self\n# documentation and to make it easy to know whether you should override the\n# default or not.\n\n# Note: Optional arguments that are booleans will use the opposite since you\n# can either not specify them, or override them, e.g. auto_now_add=False.\n\nsnippet auto\n	${1:FIELDNAME} = models.AutoField(${2})\nsnippet bool\n	${1:FIELDNAME} = models.BooleanField(${2:default=True})\nsnippet char\n	${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})\nsnippet comma\n	${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})\nsnippet date\n	${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet datetime\n	${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet decimal\n	${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})\nsnippet email\n	${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})\nsnippet file\n	${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})\nsnippet filepath\n	${1:FIELDNAME} = models.FilePathField(path=${2:\"/abs/path/to/dir\"}${3:, max_length=100}${4:, match=\"*.ext\"}${5:, recursive=True}${6:, blank=True, })\nsnippet float\n	${1:FIELDNAME} = models.FloatField(${2})\nsnippet image\n	${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})\nsnippet int\n	${1:FIELDNAME} = models.IntegerField(${2})\nsnippet ip\n	${1:FIELDNAME} = models.IPAddressField(${2})\nsnippet nullbool\n	${1:FIELDNAME} = models.NullBooleanField(${2})\nsnippet posint\n	${1:FIELDNAME} = models.PositiveIntegerField(${2})\nsnippet possmallint\n	${1:FIELDNAME} = models.PositiveSmallIntegerField(${2})\nsnippet slug\n	${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})\nsnippet smallint\n	${1:FIELDNAME} = models.SmallIntegerField(${2})\nsnippet text\n	${1:FIELDNAME} = models.TextField(${2:blank=True})\nsnippet time\n	${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet url\n	${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})\nsnippet xml\n	${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})\n# Relational Fields\nsnippet fk\n	${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})\nsnippet m2m\n	${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})\nsnippet o2o\n	${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})\n\n# Code Skeletons\n\nsnippet form\n	class ${1:FormName}(forms.Form):\n		\"\"\"${2:docstring}\"\"\"\n		${3}\n\nsnippet model\n	class ${1:ModelName}(models.Model):\n		\"\"\"${2:docstring}\"\"\"\n		${3}\n		\n		class Meta:\n			${4}\n		\n		def __unicode__(self):\n			${5}\n		\n		def save(self, force_insert=False, force_update=False):\n			${6}\n		\n		@models.permalink\n		def get_absolute_url(self):\n			return ('${7:view_or_url_name}' ${8})\n\nsnippet modeladmin\n	class ${1:ModelName}Admin(admin.ModelAdmin):\n		${2}\n	\n	admin.site.register($1, $1Admin)\n	\nsnippet tabularinline\n	class ${1:ModelName}Inline(admin.TabularInline):\n		model = $1\n\nsnippet stackedinline\n	class ${1:ModelName}Inline(admin.StackedInline):\n		model = $1\n\nsnippet r2r\n	return render_to_response('${1:template.html}', {\n			${2}\n		}${3:, context_instance=RequestContext(request)}\n	)\n",t.scope="django"})
\ No newline at end of file
diff --git a/js/ace/snippets/dockerfile.js b/js/ace/snippets/dockerfile.js
new file mode 100644
index 0000000..0c27420
--- /dev/null
+++ b/js/ace/snippets/dockerfile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/dockerfile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dockerfile"})
\ No newline at end of file
diff --git a/js/ace/snippets/dot.js b/js/ace/snippets/dot.js
new file mode 100644
index 0000000..d4a9e9b
--- /dev/null
+++ b/js/ace/snippets/dot.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/dot",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="dot"})
\ No newline at end of file
diff --git a/js/ace/snippets/eiffel.js b/js/ace/snippets/eiffel.js
new file mode 100644
index 0000000..21fb888
--- /dev/null
+++ b/js/ace/snippets/eiffel.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/eiffel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="eiffel"})
\ No newline at end of file
diff --git a/js/ace/snippets/ejs.js b/js/ace/snippets/ejs.js
new file mode 100644
index 0000000..2e8cbca
--- /dev/null
+++ b/js/ace/snippets/ejs.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ejs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ejs"})
\ No newline at end of file
diff --git a/js/ace/snippets/elixir.js b/js/ace/snippets/elixir.js
new file mode 100644
index 0000000..455f2f4
--- /dev/null
+++ b/js/ace/snippets/elixir.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/elixir",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""})
\ No newline at end of file
diff --git a/js/ace/snippets/elm.js b/js/ace/snippets/elm.js
new file mode 100644
index 0000000..b483953
--- /dev/null
+++ b/js/ace/snippets/elm.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/elm",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="elm"})
\ No newline at end of file
diff --git a/js/ace/snippets/erlang.js b/js/ace/snippets/erlang.js
new file mode 100644
index 0000000..58de696
--- /dev/null
+++ b/js/ace/snippets/erlang.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/erlang",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# module and export all\nsnippet mod\n	-module(${1:`Filename('', 'my')`}).\n	\n	-compile([export_all]).\n	\n	start() ->\n	    ${2}\n	\n	stop() ->\n	    ok.\n# define directive\nsnippet def\n	-ace.define(${1:macro}, ${2:body}).${3}\n# export directive\nsnippet exp\n	-export([${1:function}/${2:arity}]).\n# include directive\nsnippet inc\n	-include(\"${1:file}\").${2}\n# behavior directive\nsnippet beh\n	-behaviour(${1:behaviour}).${2}\n# if expression\nsnippet if\n	if\n	    ${1:guard} ->\n	        ${2:body}\n	end\n# case expression\nsnippet case\n	case ${1:expression} of\n	    ${2:pattern} ->\n	        ${3:body};\n	end\n# anonymous function\nsnippet fun\n	fun (${1:Parameters}) -> ${2:body} end${3}\n# try...catch\nsnippet try\n	try\n	    ${1}\n	catch\n	    ${2:_:_} -> ${3:got_some_exception}\n	end\n# record directive\nsnippet rec\n	-record(${1:record}, {\n	    ${2:field}=${3:value}}).${4}\n# todo comment\nsnippet todo\n	%% TODO: ${1}\n## Snippets below (starting with '%') are in EDoc format.\n## See http://www.erlang.org/doc/apps/edoc/chapter.html#id56887 for more details\n# doc comment\nsnippet %d\n	%% @doc ${1}\n# end of doc comment\nsnippet %e\n	%% @end\n# specification comment\nsnippet %s\n	%% @spec ${1}\n# private function marker\nsnippet %p\n	%% @private\n# OTP application\nsnippet application\n	-module(${1:`Filename('', 'my')`}).\n\n	-behaviour(application).\n\n	-export([start/2, stop/1]).\n\n	start(_Type, _StartArgs) ->\n	    case ${2:root_supervisor}:start_link() of\n	        {ok, Pid} ->\n	            {ok, Pid};\n	        Other ->\n		          {error, Other}\n	    end.\n\n	stop(_State) ->\n	    ok.	\n# OTP supervisor\nsnippet supervisor\n	-module(${1:`Filename('', 'my')`}).\n\n	-behaviour(supervisor).\n\n	%% API\n	-export([start_link/0]).\n\n	%% Supervisor callbacks\n	-export([init/1]).\n\n	-ace.define(SERVER, ?MODULE).\n\n	start_link() ->\n	    supervisor:start_link({local, ?SERVER}, ?MODULE, []).\n\n	init([]) ->\n	    Server = {${2:my_server}, {$2, start_link, []},\n	      permanent, 2000, worker, [$2]},\n	    Children = [Server],\n	    RestartStrategy = {one_for_one, 0, 1},\n	    {ok, {RestartStrategy, Children}}.\n# OTP gen_server\nsnippet gen_server\n	-module(${1:`Filename('', 'my')`}).\n\n	-behaviour(gen_server).\n\n	%% API\n	-export([\n	         start_link/0\n	        ]).\n\n	%% gen_server callbacks\n	-export([init/1, handle_call/3, handle_cast/2, handle_info/2,\n	         terminate/2, code_change/3]).\n\n	-ace.define(SERVER, ?MODULE).\n\n	-record(state, {}).\n\n	%%%===================================================================\n	%%% API\n	%%%===================================================================\n\n	start_link() ->\n	    gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).\n\n	%%%===================================================================\n	%%% gen_server callbacks\n	%%%===================================================================\n\n	init([]) ->\n	    {ok, #state{}}.\n\n	handle_call(_Request, _From, State) ->\n	    Reply = ok,\n	    {reply, Reply, State}.\n\n	handle_cast(_Msg, State) ->\n	    {noreply, State}.\n\n	handle_info(_Info, State) ->\n	    {noreply, State}.\n\n	terminate(_Reason, _State) ->\n	    ok.\n\n	code_change(_OldVsn, State, _Extra) ->\n	    {ok, State}.\n\n	%%%===================================================================\n	%%% Internal functions\n	%%%===================================================================\n\n",t.scope="erlang"})
\ No newline at end of file
diff --git a/js/ace/snippets/forth.js b/js/ace/snippets/forth.js
new file mode 100644
index 0000000..3aa9db0
--- /dev/null
+++ b/js/ace/snippets/forth.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/forth",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="forth"})
\ No newline at end of file
diff --git a/js/ace/snippets/ftl.js b/js/ace/snippets/ftl.js
new file mode 100644
index 0000000..3e57d17
--- /dev/null
+++ b/js/ace/snippets/ftl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ftl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ftl"})
\ No newline at end of file
diff --git a/js/ace/snippets/gcode.js b/js/ace/snippets/gcode.js
new file mode 100644
index 0000000..b0108df
--- /dev/null
+++ b/js/ace/snippets/gcode.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gcode"})
\ No newline at end of file
diff --git a/js/ace/snippets/gherkin.js b/js/ace/snippets/gherkin.js
new file mode 100644
index 0000000..44a8869
--- /dev/null
+++ b/js/ace/snippets/gherkin.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gherkin",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gherkin"})
\ No newline at end of file
diff --git a/js/ace/snippets/gitignore.js b/js/ace/snippets/gitignore.js
new file mode 100644
index 0000000..87713df
--- /dev/null
+++ b/js/ace/snippets/gitignore.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/gitignore",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="gitignore"})
\ No newline at end of file
diff --git a/js/ace/snippets/glsl.js b/js/ace/snippets/glsl.js
new file mode 100644
index 0000000..042ed75
--- /dev/null
+++ b/js/ace/snippets/glsl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/glsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="glsl"})
\ No newline at end of file
diff --git a/js/ace/snippets/golang.js b/js/ace/snippets/golang.js
new file mode 100644
index 0000000..f1f0309
--- /dev/null
+++ b/js/ace/snippets/golang.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/golang",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="golang"})
\ No newline at end of file
diff --git a/js/ace/snippets/groovy.js b/js/ace/snippets/groovy.js
new file mode 100644
index 0000000..a293cc4
--- /dev/null
+++ b/js/ace/snippets/groovy.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/groovy",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="groovy"})
\ No newline at end of file
diff --git a/js/ace/snippets/haml.js b/js/ace/snippets/haml.js
new file mode 100644
index 0000000..95d637a
--- /dev/null
+++ b/js/ace/snippets/haml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/haml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet t\n	%table\n		%tr\n			%th\n				${1:headers}\n		%tr\n			%td\n				${2:headers}\nsnippet ul\n	%ul\n		%li\n			${1:item}\n		%li\nsnippet =rp\n	= render :partial => '${1:partial}'\nsnippet =rpl\n	= render :partial => '${1:partial}', :locals => {}\nsnippet =rpc\n	= render :partial => '${1:partial}', :collection => @$1\n\n",t.scope="haml"})
\ No newline at end of file
diff --git a/js/ace/snippets/handlebars.js b/js/ace/snippets/handlebars.js
new file mode 100644
index 0000000..70dc88e
--- /dev/null
+++ b/js/ace/snippets/handlebars.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/handlebars",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="handlebars"})
\ No newline at end of file
diff --git a/js/ace/snippets/haskell.js b/js/ace/snippets/haskell.js
new file mode 100644
index 0000000..69c2ef8
--- /dev/null
+++ b/js/ace/snippets/haskell.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/haskell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet lang\n	{-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n	-- |\n	-- Module      :  ${1:Module.Namespace}\n	-- Copyright   :  ${2:Author} ${3:2011-2012}\n	-- License     :  ${4:BSD3}\n	--\n	-- Maintainer  :  ${5:email@something.com}\n	-- Stability   :  ${6:experimental}\n	-- Portability :  ${7:unknown}\n	--\n	-- ${8:Description}\n	--\nsnippet import\n	import           ${1:Data.Text}\nsnippet import2\n	import           ${1:Data.Text} (${2:head})\nsnippet importq\n	import qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n	instance ${1:Monoid} ${2:Type} where\n		${3}\nsnippet type\n	type ${1:Type} = ${2:Type}\nsnippet data\n	data ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n	newtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n	class ${1:Class} a where\n		${2}\nsnippet module\n	module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n	)	where\n	`expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n  print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n	${1:name} :: ${2:a}\n	$1 = ${3:undefined}\nsnippet fn\n	${1:fn} :: ${2:a} -> ${3:a}\n	$1 ${4} = ${5:undefined}\nsnippet fn2\n	${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n	$1 ${5} = ${6:undefined}\nsnippet ap\n	${1:map} ${2:fn} ${3:list}\nsnippet do\n	do\n		\nsnippet \u03bb\n	\\${1:x} -> ${2}\nsnippet \\\n	\\${1:x} -> ${2}\nsnippet <-\n	${1:a} <- ${2:m a}\nsnippet \u2190\n	${1:a} <- ${2:m a}\nsnippet ->\n	${1:m a} -> ${2:a}\nsnippet \u2192\n	${1:m a} -> ${2:a}\nsnippet tup\n	(${1:a}, ${2:b})\nsnippet tup2\n	(${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n	(${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n	${1:Record} { ${2:recFieldA} = ${3:undefined}\n				, ${4:recFieldB} = ${5:undefined}\n				}\nsnippet case\n	case ${1:something} of\n		${2} -> ${3}\nsnippet let\n	let ${1} = ${2}\n	in ${3}\nsnippet where\n	where\n		${1:fn} = ${2:undefined}\n",t.scope="haskell"})
\ No newline at end of file
diff --git a/js/ace/snippets/haxe.js b/js/ace/snippets/haxe.js
new file mode 100644
index 0000000..d24a982
--- /dev/null
+++ b/js/ace/snippets/haxe.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/haxe",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="haxe"})
\ No newline at end of file
diff --git a/js/ace/snippets/html.js b/js/ace/snippets/html.js
new file mode 100644
index 0000000..a220d3d
--- /dev/null
+++ b/js/ace/snippets/html.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/html",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n	&nbsp;\n# \u2190\nsnippet left\n	&#x2190;\n# \u2192\nsnippet right\n	&#x2192;\n# \u2191\nsnippet up\n	&#x2191;\n# \u2193\nsnippet down\n	&#x2193;\n# \u21a9\nsnippet return\n	&#x21A9;\n# \u21e4\nsnippet backtab\n	&#x21E4;\n# \u21e5\nsnippet tab\n	&#x21E5;\n# \u21e7\nsnippet shift\n	&#x21E7;\n# \u2303\nsnippet ctrl\n	&#x2303;\n# \u2305\nsnippet enter\n	&#x2305;\n# \u2318\nsnippet cmd\n	&#x2318;\n# \u2325\nsnippet option\n	&#x2325;\n# \u2326\nsnippet delete\n	&#x2326;\n# \u232b\nsnippet backspace\n	&#x232B;\n# \u238b\nsnippet esc\n	&#x238B;\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n	"http://www.w3.org/TR/html4/strict.dtd">\nsnippet doctype HTML 4.01 Transitional\n	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n	"http://www.w3.org/TR/html4/loose.dtd">\nsnippet doctype HTML 5\n	<!DOCTYPE HTML>\nsnippet doctype XHTML 1.0 Frameset\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\nsnippet doctype XHTML 1.0 Strict\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\nsnippet doctype XHTML 1.0 Transitional\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\nsnippet doctype XHTML 1.1\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n# HTML Doctype 4.01 Strict\nsnippet docts\n	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n	"http://www.w3.org/TR/html4/strict.dtd">\n# HTML Doctype 4.01 Transitional\nsnippet doct\n	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n	"http://www.w3.org/TR/html4/loose.dtd">\n# HTML Doctype 5\nsnippet doct5\n	<!DOCTYPE HTML>\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"\n	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n# XHTML Doctype 1.1\nsnippet docx\n	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n# Attributes\nsnippet attr\n	${1:attribute}="${2:property}"\nsnippet attr+\n	${1:attribute}="${2:property}" attr+${3}\nsnippet .\n	class="${1}"${2}\nsnippet #\n	id="${1}"${2}\nsnippet alt\n	alt="${1}"${2}\nsnippet charset\n	charset="${1:utf-8}"${2}\nsnippet data\n	data-${1}="${2:$1}"${3}\nsnippet for\n	for="${1}"${2}\nsnippet height\n	height="${1}"${2}\nsnippet href\n	href="${1:#}"${2}\nsnippet lang\n	lang="${1:en}"${2}\nsnippet media\n	media="${1}"${2}\nsnippet name\n	name="${1}"${2}\nsnippet rel\n	rel="${1}"${2}\nsnippet scope\n	scope="${1:row}"${2}\nsnippet src\n	src="${1}"${2}\nsnippet title=\n	title="${1}"${2}\nsnippet type\n	type="${1}"${2}\nsnippet value\n	value="${1}"${2}\nsnippet width\n	width="${1}"${2}\n# Elements\nsnippet a\n	<a href="${1:#}">${2:$1}</a>\nsnippet a.\n	<a class="${1}" href="${2:#}">${3:$1}</a>\nsnippet a#\n	<a id="${1}" href="${2:#}">${3:$1}</a>\nsnippet a:ext\n	<a href="http://${1:example.com}">${2:$1}</a>\nsnippet a:mail\n	<a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a>\nsnippet abbr\n	<abbr title="${1}">${2}</abbr>\nsnippet address\n	<address>\n		${1}\n	</address>\nsnippet area\n	<area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />\nsnippet area+\n	<area shape="${1:rect}" coords="${2}" href="${3}" alt="${4}" />\n	area+${5}\nsnippet area:c\n	<area shape="circle" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:d\n	<area shape="default" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:p\n	<area shape="poly" coords="${1}" href="${2}" alt="${3}" />\nsnippet area:r\n	<area shape="rect" coords="${1}" href="${2}" alt="${3}" />\nsnippet article\n	<article>\n		${1}\n	</article>\nsnippet article.\n	<article class="${1}">\n		${2}\n	</article>\nsnippet article#\n	<article id="${1}">\n		${2}\n	</article>\nsnippet aside\n	<aside>\n		${1}\n	</aside>\nsnippet aside.\n	<aside class="${1}">\n		${2}\n	</aside>\nsnippet aside#\n	<aside id="${1}">\n		${2}\n	</aside>\nsnippet audio\n	<audio src="${1}>${2}</audio>\nsnippet b\n	<b>${1}</b>\nsnippet base\n	<base href="${1}" target="${2}" />\nsnippet bdi\n	<bdi>${1}</bdo>\nsnippet bdo\n	<bdo dir="${1}">${2}</bdo>\nsnippet bdo:l\n	<bdo dir="ltr">${1}</bdo>\nsnippet bdo:r\n	<bdo dir="rtl">${1}</bdo>\nsnippet blockquote\n	<blockquote>\n		${1}\n	</blockquote>\nsnippet body\n	<body>\n		${1}\n	</body>\nsnippet br\n	<br />${1}\nsnippet button\n	<button type="${1:submit}">${2}</button>\nsnippet button.\n	<button class="${1:button}" type="${2:submit}">${3}</button>\nsnippet button#\n	<button id="${1}" type="${2:submit}">${3}</button>\nsnippet button:s\n	<button type="submit">${1}</button>\nsnippet button:r\n	<button type="reset">${1}</button>\nsnippet canvas\n	<canvas>\n		${1}\n	</canvas>\nsnippet caption\n	<caption>${1}</caption>\nsnippet cite\n	<cite>${1}</cite>\nsnippet code\n	<code>${1}</code>\nsnippet col\n	<col />${1}\nsnippet col+\n	<col />\n	col+${1}\nsnippet colgroup\n	<colgroup>\n		${1}\n	</colgroup>\nsnippet colgroup+\n	<colgroup>\n		<col />\n		col+${1}\n	</colgroup>\nsnippet command\n	<command type="command" label="${1}" icon="${2}" />\nsnippet command:c\n	<command type="checkbox" label="${1}" icon="${2}" />\nsnippet command:r\n	<command type="radio" radiogroup="${1}" label="${2}" icon="${3}" />\nsnippet datagrid\n	<datagrid>\n		${1}\n	</datagrid>\nsnippet datalist\n	<datalist>\n		${1}\n	</datalist>\nsnippet datatemplate\n	<datatemplate>\n		${1}\n	</datatemplate>\nsnippet dd\n	<dd>${1}</dd>\nsnippet dd.\n	<dd class="${1}">${2}</dd>\nsnippet dd#\n	<dd id="${1}">${2}</dd>\nsnippet del\n	<del>${1}</del>\nsnippet details\n	<details>${1}</details>\nsnippet dfn\n	<dfn>${1}</dfn>\nsnippet dialog\n	<dialog>\n		${1}\n	</dialog>\nsnippet div\n	<div>\n		${1}\n	</div>\nsnippet div.\n	<div class="${1}">\n		${2}\n	</div>\nsnippet div#\n	<div id="${1}">\n		${2}\n	</div>\nsnippet dl\n	<dl>\n		${1}\n	</dl>\nsnippet dl.\n	<dl class="${1}">\n		${2}\n	</dl>\nsnippet dl#\n	<dl id="${1}">\n		${2}\n	</dl>\nsnippet dl+\n	<dl>\n		<dt>${1}</dt>\n		<dd>${2}</dd>\n		dt+${3}\n	</dl>\nsnippet dt\n	<dt>${1}</dt>\nsnippet dt.\n	<dt class="${1}">${2}</dt>\nsnippet dt#\n	<dt id="${1}">${2}</dt>\nsnippet dt+\n	<dt>${1}</dt>\n	<dd>${2}</dd>\n	dt+${3}\nsnippet em\n	<em>${1}</em>\nsnippet embed\n	<embed src=${1} type="${2} />\nsnippet fieldset\n	<fieldset>\n		${1}\n	</fieldset>\nsnippet fieldset.\n	<fieldset class="${1}">\n		${2}\n	</fieldset>\nsnippet fieldset#\n	<fieldset id="${1}">\n		${2}\n	</fieldset>\nsnippet fieldset+\n	<fieldset>\n		<legend><span>${1}</span></legend>\n		${2}\n	</fieldset>\n	fieldset+${3}\nsnippet figcaption\n	<figcaption>${1}</figcaption>\nsnippet figure\n	<figure>${1}</figure>\nsnippet footer\n	<footer>\n		${1}\n	</footer>\nsnippet footer.\n	<footer class="${1}">\n		${2}\n	</footer>\nsnippet footer#\n	<footer id="${1}">\n		${2}\n	</footer>\nsnippet form\n	<form action="${1}" method="${2:get}" accept-charset="utf-8">\n		${3}\n	</form>\nsnippet form.\n	<form class="${1}" action="${2}" method="${3:get}" accept-charset="utf-8">\n		${4}\n	</form>\nsnippet form#\n	<form id="${1}" action="${2}" method="${3:get}" accept-charset="utf-8">\n		${4}\n	</form>\nsnippet h1\n	<h1>${1}</h1>\nsnippet h1.\n	<h1 class="${1}">${2}</h1>\nsnippet h1#\n	<h1 id="${1}">${2}</h1>\nsnippet h2\n	<h2>${1}</h2>\nsnippet h2.\n	<h2 class="${1}">${2}</h2>\nsnippet h2#\n	<h2 id="${1}">${2}</h2>\nsnippet h3\n	<h3>${1}</h3>\nsnippet h3.\n	<h3 class="${1}">${2}</h3>\nsnippet h3#\n	<h3 id="${1}">${2}</h3>\nsnippet h4\n	<h4>${1}</h4>\nsnippet h4.\n	<h4 class="${1}">${2}</h4>\nsnippet h4#\n	<h4 id="${1}">${2}</h4>\nsnippet h5\n	<h5>${1}</h5>\nsnippet h5.\n	<h5 class="${1}">${2}</h5>\nsnippet h5#\n	<h5 id="${1}">${2}</h5>\nsnippet h6\n	<h6>${1}</h6>\nsnippet h6.\n	<h6 class="${1}">${2}</h6>\nsnippet h6#\n	<h6 id="${1}">${2}</h6>\nsnippet head\n	<head>\n		<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n\n		<title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n		${2}\n	</head>\nsnippet header\n	<header>\n		${1}\n	</header>\nsnippet header.\n	<header class="${1}">\n		${2}\n	</header>\nsnippet header#\n	<header id="${1}">\n		${2}\n	</header>\nsnippet hgroup\n	<hgroup>\n		${1}\n	</hgroup>\nsnippet hgroup.\n	<hgroup class="${1}>\n		${2}\n	</hgroup>\nsnippet hr\n	<hr />${1}\nsnippet html\n	<html>\n	${1}\n	</html>\nsnippet xhtml\n	<html xmlns="http://www.w3.org/1999/xhtml">\n	${1}\n	</html>\nsnippet html5\n	<!DOCTYPE html>\n	<html>\n		<head>\n			<meta http-equiv="content-type" content="text/html; charset=utf-8" />\n			<title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\n			${2:meta}\n		</head>\n		<body>\n			${3:body}\n		</body>\n	</html>\nsnippet i\n	<i>${1}</i>\nsnippet iframe\n	<iframe src="${1}" frameborder="0"></iframe>${2}\nsnippet iframe.\n	<iframe class="${1}" src="${2}" frameborder="0"></iframe>${3}\nsnippet iframe#\n	<iframe id="${1}" src="${2}" frameborder="0"></iframe>${3}\nsnippet img\n	<img src="${1}" alt="${2}" />${3}\nsnippet img.\n	<img class="${1}" src="${2}" alt="${3}" />${4}\nsnippet img#\n	<img id="${1}" src="${2}" alt="${3}" />${4}\nsnippet input\n	<input type="${1:text/submit/hidden/button/image}" name="${2}" id="${3:$2}" value="${4}" />${5}\nsnippet input.\n	<input class="${1}" type="${2:text/submit/hidden/button/image}" name="${3}" id="${4:$3}" value="${5}" />${6}\nsnippet input:text\n	<input type="text" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:submit\n	<input type="submit" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:hidden\n	<input type="hidden" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:button\n	<input type="button" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:image\n	<input type="image" name="${1}" id="${2:$1}" src="${3}" alt="${4}" />${5}\nsnippet input:checkbox\n	<input type="checkbox" name="${1}" id="${2:$1}" />${3}\nsnippet input:radio\n	<input type="radio" name="${1}" id="${2:$1}" />${3}\nsnippet input:color\n	<input type="color" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:date\n	<input type="date" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:datetime\n	<input type="datetime" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:datetime-local\n	<input type="datetime-local" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:email\n	<input type="email" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:file\n	<input type="file" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:month\n	<input type="month" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:number\n	<input type="number" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:password\n	<input type="password" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:range\n	<input type="range" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:reset\n	<input type="reset" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:search\n	<input type="search" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:time\n	<input type="time" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:url\n	<input type="url" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet input:week\n	<input type="week" name="${1}" id="${2:$1}" value="${3}" />${4}\nsnippet ins\n	<ins>${1}</ins>\nsnippet kbd\n	<kbd>${1}</kbd>\nsnippet keygen\n	<keygen>${1}</keygen>\nsnippet label\n	<label for="${2:$1}">${1}</label>\nsnippet label:i\n	<label for="${2:$1}">${1}</label>\n	<input type="${3:text/submit/hidden/button}" name="${4:$2}" id="${5:$2}" value="${6}" />${7}\nsnippet label:s\n	<label for="${2:$1}">${1}</label>\n	<select name="${3:$2}" id="${4:$2}">\n		<option value="${5}">${6:$5}</option>\n	</select>\nsnippet legend\n	<legend>${1}</legend>\nsnippet legend+\n	<legend><span>${1}</span></legend>\nsnippet li\n	<li>${1}</li>\nsnippet li.\n	<li class="${1}">${2}</li>\nsnippet li+\n	<li>${1}</li>\n	li+${2}\nsnippet lia\n	<li><a href="${2:#}">${1}</a></li>\nsnippet lia+\n	<li><a href="${2:#}">${1}</a></li>\n	lia+${3}\nsnippet link\n	<link rel="${1}" href="${2}" title="${3}" type="${4}" />${5}\nsnippet link:atom\n	<link rel="alternate" href="${1:atom.xml}" title="Atom" type="application/atom+xml" />${2}\nsnippet link:css\n	<link rel="stylesheet" href="${2:style.css}" type="text/css" media="${3:all}" />${4}\nsnippet link:favicon\n	<link rel="shortcut icon" href="${1:favicon.ico}" type="image/x-icon" />${2}\nsnippet link:rss\n	<link rel="alternate" href="${1:rss.xml}" title="RSS" type="application/atom+xml" />${2}\nsnippet link:touch\n	<link rel="apple-touch-icon" href="${1:favicon.png}" />${2}\nsnippet map\n	<map name="${1}">\n		${2}\n	</map>\nsnippet map.\n	<map class="${1}" name="${2}">\n		${3}\n	</map>\nsnippet map#\n	<map name="${1}" id="${2:$1}>\n		${3}\n	</map>\nsnippet map+\n	<map name="${1}">\n		<area shape="${2}" coords="${3}" href="${4}" alt="${5}" />${6}\n	</map>${7}\nsnippet mark\n	<mark>${1}</mark>\nsnippet menu\n	<menu>\n		${1}\n	</menu>\nsnippet menu:c\n	<menu type="context">\n		${1}\n	</menu>\nsnippet menu:t\n	<menu type="toolbar">\n		${1}\n	</menu>\nsnippet meta\n	<meta http-equiv="${1}" content="${2}" />${3}\nsnippet meta:compat\n	<meta http-equiv="X-UA-Compatible" content="IE=${1:7,8,edge}" />${3}\nsnippet meta:refresh\n	<meta http-equiv="refresh" content="text/html;charset=UTF-8" />${3}\nsnippet meta:utf\n	<meta http-equiv="content-type" content="text/html;charset=UTF-8" />${3}\nsnippet meter\n	<meter>${1}</meter>\nsnippet nav\n	<nav>\n		${1}\n	</nav>\nsnippet nav.\n	<nav class="${1}">\n		${2}\n	</nav>\nsnippet nav#\n	<nav id="${1}">\n		${2}\n	</nav>\nsnippet noscript\n	<noscript>\n		${1}\n	</noscript>\nsnippet object\n	<object data="${1}" type="${2}">\n		${3}\n	</object>${4}\n# Embed QT Movie\nsnippet movie\n	<object width="$2" height="$3" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"\n	 codebase="http://www.apple.com/qtactivex/qtplugin.cab">\n		<param name="src" value="$1" />\n		<param name="controller" value="$4" />\n		<param name="autoplay" value="$5" />\n		<embed src="${1:movie.mov}"\n			width="${2:320}" height="${3:240}"\n			controller="${4:true}" autoplay="${5:true}"\n			scale="tofit" cache="true"\n			pluginspage="http://www.apple.com/quicktime/download/" />\n	</object>${6}\nsnippet ol\n	<ol>\n		${1}\n	</ol>\nsnippet ol.\n	<ol class="${1}>\n		${2}\n	</ol>\nsnippet ol#\n	<ol id="${1}>\n		${2}\n	</ol>\nsnippet ol+\n	<ol>\n		<li>${1}</li>\n		li+${2}\n	</ol>\nsnippet opt\n	<option value="${1}">${2:$1}</option>\nsnippet opt+\n	<option value="${1}">${2:$1}</option>\n	opt+${3}\nsnippet optt\n	<option>${1}</option>\nsnippet optgroup\n	<optgroup>\n		<option value="${1}">${2:$1}</option>\n		opt+${3}\n	</optgroup>\nsnippet output\n	<output>${1}</output>\nsnippet p\n	<p>${1}</p>\nsnippet param\n	<param name="${1}" value="${2}" />${3}\nsnippet pre\n	<pre>\n		${1}\n	</pre>\nsnippet progress\n	<progress>${1}</progress>\nsnippet q\n	<q>${1}</q>\nsnippet rp\n	<rp>${1}</rp>\nsnippet rt\n	<rt>${1}</rt>\nsnippet ruby\n	<ruby>\n		<rp><rt>${1}</rt></rp>\n	</ruby>\nsnippet s\n	<s>${1}</s>\nsnippet samp\n	<samp>\n		${1}\n	</samp>\nsnippet script\n	<script type="text/javascript" charset="utf-8">\n		${1}\n	<\/script>\nsnippet scriptsrc\n	<script src="${1}.js" type="text/javascript" charset="utf-8"><\/script>\nsnippet section\n	<section>\n		${1}\n	</section>\nsnippet section.\n	<section class="${1}">\n		${2}\n	</section>\nsnippet section#\n	<section id="${1}">\n		${2}\n	</section>\nsnippet select\n	<select name="${1}" id="${2:$1}">\n		${3}\n	</select>\nsnippet select.\n	<select name="${1}" id="${2:$1}" class="${3}>\n		${4}\n	</select>\nsnippet select+\n	<select name="${1}" id="${2:$1}">\n		<option value="${3}">${4:$3}</option>\n		opt+${5}\n	</select>\nsnippet small\n	<small>${1}</small>\nsnippet source\n	<source src="${1}" type="${2}" media="${3}" />\nsnippet span\n	<span>${1}</span>\nsnippet strong\n	<strong>${1}</strong>\nsnippet style\n	<style type="text/css" media="${1:all}">\n		${2}\n	</style>\nsnippet sub\n	<sub>${1}</sub>\nsnippet summary\n	<summary>\n		${1}\n	</summary>\nsnippet sup\n	<sup>${1}</sup>\nsnippet table\n	<table border="${1:0}">\n		${2}\n	</table>\nsnippet table.\n	<table class="${1}" border="${2:0}">\n		${3}\n	</table>\nsnippet table#\n	<table id="${1}" border="${2:0}">\n		${3}\n	</table>\nsnippet tbody\n	<tbody>\n		${1}\n	</tbody>\nsnippet td\n	<td>${1}</td>\nsnippet td.\n	<td class="${1}">${2}</td>\nsnippet td#\n	<td id="${1}">${2}</td>\nsnippet td+\n	<td>${1}</td>\n	td+${2}\nsnippet textarea\n	<textarea name="${1}" id=${2:$1} rows="${3:8}" cols="${4:40}">${5}</textarea>${6}\nsnippet tfoot\n	<tfoot>\n		${1}\n	</tfoot>\nsnippet th\n	<th>${1}</th>\nsnippet th.\n	<th class="${1}">${2}</th>\nsnippet th#\n	<th id="${1}">${2}</th>\nsnippet th+\n	<th>${1}</th>\n	th+${2}\nsnippet thead\n	<thead>\n		${1}\n	</thead>\nsnippet time\n	<time datetime="${1}" pubdate="${2:$1}>${3:$1}</time>\nsnippet title\n	<title>${1:`substitute(Filename(\'\', \'Page Title\'), \'^.\', \'\\u&\', \'\')`}</title>\nsnippet tr\n	<tr>\n		${1}\n	</tr>\nsnippet tr+\n	<tr>\n		<td>${1}</td>\n		td+${2}\n	</tr>\nsnippet track\n	<track src="${1}" srclang="${2}" label="${3}" default="${4:default}>${5}</track>${6}\nsnippet ul\n	<ul>\n		${1}\n	</ul>\nsnippet ul.\n	<ul class="${1}">\n		${2}\n	</ul>\nsnippet ul#\n	<ul id="${1}">\n		${2}\n	</ul>\nsnippet ul+\n	<ul>\n		<li>${1}</li>\n		li+${2}\n	</ul>\nsnippet var\n	<var>${1}</var>\nsnippet video\n	<video src="${1} height="${2}" width="${3}" preload="${5:none}" autoplay="${6:autoplay}>${7}</video>${8}\nsnippet wbr\n	<wbr />${1}\n',t.scope="html"})
\ No newline at end of file
diff --git a/js/ace/snippets/html_ruby.js b/js/ace/snippets/html_ruby.js
new file mode 100644
index 0000000..4ed2cd9
--- /dev/null
+++ b/js/ace/snippets/html_ruby.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/html_ruby",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="html_ruby"})
\ No newline at end of file
diff --git a/js/ace/snippets/ini.js b/js/ace/snippets/ini.js
new file mode 100644
index 0000000..f520b9b
--- /dev/null
+++ b/js/ace/snippets/ini.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ini",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ini"})
\ No newline at end of file
diff --git a/js/ace/snippets/io.js b/js/ace/snippets/io.js
new file mode 100644
index 0000000..20bff1a
--- /dev/null
+++ b/js/ace/snippets/io.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/io",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"assertEquals(${1:expected}, ${2:expr})",name:"assertEquals",scope:"io",tabTrigger:"ae"},{content:"${1:${2:newValue} := ${3:Object} }clone do(\n	$0\n)",name:"clone do",scope:"io",tabTrigger:"cdo"},{content:'docSlot("${1:slotName}", "${2:documentation}")',name:"docSlot",scope:"io",tabTrigger:"ds"},{content:"(${1:header,}\n	${2:body}\n)$0",keyEquivalent:"@(",name:"Indented Bracketed Line",scope:"io",tabTrigger:"("},{content:"\n	$0\n",keyEquivalent:"\r",name:"Special: Return Inside Empty Parenthesis",scope:"io meta.empty-parenthesis.io, io meta.comma-parenthesis.io"},{content:"${1:methodName} := method(${2:args,}\n	$0\n)",name:"method",scope:"io",tabTrigger:"m"},{content:'newSlot("${1:slotName}", ${2:defaultValue}, "${3:docString}")$0',name:"newSlot",scope:"io",tabTrigger:"ns"},{content:"${1:name} := Object clone do(\n	$0\n)",name:"Object clone do",scope:"io",tabTrigger:"ocdo"},{content:"test${1:SomeFeature} := method(\n	$0\n)",name:"testMethod",scope:"io",tabTrigger:"ts"},{content:"${1:Something}Test := ${2:UnitTest} clone do(\n	$0\n)",name:"UnitTest",scope:"io",tabTrigger:"ut"}],t.scope="io"})
\ No newline at end of file
diff --git a/js/ace/snippets/jack.js b/js/ace/snippets/jack.js
new file mode 100644
index 0000000..99b0ebd
--- /dev/null
+++ b/js/ace/snippets/jack.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jack",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jack"})
\ No newline at end of file
diff --git a/js/ace/snippets/jade.js b/js/ace/snippets/jade.js
new file mode 100644
index 0000000..bbd1087
--- /dev/null
+++ b/js/ace/snippets/jade.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jade",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jade"})
\ No newline at end of file
diff --git a/js/ace/snippets/java.js b/js/ace/snippets/java.js
new file mode 100644
index 0000000..e00063e
--- /dev/null
+++ b/js/ace/snippets/java.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/java",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='## Access Modifiers\nsnippet po\n	protected\nsnippet pu\n	public\nsnippet pr\n	private\n##\n## Annotations\nsnippet before\n	@Before\n	static void ${1:intercept}(${2:args}) { ${3} }\nsnippet mm\n	@ManyToMany\n	${1}\nsnippet mo\n	@ManyToOne\n	${1}\nsnippet om\n	@OneToMany${1:(cascade=CascadeType.ALL)}\n	${2}\nsnippet oo\n	@OneToOne\n	${1}\n##\n## Basic Java packages and import\nsnippet im\n	import\nsnippet j.b\n	java.beans.\nsnippet j.i\n	java.io.\nsnippet j.m\n	java.math.\nsnippet j.n\n	java.net.\nsnippet j.u\n	java.util.\n##\n## Class\nsnippet cl\n	class ${1:`Filename("", "untitled")`} ${2}\nsnippet in\n	interface ${1:`Filename("", "untitled")`} ${2:extends Parent}${3}\nsnippet tc\n	public class ${1:`Filename()`} extends ${2:TestCase}\n##\n## Class Enhancements\nsnippet ext\n	extends \nsnippet imp\n	implements\n##\n## Comments\nsnippet /*\n##\n## Constants\nsnippet co\n	static public final ${1:String} ${2:var} = ${3};${4}\nsnippet cos\n	static public final String ${1:var} = "${2}";${3}\n##\n## Control Statements\nsnippet case\n	case ${1}:\n		${2}\nsnippet def\n	default:\n		${2}\nsnippet el\n	else\nsnippet elif\n	else if (${1}) ${2}\nsnippet if\n	if (${1}) ${2}\nsnippet sw\n	switch (${1}) {\n		${2}\n	}\n##\n## Create a Method\nsnippet m\n	${1:void} ${2:method}(${3}) ${4:throws }${5}\n##\n## Create a Variable\nsnippet v\n	${1:String} ${2:var}${3: = null}${4};${5}\n##\n## Enhancements to Methods, variables, classes, etc.\nsnippet ab\n	abstract\nsnippet fi\n	final\nsnippet st\n	static\nsnippet sy\n	synchronized\n##\n## Error Methods\nsnippet err\n	System.err.print("${1:Message}");\nsnippet errf\n	System.err.printf("${1:Message}", ${2:exception});\nsnippet errln\n	System.err.println("${1:Message}");\n##\n## Exception Handling\nsnippet as\n	assert ${1:test} : "${2:Failure message}";${3}\nsnippet ca\n	catch(${1:Exception} ${2:e}) ${3}\nsnippet thr\n	throw\nsnippet ths\n	throws\nsnippet try\n	try {\n		${3}\n	} catch(${1:Exception} ${2:e}) {\n	}\nsnippet tryf\n	try {\n		${3}\n	} catch(${1:Exception} ${2:e}) {\n	} finally {\n	}\n##\n## Find Methods\nsnippet findall\n	List<${1:listName}> ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n	${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\nsnippet @au\n	@author `system("grep \\`id -un\\` /etc/passwd | cut -d \\":\\" -f5 | cut -d \\",\\" -f1")`\nsnippet @br\n	@brief ${1:Description}\nsnippet @fi\n	@file ${1:`Filename()`}.java\nsnippet @pa\n	@param ${1:param}\nsnippet @re\n	@return ${1:param}\n##\n## Logger Methods\nsnippet debug\n	Logger.debug(${1:param});${2}\nsnippet error\n	Logger.error(${1:param});${2}\nsnippet info\n	Logger.info(${1:param});${2}\nsnippet warn\n	Logger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n	for (${1} : ${2}) ${3}\nsnippet for\n	for (${1}; ${2}; ${3}) ${4}\nsnippet wh\n	while (${1}) ${2}\n##\n## Main method\nsnippet main\n	public static void main (String[] args) {\n		${1:/* code */}\n	}\n##\n## Print Methods\nsnippet print\n	System.out.print("${1:Message}");\nsnippet printf\n	System.out.printf("${1:Message}", ${2:args});\nsnippet println\n	System.out.println(${1});\n##\n## Render Methods\nsnippet ren\n	render(${1:param});${2}\nsnippet rena\n	renderArgs.put("${1}", ${2});${3}\nsnippet renb\n	renderBinary(${1:param});${2}\nsnippet renj\n	renderJSON(${1:param});${2}\nsnippet renx\n	renderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n	${1:public} void set${3:}(${2:String} ${4:}){\n		this.$4 = $4;\n	}\nsnippet get\n	${1:public} ${2:String} get${3:}(){\n		return this.${4:};\n	}\n##\n## Terminate Methods or Loops\nsnippet re\n	return\nsnippet br\n	break;\n##\n## Test Methods\nsnippet t\n	public void test${1:Name}() throws Exception {\n		${2}\n	}\nsnippet test\n	@Test\n	public void test${1:Name}() throws Exception {\n		${2}\n	}\n##\n## Utils\nsnippet Sc\n	Scanner\n##\n## Miscellaneous\nsnippet action\n	public static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n	notFound(${1:param});${2}\nsnippet rnfin\n	notFoundIfNull(${1:param});${2}\nsnippet rr\n	redirect(${1:param});${2}\nsnippet ru\n	unauthorized(${1:param});${2}\nsnippet unless\n	(unless=${1:param});${2}\n',t.scope="java"})
\ No newline at end of file
diff --git a/js/ace/snippets/javascript.js b/js/ace/snippets/javascript.js
new file mode 100644
index 0000000..6e1fc6a
--- /dev/null
+++ b/js/ace/snippets/javascript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/javascript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Prototype\nsnippet proto\n	${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n		${4:// body...}\n	};\n# Function\nsnippet fun\n	function ${1?:function_name}(${2:argument}) {\n		${3:// body...}\n	}\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n	function${M1?: ${1:functionName}}($2) {\n		${0:$TM_SELECTED_TEXT}\n	}${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n	(function(${1}) {\n		${0:${TM_SELECTED_TEXT:/* code */}}\n	}(${1}));\n# if\nsnippet if\n	if (${1:true}) {\n		${0}\n	}\n# if ... else\nsnippet ife\n	if (${1:true}) {\n		${2}\n	} else {\n		${0}\n	}\n# tertiary conditional\nsnippet ter\n	${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n	switch (${1:expression}) {\n		case \'${3:case}\':\n			${4:// code}\n			break;\n		${5}\n		default:\n			${2:// code}\n	}\n# case\nsnippet case\n	case \'${1:case}\':\n		${2:// code}\n		break;\n	${3}\n\n# while (...) {...}\nsnippet wh\n	while (${1:/* condition */}) {\n		${0:/* code */}\n	}\n# try\nsnippet try\n	try {\n		${0:/* code */}\n	} catch (e) {}\n# do...while\nsnippet do\n	do {\n		${2:/* code */}\n	} while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n	${1:method_name}: function(${2:attribute}) {\n		${0}\n	}${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n	setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n	getElementsBy${1:TagName}(\'${2}\')${3}\n# Get Element\nsnippet get\n	getElementBy${1:Id}(\'${2}\')${3}\n# console.log (Firebug)\nsnippet cl\n	console.log(${1});\n# return\nsnippet ret\n	return ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n	for (var ${1:prop} in ${2:Things}) {\n		${0:$2[$1]}\n	}\n# hasOwnProperty\nsnippet has\n	hasOwnProperty(${1})\n# docstring\nsnippet /**\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n	@param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n	@return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n	JSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n	JSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n	var ${1:function_name} = function(${2:argument}) {\n		${3:// initial code ...}\n\n		$1 = function($2) {\n			${4:// main code}\n		};\n	}\n# singleton\nsnippet sing\n	function ${1:Singleton} (${2:argument}) {\n		var instance;\n		$1 = function $1($2) {\n			return instance;\n		};\n		$1.prototype = this;\n		instance = new $1();\n		instance.constructor = $1;\n\n		${3:// code ...}\n\n		return instance;\n	}\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n	var ${1:class} = function(${20}) {\n		$40$0\n	};\n	\n	(function() {\n		${60:this.prop = ""}\n	}).call(${1:class}.prototype);\n	\n	exports.${1:class} = ${1:class};\n# \nsnippet for-\n	for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n		${0:${2:Things}[${1:i}];}\n	}\n# for (...) {...}\nsnippet for\n	for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n		${3:$2[$1]}$0\n	}\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n	for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n		${3:$2[$1]}$0\n	}\n\n\n#modules\nsnippet def\n	ace.define(function(require, exports, module) {\n	"use strict";\n	var ${1/.*\\///} = require("${1}");\n	\n	$TM_SELECTED_TEXT\n	});\nsnippet req\nguard ^\\s*\n	var ${1/.*\\///} = require("${1}");\n	$0\nsnippet requ\nguard ^\\s*\n	var ${1/.*\\/(.)/\\u$1/} = require("${1}").${1/.*\\/(.)/\\u$1/};\n	$0\n',t.scope="javascript"})
\ No newline at end of file
diff --git a/js/ace/snippets/json.js b/js/ace/snippets/json.js
new file mode 100644
index 0000000..5e0e0ea
--- /dev/null
+++ b/js/ace/snippets/json.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/json",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="json"})
\ No newline at end of file
diff --git a/js/ace/snippets/jsoniq.js b/js/ace/snippets/jsoniq.js
new file mode 100644
index 0000000..7ca20f9
--- /dev/null
+++ b/js/ace/snippets/jsoniq.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jsoniq",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n	for $${1:item} in ${2:expr}\nsnippet return\n	return ${1:expr}\nsnippet import\n	import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n	some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n	every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n	if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n	switch(${1:"foo"})\n	case ${2:"foo"}\n	return ${3:true}\n	default return ${4:false}\nsnippet try\n	try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n	for tumbling window $${1:varname} in ${2:expr}\n	start at $${3:start} when ${4:expr}\n	end at $${5:end} when ${6:expr}\n	return ${7:expr}\nsnippet sliding\n	for sliding window $${1:varname} in ${2:expr}\n	start at $${3:start} when ${4:expr}\n	end at $${5:end} when ${6:expr}\n	return ${7:expr}\nsnippet let\n	let $${1:varname} := ${2:expr}\nsnippet group\n	group by $${1:varname} := ${2:expr}\nsnippet order\n	order by ${1:expr} ${2:descending}\nsnippet stable\n	stable order by ${1:expr}\nsnippet count\n	count $${1:varname}\nsnippet ordered\n	ordered { ${1:expr} }\nsnippet unordered\n	unordered { ${1:expr} }\nsnippet treat \n	treat as ${1:expr}\nsnippet castable\n	castable as ${1:atomicType}\nsnippet cast\n	cast as ${1:atomicType}\nsnippet typeswitch\n	typeswitch(${1:expr})\n	case ${2:type}  return ${3:expr}\n	default return ${4:expr}\nsnippet var\n	declare variable $${1:varname} := ${2:expr};\nsnippet fn\n	declare function ${1:ns}:${2:name}(){\n	${3:expr}\n	};\nsnippet module\n	module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="jsoniq"})
\ No newline at end of file
diff --git a/js/ace/snippets/jsp.js b/js/ace/snippets/jsp.js
new file mode 100644
index 0000000..fcbace7
--- /dev/null
+++ b/js/ace/snippets/jsp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jsp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet @page\n	<%@page contentType="text/html" pageEncoding="UTF-8"%>\nsnippet jstl\n	<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>\n	<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>\nsnippet jstl:c\n	<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>\nsnippet jstl:fn\n	<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>\nsnippet cpath\n	${pageContext.request.contextPath}\nsnippet cout\n	<c:out value="${1}" default="${2}" />\nsnippet cset\n	<c:set var="${1}" value="${2}" />\nsnippet cremove\n	<c:remove var="${1}" scope="${2:page}" />\nsnippet ccatch\n	<c:catch var="${1}" />\nsnippet cif\n	<c:if test="${${1}}">\n		${2}\n	</c:if>\nsnippet cchoose\n	<c:choose>\n		${1}\n	</c:choose>\nsnippet cwhen\n	<c:when test="${${1}}">\n		${2}\n	</c:when>\nsnippet cother\n	<c:otherwise>\n		${1}\n	</c:otherwise>\nsnippet cfore\n	<c:forEach items="${${1}}" var="${2}" varStatus="${3}">\n		${4:<c:out value="$2" />}\n	</c:forEach>\nsnippet cfort\n	<c:set var="${1}">${2:item1,item2,item3}</c:set>\n	<c:forTokens var="${3}" items="${$1}" delims="${4:,}">\n		${5:<c:out value="$3" />}\n	</c:forTokens>\nsnippet cparam\n	<c:param name="${1}" value="${2}" />\nsnippet cparam+\n	<c:param name="${1}" value="${2}" />\n	cparam+${3}\nsnippet cimport\n	<c:import url="${1}" />\nsnippet cimport+\n	<c:import url="${1}">\n		<c:param name="${2}" value="${3}" />\n		cparam+${4}\n	</c:import>\nsnippet curl\n	<c:url value="${1}" var="${2}" />\n	<a href="${$2}">${3}</a>\nsnippet curl+\n	<c:url value="${1}" var="${2}">\n		<c:param name="${4}" value="${5}" />\n		cparam+${6}\n	</c:url>\n	<a href="${$2}">${3}</a>\nsnippet credirect\n	<c:redirect url="${1}" />\nsnippet contains\n	${fn:contains(${1:string}, ${2:substr})}\nsnippet contains:i\n	${fn:containsIgnoreCase(${1:string}, ${2:substr})}\nsnippet endswith\n	${fn:endsWith(${1:string}, ${2:suffix})}\nsnippet escape\n	${fn:escapeXml(${1:string})}\nsnippet indexof\n	${fn:indexOf(${1:string}, ${2:substr})}\nsnippet join\n	${fn:join(${1:collection}, ${2:delims})}\nsnippet length\n	${fn:length(${1:collection_or_string})}\nsnippet replace\n	${fn:replace(${1:string}, ${2:substr}, ${3:replace})}\nsnippet split\n	${fn:split(${1:string}, ${2:delims})}\nsnippet startswith\n	${fn:startsWith(${1:string}, ${2:prefix})}\nsnippet substr\n	${fn:substring(${1:string}, ${2:begin}, ${3:end})}\nsnippet substr:a\n	${fn:substringAfter(${1:string}, ${2:substr})}\nsnippet substr:b\n	${fn:substringBefore(${1:string}, ${2:substr})}\nsnippet lc\n	${fn:toLowerCase(${1:string})}\nsnippet uc\n	${fn:toUpperCase(${1:string})}\nsnippet trim\n	${fn:trim(${1:string})}\n',t.scope="jsp"})
\ No newline at end of file
diff --git a/js/ace/snippets/jsx.js b/js/ace/snippets/jsx.js
new file mode 100644
index 0000000..9ae1382
--- /dev/null
+++ b/js/ace/snippets/jsx.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/jsx",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="jsx"})
\ No newline at end of file
diff --git a/js/ace/snippets/julia.js b/js/ace/snippets/julia.js
new file mode 100644
index 0000000..131783f
--- /dev/null
+++ b/js/ace/snippets/julia.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/julia",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="julia"})
\ No newline at end of file
diff --git a/js/ace/snippets/latex.js b/js/ace/snippets/latex.js
new file mode 100644
index 0000000..43f3fdb
--- /dev/null
+++ b/js/ace/snippets/latex.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/latex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="latex"})
\ No newline at end of file
diff --git a/js/ace/snippets/less.js b/js/ace/snippets/less.js
new file mode 100644
index 0000000..4e2cafc
--- /dev/null
+++ b/js/ace/snippets/less.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/less",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="less"})
\ No newline at end of file
diff --git a/js/ace/snippets/liquid.js b/js/ace/snippets/liquid.js
new file mode 100644
index 0000000..a579963
--- /dev/null
+++ b/js/ace/snippets/liquid.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/liquid",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="liquid"})
\ No newline at end of file
diff --git a/js/ace/snippets/lisp.js b/js/ace/snippets/lisp.js
new file mode 100644
index 0000000..7c3fd30
--- /dev/null
+++ b/js/ace/snippets/lisp.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lisp",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lisp"})
\ No newline at end of file
diff --git a/js/ace/snippets/live_script.js b/js/ace/snippets/live_script.js
new file mode 100644
index 0000000..9bf6219
--- /dev/null
+++ b/js/ace/snippets/live_script.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/live_script",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope=""})
\ No newline at end of file
diff --git a/js/ace/snippets/livescript.js b/js/ace/snippets/livescript.js
new file mode 100644
index 0000000..7ca4056
--- /dev/null
+++ b/js/ace/snippets/livescript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/livescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="livescript"})
\ No newline at end of file
diff --git a/js/ace/snippets/logiql.js b/js/ace/snippets/logiql.js
new file mode 100644
index 0000000..c4f0975
--- /dev/null
+++ b/js/ace/snippets/logiql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/logiql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="logiql"})
\ No newline at end of file
diff --git a/js/ace/snippets/lsl.js b/js/ace/snippets/lsl.js
new file mode 100644
index 0000000..b931573
--- /dev/null
+++ b/js/ace/snippets/lsl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lsl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet @\n	@${1:label};\nsnippet CAMERA_ACTIVE\n	CAMERA_ACTIVE, ${1:integer isActive}, $0\nsnippet CAMERA_BEHINDNESS_ANGLE\n	CAMERA_BEHINDNESS_ANGLE, ${1:float degrees}, $0\nsnippet CAMERA_BEHINDNESS_LAG\n	CAMERA_BEHINDNESS_LAG, ${1:float seconds}, $0\nsnippet CAMERA_DISTANCE\n	CAMERA_DISTANCE, ${1:float meters}, $0\nsnippet CAMERA_FOCUS\n	CAMERA_FOCUS, ${1:vector position}, $0\nsnippet CAMERA_FOCUS_LAG\n	CAMERA_FOCUS_LAG, ${1:float seconds}, $0\nsnippet CAMERA_FOCUS_LOCKED\n	CAMERA_FOCUS_LOCKED, ${1:integer isLocked}, $0\nsnippet CAMERA_FOCUS_OFFSET\n	CAMERA_FOCUS_OFFSET, ${1:vector meters}, $0\nsnippet CAMERA_FOCUS_THRESHOLD\n	CAMERA_FOCUS_THRESHOLD, ${1:float meters}, $0\nsnippet CAMERA_PITCH\n	CAMERA_PITCH, ${1:float degrees}, $0\nsnippet CAMERA_POSITION\n	CAMERA_POSITION, ${1:vector position}, $0\nsnippet CAMERA_POSITION_LAG\n	CAMERA_POSITION_LAG, ${1:float seconds}, $0\nsnippet CAMERA_POSITION_LOCKED\n	CAMERA_POSITION_LOCKED, ${1:integer isLocked}, $0\nsnippet CAMERA_POSITION_THRESHOLD\n	CAMERA_POSITION_THRESHOLD, ${1:float meters}, $0\nsnippet CHARACTER_AVOIDANCE_MODE\n	CHARACTER_AVOIDANCE_MODE, ${1:integer flags}, $0\nsnippet CHARACTER_DESIRED_SPEED\n	CHARACTER_DESIRED_SPEED, ${1:float speed}, $0\nsnippet CHARACTER_DESIRED_TURN_SPEED\n	CHARACTER_DESIRED_TURN_SPEED, ${1:float speed}, $0\nsnippet CHARACTER_LENGTH\n	CHARACTER_LENGTH, ${1:float length}, $0\nsnippet CHARACTER_MAX_TURN_RADIUS\n	CHARACTER_MAX_TURN_RADIUS, ${1:float radius}, $0\nsnippet CHARACTER_ORIENTATION\n	CHARACTER_ORIENTATION, ${1:integer orientation}, $0\nsnippet CHARACTER_RADIUS\n	CHARACTER_RADIUS, ${1:float radius}, $0\nsnippet CHARACTER_STAY_WITHIN_PARCEL\n	CHARACTER_STAY_WITHIN_PARCEL, ${1:boolean stay}, $0\nsnippet CHARACTER_TYPE\n	CHARACTER_TYPE, ${1:integer type}, $0\nsnippet HTTP_BODY_MAXLENGTH\n	HTTP_BODY_MAXLENGTH, ${1:integer length}, $0\nsnippet HTTP_CUSTOM_HEADER\n	HTTP_CUSTOM_HEADER, ${1:string name}, ${2:string value}, $0\nsnippet HTTP_METHOD\n	HTTP_METHOD, ${1:string method}, $0\nsnippet HTTP_MIMETYPE\n	HTTP_MIMETYPE, ${1:string mimeType}, $0\nsnippet HTTP_PRAGMA_NO_CACHE\n	HTTP_PRAGMA_NO_CACHE, ${1:integer send_header}, $0\nsnippet HTTP_VERBOSE_THROTTLE\n	HTTP_VERBOSE_THROTTLE, ${1:integer noisy}, $0\nsnippet HTTP_VERIFY_CERT\n	HTTP_VERIFY_CERT, ${1:integer verify}, $0\nsnippet RC_DATA_FLAGS\n	RC_DATA_FLAGS, ${1:integer flags}, $0\nsnippet RC_DETECT_PHANTOM\n	RC_DETECT_PHANTOM, ${1:integer dectedPhantom}, $0\nsnippet RC_MAX_HITS\n	RC_MAX_HITS, ${1:integer maxHits}, $0\nsnippet RC_REJECT_TYPES\n	RC_REJECT_TYPES, ${1:integer filterMask}, $0\nsnippet at_rot_target\n	at_rot_target(${1:integer handle}, ${2:rotation targetrot}, ${3:rotation ourrot})\n	{\n		$0\n	}\nsnippet at_target\n	at_target(${1:integer tnum}, ${2:vector targetpos}, ${3:vector ourpos})\n	{\n		$0\n	}\nsnippet attach\n	attach(${1:key id})\n	{\n		$0\n	}\nsnippet changed\n	changed(${1:integer change})\n	{\n		$0\n	}\nsnippet collision\n	collision(${1:integer index})\n	{\n		$0\n	}\nsnippet collision_end\n	collision_end(${1:integer index})\n	{\n		$0\n	}\nsnippet collision_start\n	collision_start(${1:integer index})\n	{\n		$0\n	}\nsnippet control\n	control(${1:key id}, ${2:integer level}, ${3:integer edge})\n	{\n		$0\n	}\nsnippet dataserver\n	dataserver(${1:key query_id}, ${2:string data})\n	{\n		$0\n	}\nsnippet do\n	do\n	{\n		$0\n	}\n	while (${1:condition});\nsnippet else\n	else\n	{\n		$0\n	}\nsnippet email\n	email(${1:string time}, ${2:string address}, ${3:string subject}, ${4:string message}, ${5:integer num_left})\n	{\n		$0\n	}\nsnippet experience_permissions\n	experience_permissions(${1:key agent_id})\n	{\n		$0\n	}\nsnippet experience_permissions_denied\n	experience_permissions_denied(${1:key agent_id}, ${2:integer reason})\n	{\n		$0\n	}\nsnippet for\n	for (${1:start}; ${3:condition}; ${3:step})\n	{\n		$0\n	}\nsnippet http_request\n	http_request(${1:key request_id}, ${2:string method}, ${3:string body})\n	{\n		$0\n	}\nsnippet http_response\n	http_response(${1:key request_id}, ${2:integer status}, ${3:list metadata}, ${4:string body})\n	{\n		$0\n	}\nsnippet if\n	if (${1:condition})\n	{\n		$0\n	}\nsnippet jump\n	jump ${1:label};\nsnippet land_collision\n	land_collision(${1:vector pos})\n	{\n		$0\n	}\nsnippet land_collision_end\n	land_collision_end(${1:vector pos})\n	{\n		$0\n	}\nsnippet land_collision_start\n	land_collision_start(${1:vector pos})\n	{\n		$0\n	}\nsnippet link_message\n	link_message(${1:integer sender_num}, ${2:integer num}, ${3:string str}, ${4:key id})\n	{\n		$0\n	}\nsnippet listen\n	listen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string message})\n	{\n		$0\n	}\nsnippet llAbs\n	llAbs(${1:integer val})\nsnippet llAcos\n	llAcos(${1:float val})\nsnippet llAddToLandBanList\n	llAddToLandBanList(${1:key agent}, ${2:float hours});\nsnippet llAddToLandPassList\n	llAddToLandPassList(${1:key agent}, ${2:float hours});\nsnippet llAdjustSoundVolume\n	llAdjustSoundVolume(${1:float volume});\nsnippet llAgentInExperience\n	llAgentInExperience(${1:key agent})\nsnippet llAllowInventoryDrop\n	llAllowInventoryDrop(${1:integer add});\nsnippet llAngleBetween\n	llAngleBetween(${1:rotation a}, ${2:rotation b})\nsnippet llApplyImpulse\n	llApplyImpulse(${1:vector force}, ${2:integer local});\nsnippet llApplyRotationalImpulse\n	llApplyRotationalImpulse(${1:vector force}, ${2:integer local});\nsnippet llAsin\n	llAsin(${1:float val})\nsnippet llAtan2\n	llAtan2(${1:float y}, ${2:float x})\nsnippet llAttachToAvatar\n	llAttachToAvatar(${1:integer attach_point});\nsnippet llAttachToAvatarTemp\n	llAttachToAvatarTemp(${1:integer attach_point});\nsnippet llAvatarOnLinkSitTarget\n	llAvatarOnLinkSitTarget(${1:integer link})\nsnippet llAvatarOnSitTarget\n	llAvatarOnSitTarget()\nsnippet llAxes2Rot\n	llAxes2Rot(${1:vector fwd}, ${2:vector left}, ${3:vector up})\nsnippet llAxisAngle2Rot\n	llAxisAngle2Rot(${1:vector axis}, ${2:float angle})\nsnippet llBase64ToInteger\n	llBase64ToInteger(${1:string str})\nsnippet llBase64ToString\n	llBase64ToString(${1:string str})\nsnippet llBreakAllLinks\n	llBreakAllLinks();\nsnippet llBreakLink\n	llBreakLink(${1:integer link});\nsnippet llCastRay\n	llCastRay(${1:vector start}, ${2:vector end}, ${3:list options});\nsnippet llCeil\n	llCeil(${1:float val})\nsnippet llClearCameraParams\n	llClearCameraParams();\nsnippet llClearLinkMedia\n	llClearLinkMedia(${1:integer link}, ${2:integer face});\nsnippet llClearPrimMedia\n	llClearPrimMedia(${1:integer face});\nsnippet llCloseRemoteDataChannel\n	llCloseRemoteDataChannel(${1:key channel});\nsnippet llCollisionFilter\n	llCollisionFilter(${1:string name}, ${2:key id}, ${3:integer accept});\nsnippet llCollisionSound\n	llCollisionSound(${1:string impact_sound}, ${2:float impact_volume});\nsnippet llCos\n	llCos(${1:float theta})\nsnippet llCreateCharacter\n	llCreateCharacter(${1:list options});\nsnippet llCreateKeyValue\n	llCreateKeyValue(${1:string k})\nsnippet llCreateLink\n	llCreateLink(${1:key target}, ${2:integer parent});\nsnippet llCSV2List\n	llCSV2List(${1:string src})\nsnippet llDataSizeKeyValue\n	llDataSizeKeyValue()\nsnippet llDeleteCharacter\n	llDeleteCharacter();\nsnippet llDeleteKeyValue\n	llDeleteKeyValue(${1:string k})\nsnippet llDeleteSubList\n	llDeleteSubList(${1:list src}, ${2:integer start}, ${3:integer end})\nsnippet llDeleteSubString\n	llDeleteSubString(${1:string src}, ${2:integer start}, ${3:integer end})\nsnippet llDetachFromAvatar\n	llDetachFromAvatar();\nsnippet llDetectedGrab\n	llDetectedGrab(${1:integer number})\nsnippet llDetectedGroup\n	llDetectedGroup(${1:integer number})\nsnippet llDetectedKey\n	llDetectedKey(${1:integer number})\nsnippet llDetectedLinkNumber\n	llDetectedLinkNumber(${1:integer number})\nsnippet llDetectedName\n	llDetectedName(${1:integer number})\nsnippet llDetectedOwner\n	llDetectedOwner(${1:integer number})\nsnippet llDetectedPos\n	llDetectedPosl(${1:integer number})\nsnippet llDetectedRot\n	llDetectedRot(${1:integer number})\nsnippet llDetectedTouchBinormal\n	llDetectedTouchBinormal(${1:integer number})\nsnippet llDetectedTouchFace\n	llDetectedTouchFace(${1:integer number})\nsnippet llDetectedTouchNormal\n	llDetectedTouchNormal(${1:integer number})\nsnippet llDetectedTouchPos\n	llDetectedTouchPos(${1:integer number})\nsnippet llDetectedTouchST\n	llDetectedTouchST(${1:integer number})\nsnippet llDetectedTouchUV\n	llDetectedTouchUV(${1:integer number})\nsnippet llDetectedType\n	llDetectedType(${1:integer number})\nsnippet llDetectedVel\n	llDetectedVel(${1:integer number})\nsnippet llDialog\n	llDialog(${1:key agent}, ${2:string message}, ${3:list buttons}, ${4:integer channel});\nsnippet llDie\n	llDie();\nsnippet llDumpList2String\n	llDumpList2String(${1:list src}, ${2:string separator})\nsnippet llEdgeOfWorld\n	llEdgeOfWorld(${1:vector pos}, ${2:vector dir})\nsnippet llEjectFromLand\n	llEjectFromLand(${1:key agent});\nsnippet llEmail\n	llEmail(${1:string address}, ${2:string subject}, ${3:string message});\nsnippet llEscapeURL\n	llEscapeURL(${1:string url})\nsnippet llEuler2Rot\n	llEuler2Rot(${1:vector v})\nsnippet llExecCharacterCmd\n	llExecCharacterCmd(${1:integer command}, ${2:list options});\nsnippet llEvade\n	llEvade(${1:key target}, ${2:list options});\nsnippet llFabs\n	llFabs(${1:float val})\nsnippet llFleeFrom\n	llFleeFrom(${1:vector position}, ${2:float distance}, ${3:list options});\nsnippet llFloor\n	llFloor(${1:float val})\nsnippet llForceMouselook\n	llForceMouselook(${1:integer mouselook});\nsnippet llFrand\n	llFrand(${1:float mag})\nsnippet llGenerateKey\n	llGenerateKey()\nsnippet llGetAccel\n	llGetAccel()\nsnippet llGetAgentInfo\n	llGetAgentInfo(${1:key id})\nsnippet llGetAgentLanguage\n	llGetAgentLanguage(${1:key agent})\nsnippet llGetAgentList\n	llGetAgentList(${1:integer scope}, ${2:list options})\nsnippet llGetAgentSize\n	llGetAgentSize(${1:key agent})\nsnippet llGetAlpha\n	llGetAlpha(${1:integer face})\nsnippet llGetAndResetTime\n	llGetAndResetTime()\nsnippet llGetAnimation\n	llGetAnimation(${1:key id})\nsnippet llGetAnimationList\n	llGetAnimationList(${1:key agent})\nsnippet llGetAnimationOverride\n	llGetAnimationOverride(${1:string anim_state})\nsnippet llGetAttached\n	llGetAttached()\nsnippet llGetBoundingBox\n	llGetBoundingBox(${1:key object})\nsnippet llGetCameraPos\n	llGetCameraPos()\nsnippet llGetCameraRot\n	llGetCameraRot()\nsnippet llGetCenterOfMass\n	llGetCenterOfMass()\nsnippet llGetClosestNavPoint\n	llGetClosestNavPoint(${1:vector point}, ${2:list options})\nsnippet llGetColor\n	llGetColor(${1:integer face})\nsnippet llGetCreator\n	llGetCreator()\nsnippet llGetDate\n	llGetDate()\nsnippet llGetDisplayName\n	llGetDisplayName(${1:key id})\nsnippet llGetEnergy\n	llGetEnergy()\nsnippet llGetEnv\n	llGetEnv(${1:string name})\nsnippet llGetExperienceDetails\n	llGetExperienceDetails(${1:key experience_id})\nsnippet llGetExperienceErrorMessage\n	llGetExperienceErrorMessage(${1:integer error})\nsnippet llGetForce\n	llGetForce()\nsnippet llGetFreeMemory\n	llGetFreeMemory()\nsnippet llGetFreeURLs\n	llGetFreeURLs()\nsnippet llGetGeometricCenter\n	llGetGeometricCenter()\nsnippet llGetGMTclock\n	llGetGMTclock()\nsnippet llGetHTTPHeader\n	llGetHTTPHeader(${1:key request_id}, ${2:string header})\nsnippet llGetInventoryCreator\n	llGetInventoryCreator(${1:string item})\nsnippet llGetInventoryKey\n	llGetInventoryKey(${1:string name})\nsnippet llGetInventoryName\n	llGetInventoryName(${1:integer type}, ${2:integer number})\nsnippet llGetInventoryNumber\n	llGetInventoryNumber(${1:integer type})\nsnippet llGetInventoryPermMask\n	llGetInventoryPermMask(${1:string item}, ${2:integer mask})\nsnippet llGetInventoryType\n	llGetInventoryType(${1:string name})\nsnippet llGetKey\n	llGetKey()\nsnippet llGetLandOwnerAt\n	llGetLandOwnerAt(${1:vector pos})\nsnippet llGetLinkKey\n	llGetLinkKey(${1:integer link})\nsnippet llGetLinkMedia\n	llGetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params})\nsnippet llGetLinkName\n	llGetLinkName(${1:integer link})\nsnippet llGetLinkNumber\n	llGetLinkNumber()\nsnippet llGetLinkNumberOfSides\n	llGetLinkNumberOfSides(${1:integer link})\nsnippet llGetLinkPrimitiveParams\n	llGetLinkPrimitiveParams(${1:integer link}, ${2:list params})\nsnippet llGetListEntryType\n	llGetListEntryType(${1:list src}, ${2:integer index})\nsnippet llGetListLength\n	llGetListLength(${1:list src})\nsnippet llGetLocalPos\n	llGetLocalPos()\nsnippet llGetLocalRot\n	llGetLocalRot()\nsnippet llGetMass\n	llGetMass()\nsnippet llGetMassMKS\n	llGetMassMKS()\nsnippet llGetMaxScaleFactor\n	llGetMaxScaleFactor()\nsnippet llGetMemoryLimit\n	llGetMemoryLimit()\nsnippet llGetMinScaleFactor\n	llGetMinScaleFactor()\nsnippet llGetNextEmail\n	llGetNextEmail(${1:string address}, ${2:string subject});\nsnippet llGetNotecardLine\n	llGetNotecardLine(${1:string name}, ${2:integer line})\nsnippet llGetNumberOfNotecardLines\n	llGetNumberOfNotecardLines(${1:string name})\nsnippet llGetNumberOfPrims\n	llGetNumberOfPrims()\nsnippet llGetNumberOfSides\n	llGetNumberOfSides()\nsnippet llGetObjectDesc\n	llGetObjectDesc()\nsnippet llGetObjectDetails\n	llGetObjectDetails(${1:key id}, ${2:list params})\nsnippet llGetObjectMass\n	llGetObjectMass(${1:key id})\nsnippet llGetObjectName\n	llGetObjectName()\nsnippet llGetObjectPermMask\n	llGetObjectPermMask(${1:integer mask})\nsnippet llGetObjectPrimCount\n	llGetObjectPrimCount(${1:key prim})\nsnippet llGetOmega\n	llGetOmega()\nsnippet llGetOwner\n	llGetOwner()\nsnippet llGetOwnerKey\n	llGetOwnerKey(${1:key id})\nsnippet llGetParcelDetails\n	llGetParcelDetails(${1:vector pos}, ${2:list params})\nsnippet llGetParcelFlags\n	llGetParcelFlags(${1:vector pos})\nsnippet llGetParcelMaxPrims\n	llGetParcelMaxPrims(${1:vector pos}, ${2:integer sim_wide})\nsnippet llGetParcelMusicURL\n	llGetParcelMusicURL()\nsnippet llGetParcelPrimCount\n	llGetParcelPrimCount(${1:vector pos}, ${2:integer category}, ${3:integer sim_wide})\nsnippet llGetParcelPrimOwners\n	llGetParcelPrimOwners(${1:vector pos})\nsnippet llGetPermissions\n	llGetPermissions()\nsnippet llGetPermissionsKey\n	llGetPermissionsKey()\nsnippet llGetPhysicsMaterial\n	llGetPhysicsMaterial()\nsnippet llGetPos\n	llGetPos()\nsnippet llGetPrimitiveParams\n	llGetPrimitiveParams(${1:list params})\nsnippet llGetPrimMediaParams\n	llGetPrimMediaParams(${1:integer face}, ${2:list params})\nsnippet llGetRegionAgentCount\n	llGetRegionAgentCount()\nsnippet llGetRegionCorner\n	llGetRegionCorner()\nsnippet llGetRegionFlags\n	llGetRegionFlags()\nsnippet llGetRegionFPS\n	llGetRegionFPS()\nsnippet llGetRegionName\n	llGetRegionName()\nsnippet llGetRegionTimeDilation\n	llGetRegionTimeDilation()\nsnippet llGetRootPosition\n	llGetRootPosition()\nsnippet llGetRootRotation\n	llGetRootRotation()\nsnippet llGetRot\n	llGetRot()\nsnippet llGetScale\n	llGetScale()\nsnippet llGetScriptName\n	llGetScriptName()\nsnippet llGetScriptState\n	llGetScriptState(${1:string script})\nsnippet llGetSimStats\n	llGetSimStats(${1:integer stat_type})\nsnippet llGetSimulatorHostname\n	llGetSimulatorHostname()\nsnippet llGetSPMaxMemory\n	llGetSPMaxMemory()\nsnippet llGetStartParameter\n	llGetStartParameter()\nsnippet llGetStaticPath\n	llGetStaticPath(${1:vector start}, ${2:vector end}, ${3:float radius}, ${4:list params})\nsnippet llGetStatus\n	llGetStatus(${1:integer status})\nsnippet llGetSubString\n	llGetSubString(${1:string src}, ${2:integer start}, ${3:integer end})\nsnippet llGetSunDirection\n	llGetSunDirection()\nsnippet llGetTexture\n	llGetTexture(${1:integer face})\nsnippet llGetTextureOffset\n	llGetTextureOffset(${1:integer face})\nsnippet llGetTextureRot\n	llGetTextureRot(${1:integer face})\nsnippet llGetTextureScale\n	llGetTextureScale(${1:integer face})\nsnippet llGetTime\n	llGetTime()\nsnippet llGetTimeOfDay\n	llGetTimeOfDay()\nsnippet llGetTimestamp\n	llGetTimestamp()\nsnippet llGetTorque\n	llGetTorque()\nsnippet llGetUnixTime\n	llGetUnixTime()\nsnippet llGetUsedMemory\n	llGetUsedMemory()\nsnippet llGetUsername\n	llGetUsername(${1:key id})\nsnippet llGetVel\n	llGetVel()\nsnippet llGetWallclock\n	llGetWallclock()\nsnippet llGiveInventory\n	llGiveInventory(${1:key destination}, ${2:string inventory});\nsnippet llGiveInventoryList\n	llGiveInventoryList(${1:key target}, ${2:string folder}, ${3:list inventory});\nsnippet llGiveMoney\n	llGiveMoney(${1:key destination}, ${2:integer amount})\nsnippet llGround\n	llGround(${1:vector offset})\nsnippet llGroundContour\n	llGroundContour(${1:vector offset})\nsnippet llGroundNormal\n	llGroundNormal(${1:vector offset})\nsnippet llGroundRepel\n	llGroundRepel(${1:float height}, ${2:integer water}, ${3:float tau});\nsnippet llGroundSlope\n	llGroundSlope(${1:vector offset})\nsnippet llHTTPRequest\n	llHTTPRequest(${1:string url}, ${2:list parameters}, ${3:string body})\nsnippet llHTTPResponse\n	llHTTPResponse(${1:key request_id}, ${2:integer status}, ${3:string body});\nsnippet llInsertString\n	llInsertString(${1:string dst}, ${2:integer pos}, ${3:string src})\nsnippet llInstantMessage\n	llInstantMessage(${1:key user}, ${2:string message});\nsnippet llIntegerToBase64\n	llIntegerToBase64(${1:integer number})\nsnippet llJson2List\n	llJson2List(${1:string json})\nsnippet llJsonGetValue\n	llJsonGetValue(${1:string json}, ${2:list specifiers})\nsnippet llJsonSetValue\n	llJsonSetValue(${1:string json}, ${2:list specifiers}, ${3:string newValue})\nsnippet llJsonValueType\n	llJsonValueType(${1:string json}, ${2:list specifiers})\nsnippet llKey2Name\n	llKey2Name(${1:key id})\nsnippet llKeyCountKeyValue\n	llKeyCountKeyValue()\nsnippet llKeysKeyValue\n	llKeysKeyValue(${1:integer first}, ${2:integer count})\nsnippet llLinkParticleSystem\n	llLinkParticleSystem(${1:integer link}, ${2:list rules});\nsnippet llLinkSitTarget\n	llLinkSitTarget(${1:integer link}, ${2:vector offset}, ${3:rotation rot});\nsnippet llList2CSV\n	llList2CSV(${1:list src})\nsnippet llList2Float\n	llList2Float(${1:list src}, ${2:integer index})\nsnippet llList2Integer\n	llList2Integer(${1:list src}, ${2:integer index})\nsnippet llList2Json\n	llList2Json(${1:string type}, ${2:list values})\nsnippet llList2Key\n	llList2Key(${1:list src}, ${2:integer index})\nsnippet llList2List\n	llList2List(${1:list src}, ${2:integer start}, ${3:integer end})\nsnippet llList2ListStrided\n	llList2ListStrided(${1:list src}, ${2:integer start}, ${3:integer end}, ${4:integer stride})\nsnippet llList2Rot\n	llList2Rot(${1:list src}, ${2:integer index})\nsnippet llList2String\n	llList2String(${1:list src}, ${2:integer index})\nsnippet llList2Vector\n	llList2Vector(${1:list src}, ${2:integer index})\nsnippet llListen\n	llListen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string msg})\nsnippet llListenControl\n	llListenControl(${1:integer handle}, ${2:integer active});\nsnippet llListenRemove\n	llListenRemove(${1:integer handle});\nsnippet llListFindList\n	llListFindList(${1:list src}, ${2:list test})\nsnippet llListInsertList\n	llListInsertList(${1:list dest}, ${2:list src}, ${3:integer start})\nsnippet llListRandomize\n	llListRandomize(${1:list src}, ${2:integer stride})\nsnippet llListReplaceList\n	llListReplaceList(${1:list dest}, ${2:list src}, ${3:integer start}, ${4:integer end})\nsnippet llListSort\n	llListSort(${1:list src}, ${2:integer stride}, ${3:integer ascending})\nsnippet llListStatistics\n	llListStatistics(${1:integer operation}, ${2:list src})\nsnippet llLoadURL\n	llLoadURL(${1:key agent}, ${2:string message}, ${3:string url});\nsnippet llLog\n	llLog(${1:float val})\nsnippet llLog10\n	llLog10(${1:float val})\nsnippet llLookAt\n	llLookAt(${1:vector target}, ${2:float strength}, ${3:float damping});\nsnippet llLoopSound\n	llLoopSound(${1:string sound}, ${2:float volume});\nsnippet llLoopSoundMaster\n	llLoopSoundMaster(${1:string sound}, ${2:float volume});\nsnippet llLoopSoundSlave\n	llLoopSoundSlave(${1:string sound}, ${2:float volume});\nsnippet llManageEstateAccess\n	llManageEstateAccess(${1:integer action}, ${2:key agent})\nsnippet llMapDestination\n	llMapDestination(${1:string simname}, ${2:vector pos}, ${3:vector look_at});\nsnippet llMD5String\n	llMD5String(${1:string src}, ${2:integer nonce})\nsnippet llMessageLinked\n	llMessageLinked(${1:integer link}, ${2:integer num}, ${3:string str}, ${4:key id});\nsnippet llMinEventDelay\n	llMinEventDelay(${1:float delay});\nsnippet llModifyLand\n	llModifyLand(${1:integer action}, ${2:integer brush});\nsnippet llModPow\n	llModPow(${1:integer a}, ${2:integer b}, ${3:integer c})\nsnippet llMoveToTarget\n	llMoveToTarget(${1:vector target}, ${2:float tau});\nsnippet llNavigateTo\n	llNavigateTo(${1:vector pos}, ${2:list options});\nsnippet llOffsetTexture\n	llOffsetTexture(${1:float u}, ${2:float v}, ${3:integer face});\nsnippet llOpenRemoteDataChannel\n	llOpenRemoteDataChannel();\nsnippet llOverMyLand\n	llOverMyLand(${1:key id})\nsnippet llOwnerSay\n	llOwnerSay(${1:string msg});\nsnippet llParcelMediaCommandList\n	llParcelMediaCommandList(${1:list commandList});\nsnippet llParcelMediaQuery\n	llParcelMediaQuery(${1:list query})\nsnippet llParseString2List\n	llParseString2List(${1:string src}, ${2:list separators}, ${3:list spacers})\nsnippet llParseStringKeepNulls\n	llParseStringKeepNulls(${1:string src}, ${2:list separators}, ${3:list spacers})\nsnippet llParticleSystem\n	llParticleSystem(${1:list rules});\nsnippet llPassCollisions\n	llPassCollisions(${1:integer pass});\nsnippet llPassTouches\n	llPassTouches(${1:integer pass});\nsnippet llPatrolPoints\n	llPatrolPoints(${1:list patrolPoints}, ${2:list options});\nsnippet llPlaySound\n	llPlaySound(${1:string sound}, ${2:float volume});\nsnippet llPlaySoundSlave\n	llPlaySoundSlave(${1:string sound}, ${2:float volume});\nsnippet llPow\n	llPow(${1:float base}, ${2:float exponent})\nsnippet llPreloadSound\n	llPreloadSound(${1:string sound});\nsnippet llPursue\n	llPursue(${1:key target}, ${2:list options});\nsnippet llPushObject\n	llPushObject(${1:key target}, ${2:vector impulse}, ${3:vector ang_impulse}, ${4:integer local});\nsnippet llReadKeyValue\n	llReadKeyValue(${1:string k})\nsnippet llRegionSay\n	llRegionSay(${1:integer channel}, ${2:string msg});\nsnippet llRegionSayTo\n	llRegionSayTo(${1:key target}, ${2:integer channel}, ${3:string msg});\nsnippet llReleaseControls\n	llReleaseControls();\nsnippet llReleaseURL\n	llReleaseURL(${1:string url});\nsnippet llRemoteDataReply\n	llRemoteDataReply(${1:key channel}, ${2:key message_id}, ${3:string sdata}, ${4:integer idata});\nsnippet llRemoteLoadScriptPin\n	llRemoteLoadScriptPin(${1:key target}, ${2:string name}, ${3:integer pin}, ${4:integer running}, ${5:integer start_param});\nsnippet llRemoveFromLandBanList\n	llRemoveFromLandBanList(${1:key agent});\nsnippet llRemoveFromLandPassList\n	llRemoveFromLandPassList(${1:key agent});\nsnippet llRemoveInventory\n	llRemoveInventory(${1:string item});\nsnippet llRemoveVehicleFlags\n	llRemoveVehicleFlags(${1:integer flags});\nsnippet llRequestAgentData\n	llRequestAgentData(${1:key id}, ${2:integer data})\nsnippet llRequestDisplayName\n	llRequestDisplayName(${1:key id})\nsnippet llRequestExperiencePermissions\n	llRequestExperiencePermissions(${1:key agent}, ${2:string name})\nsnippet llRequestInventoryData\n	llRequestInventoryData(${1:string name})\nsnippet llRequestPermissions\n	llRequestPermissions(${1:key agent}, ${2:integer permissions})\nsnippet llRequestSecureURL\n	llRequestSecureURL()\nsnippet llRequestSimulatorData\n	llRequestSimulatorData(${1:string region}, ${2:integer data})\nsnippet llRequestURL\n	llRequestURL()\nsnippet llRequestUsername\n	llRequestUsername(${1:key id})\nsnippet llResetAnimationOverride\n	llResetAnimationOverride(${1:string anim_state});\nsnippet llResetLandBanList\n	llResetLandBanList();\nsnippet llResetLandPassList\n	llResetLandPassList();\nsnippet llResetOtherScript\n	llResetOtherScript(${1:string name});\nsnippet llResetScript\n	llResetScript();\nsnippet llResetTime\n	llResetTime();\nsnippet llReturnObjectsByID\n	llReturnObjectsByID(${1:list objects})\nsnippet llReturnObjectsByOwner\n	llReturnObjectsByOwner(${1:key owner}, ${2:integer scope})\nsnippet llRezAtRoot\n	llRezAtRoot(${1:string inventory}, ${2:vector position}, ${3:vector velocity}, ${4:rotation rot}, ${5:integer param});\nsnippet llRezObject\n	llRezObject(${1:string inventory}, ${2:vector pos}, ${3:vector vel}, ${4:rotation rot}, ${5:integer param});\nsnippet llRot2Angle\n	llRot2Angle(${1:rotation rot})\nsnippet llRot2Axis\n	llRot2Axis(${1:rotation rot})\nsnippet llRot2Euler\n	llRot2Euler(${1:rotation quat})\nsnippet llRot2Fwd\n	llRot2Fwd(${1:rotation q})\nsnippet llRot2Left\n	llRot2Left(${1:rotation q})\nsnippet llRot2Up\n	llRot2Up(${1:rotation q})\nsnippet llRotateTexture\n	llRotateTexture(${1:float angle}, ${2:integer face});\nsnippet llRotBetween\n	llRotBetween(${1:vector start}, ${2:vector end})\nsnippet llRotLookAt\n	llRotLookAt(${1:rotation target_direction}, ${2:float strength}, ${3:float damping});\nsnippet llRotTarget\n	llRotTarget(${1:rotation rot}, ${2:float error})\nsnippet llRotTargetRemove\n	llRotTargetRemove(${1:integer handle});\nsnippet llRound\n	llRound(${1:float val})\nsnippet llSameGroup\n	llSameGroup(${1:key group})\nsnippet llSay\n	llSay(${1:integer channel}, ${2:string msg});\nsnippet llScaleByFactor\n	llScaleByFactor(${1:float scaling_factor})\nsnippet llScaleTexture\n	llScaleTexture(${1:float u}, ${2:float v}, ${3:integer face});\nsnippet llScriptDanger\n	llScriptDanger(${1:vector pos})\nsnippet llScriptProfiler\n	llScriptProfiler(${1:integer flags});\nsnippet llSendRemoteData\n	llSendRemoteData(${1:key channel}, ${2:string dest}, ${3:integer idata}, ${4:string sdata})\nsnippet llSensor\n	llSensor(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc});\nsnippet llSensorRepeat\n	llSensorRepeat(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}, ${6:float rate});\nsnippet llSetAlpha\n	llSetAlpha(${1:float alpha}, ${2:integer face});\nsnippet llSetAngularVelocity\n	llSetAngularVelocity(${1:vector force}, ${2:integer local});\nsnippet llSetAnimationOverride\n	llSetAnimationOverride(${1:string anim_state}, ${2:string anim})\nsnippet llSetBuoyancy\n	llSetBuoyancy(${1:float buoyancy});\nsnippet llSetCameraAtOffset\n	llSetCameraAtOffset(${1:vector offset});\nsnippet llSetCameraEyeOffset\n	llSetCameraEyeOffset(${1:vector offset});\nsnippet llSetCameraParams\n	llSetCameraParams(${1:list rules});\nsnippet llSetClickAction\n	llSetClickAction(${1:integer action});\nsnippet llSetColor\n	llSetColor(${1:vector color}, ${2:integer face});\nsnippet llSetContentType\n	llSetContentType(${1:key request_id}, ${2:integer content_type});\nsnippet llSetDamage\n	llSetDamage(${1:float damage});\nsnippet llSetForce\n	llSetForce(${1:vector force}, ${2:integer local});\nsnippet llSetForceAndTorque\n	llSetForceAndTorque(${1:vector force}, ${2:vector torque}, ${3:integer local});\nsnippet llSetHoverHeight\n	llSetHoverHeight(${1:float height}, ${2:integer water}, ${3:float tau});\nsnippet llSetKeyframedMotion\n	llSetKeyframedMotion(${1:list keyframes}, ${2:list options});\nsnippet llSetLinkAlpha\n	llSetLinkAlpha(${1:integer link}, ${2:float alpha}, ${3:integer face});\nsnippet llSetLinkCamera\n	llSetLinkCamera(${1:integer link}, ${2:vector eye}, ${3:vector at});\nsnippet llSetLinkColor\n	llSetLinkColor(${1:integer link}, ${2:vector color}, ${3:integer face});\nsnippet llSetLinkMedia\n	llSetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params});\nsnippet llSetLinkPrimitiveParams\n	llSetLinkPrimitiveParams(${1:integer link}, ${2:list rules});\nsnippet llSetLinkPrimitiveParamsFast\n	llSetLinkPrimitiveParamsFast(${1:integer link}, ${2:list rules});\nsnippet llSetLinkTexture\n	llSetLinkTexture(${1:integer link}, ${2:string texture}, ${3:integer face});\nsnippet llSetLinkTextureAnim\n	llSetLinkTextureAnim(${1:integer link}, ${2:integer mode}, ${3:integer face}, ${4:integer sizex}, ${5:integer sizey}, ${6:float start}, ${7:float length}, ${8:float rate});\nsnippet llSetLocalRot\n	llSetLocalRot(${1:rotation rot});\nsnippet llSetMemoryLimit\n	llSetMemoryLimit(${1:integer limit})\nsnippet llSetObjectDesc\n	llSetObjectDesc(${1:string description});\nsnippet llSetObjectName\n	llSetObjectName(${1:string name});\nsnippet llSetParcelMusicURL\n	llSetParcelMusicURL(${1:string url});\nsnippet llSetPayPrice\n	llSetPayPrice(${1:integer price}, [${2:integer price_button_a}, ${3:integer price_button_b}, ${4:integer price_button_c}, ${5:integer price_button_d}]);\nsnippet llSetPhysicsMaterial\n	llSetPhysicsMaterial(${1:integer mask}, ${2:float gravity_multiplier}, ${3:float restitution}, ${4:float friction}, ${5:float density});\nsnippet llSetPos\n	llSetPos(${1:vector pos});\nsnippet llSetPrimitiveParams\n	llSetPrimitiveParams(${1:list rules});\nsnippet llSetPrimMediaParams\n	llSetPrimMediaParams(${1:integer face}, ${2:list params});\nsnippet llSetRegionPos\n	llSetRegionPos(${1:vector position})\nsnippet llSetRemoteScriptAccessPin\n	llSetRemoteScriptAccessPin(${1:integer pin});\nsnippet llSetRot\n	llSetRot(${1:rotation rot});\nsnippet llSetScale\n	llSetScale(${1:vector size});\nsnippet llSetScriptState\n	llSetScriptState(${1:string name}, ${2:integer run});\nsnippet llSetSitText\n	llSetSitText(${1:string text});\nsnippet llSetSoundQueueing\n	llSetSoundQueueing(${1:integer queue});\nsnippet llSetSoundRadius\n	llSetSoundRadius(${1:float radius});\nsnippet llSetStatus\n	llSetStatus(${1:integer status}, ${2:integer value});\nsnippet llSetText\n	llSetText(${1:string text}, ${2:vector color}, ${3:float alpha});\nsnippet llSetTexture\n	llSetTexture(${1:string texture}, ${2:integer face});\nsnippet llSetTextureAnim\n	llSetTextureAnim(${1:integer mode}, ${2:integer face}, ${3:integer sizex}, ${4:integer sizey}, ${5:float start}, ${6:float length}, ${7:float rate});\nsnippet llSetTimerEvent\n	llSetTimerEvent(${1:float sec});\nsnippet llSetTorque\n	llSetTorque(${1:vector torque}, ${2:integer local});\nsnippet llSetTouchText\n	llSetTouchText(${1:string text});\nsnippet llSetVehicleFlags\n	llSetVehicleFlags(${1:integer flags});\nsnippet llSetVehicleFloatParam\n	llSetVehicleFloatParam(${1:integer param}, ${2:float value});\nsnippet llSetVehicleRotationParam\n	llSetVehicleRotationParam(${1:integer param}, ${2:rotation rot});\nsnippet llSetVehicleType\n	llSetVehicleType(${1:integer type});\nsnippet llSetVehicleVectorParam\n	llSetVehicleVectorParam(${1:integer param}, ${2:vector vec});\nsnippet llSetVelocity\n	llSetVelocity(${1:vector force}, ${2:integer local});\nsnippet llSHA1String\n	llSHA1String(${1:string src})\nsnippet llShout\n	llShout(${1:integer channel}, ${2:string msg});\nsnippet llSin\n	llSin(${1:float theta})\nsnippet llSitTarget\n	llSitTarget(${1:vector offset}, ${2:rotation rot});\nsnippet llSleep\n	llSleep(${1:float sec});\nsnippet llSqrt\n	llSqrt(${1:float val})\nsnippet llStartAnimation\n	llStartAnimation(${1:string anim});\nsnippet llStopAnimation\n	llStopAnimation(${1:string anim});\nsnippet llStopHover\n	llStopHover();\nsnippet llStopLookAt\n	llStopLookAt();\nsnippet llStopMoveToTarget\n	llStopMoveToTarget();\nsnippet llStopSound\n	llStopSound();\nsnippet llStringLength\n	llStringLength(${1:string str})\nsnippet llStringToBase64\n	llStringToBase64(${1:string str})\nsnippet llStringTrim\n	llStringTrim(${1:string src}, ${2:integer type})\nsnippet llSubStringIndex\n	llSubStringIndex(${1:string source}, ${2:string pattern})\nsnippet llTakeControls\n	llTakeControls(${1:integer controls}, ${2:integer accept}, ${3:integer pass_on});\nsnippet llTan\n	llTan(${1:float theta})\nsnippet llTarget\n	llTarget(${1:vector position}, ${2:float range})\nsnippet llTargetOmega\n	llTargetOmega(${1:vector axis}, ${2:float spinrate}, ${3:float gain});\nsnippet llTargetRemove\n	llTargetRemove(${1:integer handle});\nsnippet llTeleportAgent\n	llTeleportAgent(${1:key agent}, ${2:string landmark}, ${3:vector position}, ${4:vector look_at});\nsnippet llTeleportAgentGlobalCoords\n	llTeleportAgentGlobalCoords(${1:key agent}, ${2:vector global_coordinates}, ${3:vector region_coordinates}, ${4:vector look_at});\nsnippet llTeleportAgentHome\n	llTeleportAgentHome(${1:key agent});\nsnippet llTextBox\n	llTextBox(${1:key agent}, ${2:string message}, ${3:integer channel});\nsnippet llToLower\n	llToLower(${1:string src})\nsnippet llToUpper\n	llToUpper(${1:string src})\nsnippet llTransferLindenDollars\n	llTransferLindenDollars(${1:key destination}, ${2:integer amount})\nsnippet llTriggerSound\n	llTriggerSound(${1:string sound}, ${2:float volume});\nsnippet llTriggerSoundLimited\n	llTriggerSoundLimited(${1:string sound}, ${2:float volume}, ${3:vector top_north_east}, ${4:vector bottom_south_west});\nsnippet llUnescapeURL\n	llUnescapeURL(${1:string url})\nsnippet llUnSit\n	llUnSit(${1:key id});\nsnippet llUpdateCharacter\n	llUpdateCharacter(${1:list options})\nsnippet llUpdateKeyValue\n	llUpdateKeyValue(${1:string k}, ${2:string v}, ${3:integer checked}, ${4:string ov})\nsnippet llVecDist\n	llVecDist(${1:vector vec_a}, ${2:vector vec_b})\nsnippet llVecMag\n	llVecMag(${1:vector vec})\nsnippet llVecNorm\n	llVecNorm(${1:vector vec})\nsnippet llVolumeDetect\n	llVolumeDetect(${1:integer detect});\nsnippet llWanderWithin\n	llWanderWithin(${1:vector origin}, ${2:vector dist}, ${3:list options});\nsnippet llWater\n	llWater(${1:vector offset});\nsnippet llWhisper\n	llWhisper(${1:integer channel}, ${2:string msg});\nsnippet llWind\n	llWind(${1:vector offset});\nsnippet llXorBase64\n	llXorBase64(${1:string str1}, ${2:string str2})\nsnippet money\n	money(${1:key id}, ${2:integer amount})\n	{\n		$0\n	}\nsnippet object_rez\n	object_rez(${1:key id})\n	{\n		$0\n	}\nsnippet on_rez\n	on_rez(${1:integer start_param})\n	{\n		$0\n	}\nsnippet path_update\n	path_update(${1:integer type}, ${2:list reserved})\n	{\n		$0\n	}\nsnippet remote_data\n	remote_data(${1:integer event_type}, ${2:key channel}, ${3:key message_id}, ${4:string sender}, ${5:integer idata}, ${6:string sdata})\n	{\n		$0\n	}\nsnippet run_time_permissions\n	run_time_permissions(${1:integer perm})\n	{\n		$0\n	}\nsnippet sensor\n	sensor(${1:integer index})\n	{\n		$0\n	}\nsnippet state\n	state ${1:name}\nsnippet touch\n	touch(${1:integer index})\n	{\n		$0\n	}\nsnippet touch_end\n	touch_end(${1:integer index})\n	{\n		$0\n	}\nsnippet touch_start\n	touch_start(${1:integer index})\n	{\n		$0\n	}\nsnippet transaction_result\n	transaction_result(${1:key id}, ${2:integer success}, ${3:string data})\n	{\n		$0\n	}\nsnippet while\n	while (${1:condition})\n	{\n		$0\n	}\n",t.scope="lsl"})
\ No newline at end of file
diff --git a/js/ace/snippets/lua.js b/js/ace/snippets/lua.js
new file mode 100644
index 0000000..091d96a
--- /dev/null
+++ b/js/ace/snippets/lua.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lua",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet #!\n	#!/usr/bin/env lua\n	$1\nsnippet local\n	local ${1:x} = ${2:1}\nsnippet fun\n	function ${1:fname}(${2:...})\n		${3:-- body}\n	end\nsnippet for\n	for ${1:i}=${2:1},${3:10} do\n		${4:print(i)}\n	end\nsnippet forp\n	for ${1:i},${2:v} in pairs(${3:table_name}) do\n	   ${4:-- body}\n	end\nsnippet fori\n	for ${1:i},${2:v} in ipairs(${3:table_name}) do\n	   ${4:-- body}\n	end\n",t.scope="lua"})
\ No newline at end of file
diff --git a/js/ace/snippets/luapage.js b/js/ace/snippets/luapage.js
new file mode 100644
index 0000000..b78dcf9
--- /dev/null
+++ b/js/ace/snippets/luapage.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/luapage",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="luapage"})
\ No newline at end of file
diff --git a/js/ace/snippets/lucene.js b/js/ace/snippets/lucene.js
new file mode 100644
index 0000000..232999a
--- /dev/null
+++ b/js/ace/snippets/lucene.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/lucene",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="lucene"})
\ No newline at end of file
diff --git a/js/ace/snippets/makefile.js b/js/ace/snippets/makefile.js
new file mode 100644
index 0000000..c987085
--- /dev/null
+++ b/js/ace/snippets/makefile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/makefile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet ifeq\n	ifeq (${1:cond0},${2:cond1})\n		${3:code}\n	endif\n",t.scope="makefile"})
\ No newline at end of file
diff --git a/js/ace/snippets/markdown.js b/js/ace/snippets/markdown.js
new file mode 100644
index 0000000..0a4a8f8
--- /dev/null
+++ b/js/ace/snippets/markdown.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/markdown",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n	[${1:text}](http://${2:address} "${3:title}")\nsnippet [*\n	[${1:link}](${2:`@*`} "${3:title}")${4}\n\nsnippet [:\n	[${1:id}]: http://${2:url} "${3:title}"\nsnippet [:*\n	[${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ![\n	![${1:alttext}](${2:/images/image.jpg} "${3:title}")\nsnippet ![*\n	![${1:alt}](${2:`@*`} "${3:title}")${4}\n\nsnippet ![:\n	![${1:id}]: ${2:url} "${3:title}"\nsnippet ![:*\n	![${1:id}]: ${2:`@*`} "${3:title}"\n\nsnippet ===\nregex /^/=+/=*//\n	${PREV_LINE/./=/g}\n	\n	${0}\nsnippet ---\nregex /^/-+/-*//\n	${PREV_LINE/./-/g}\n	\n	${0}\nsnippet blockquote\n	{% blockquote %}\n	${1:quote}\n	{% endblockquote %}\n\nsnippet blockquote-author\n	{% blockquote ${1:author}, ${2:title} %}\n	${3:quote}\n	{% endblockquote %}\n\nsnippet blockquote-link\n	{% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n	${4:quote}\n	{% endblockquote %}\n\nsnippet bt-codeblock-short\n	```\n	${1:code_snippet}\n	```\n\nsnippet bt-codeblock-full\n	``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n	${5:code_snippet}\n	```\n\nsnippet codeblock-short\n	{% codeblock %}\n	${1:code_snippet}\n	{% endcodeblock %}\n\nsnippet codeblock-full\n	{% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n	${5:code_snippet}\n	{% endcodeblock %}\n\nsnippet gist-full\n	{% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n	{% gist ${1:gist_id} %}\n\nsnippet img\n	{% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n	{% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n	{% pullquote %}\n	${1:text} {" ${2:quote} "} ${3:text}\n	{% endpullquote %}\n',t.scope="markdown"})
\ No newline at end of file
diff --git a/js/ace/snippets/mask.js b/js/ace/snippets/mask.js
new file mode 100644
index 0000000..d615148
--- /dev/null
+++ b/js/ace/snippets/mask.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mask",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mask"})
\ No newline at end of file
diff --git a/js/ace/snippets/matlab.js b/js/ace/snippets/matlab.js
new file mode 100644
index 0000000..e2ee0a7
--- /dev/null
+++ b/js/ace/snippets/matlab.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/matlab",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="matlab"})
\ No newline at end of file
diff --git a/js/ace/snippets/mel.js b/js/ace/snippets/mel.js
new file mode 100644
index 0000000..1e1c474
--- /dev/null
+++ b/js/ace/snippets/mel.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mel",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mel"})
\ No newline at end of file
diff --git a/js/ace/snippets/mushcode.js b/js/ace/snippets/mushcode.js
new file mode 100644
index 0000000..25b7e76
--- /dev/null
+++ b/js/ace/snippets/mushcode.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mushcode",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mushcode"})
\ No newline at end of file
diff --git a/js/ace/snippets/mysql.js b/js/ace/snippets/mysql.js
new file mode 100644
index 0000000..71b06d9
--- /dev/null
+++ b/js/ace/snippets/mysql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/mysql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="mysql"})
\ No newline at end of file
diff --git a/js/ace/snippets/nix.js b/js/ace/snippets/nix.js
new file mode 100644
index 0000000..c44b967
--- /dev/null
+++ b/js/ace/snippets/nix.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/nix",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="nix"})
\ No newline at end of file
diff --git a/js/ace/snippets/objectivec.js b/js/ace/snippets/objectivec.js
new file mode 100644
index 0000000..aa49339
--- /dev/null
+++ b/js/ace/snippets/objectivec.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/objectivec",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="objectivec"})
\ No newline at end of file
diff --git a/js/ace/snippets/ocaml.js b/js/ace/snippets/ocaml.js
new file mode 100644
index 0000000..c9a46aa
--- /dev/null
+++ b/js/ace/snippets/ocaml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ocaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="ocaml"})
\ No newline at end of file
diff --git a/js/ace/snippets/pascal.js b/js/ace/snippets/pascal.js
new file mode 100644
index 0000000..176f7d9
--- /dev/null
+++ b/js/ace/snippets/pascal.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/pascal",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pascal"})
\ No newline at end of file
diff --git a/js/ace/snippets/perl.js b/js/ace/snippets/perl.js
new file mode 100644
index 0000000..0668b47
--- /dev/null
+++ b/js/ace/snippets/perl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/perl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# #!/usr/bin/perl\nsnippet #!\n	#!/usr/bin/env perl\n\n# Hash Pointer\nsnippet .\n	 =>\n# Function\nsnippet sub\n	sub ${1:function_name} {\n		${2:#body ...}\n	}\n# Conditional\nsnippet if\n	if (${1}) {\n		${2:# body...}\n	}\n# Conditional if..else\nsnippet ife\n	if (${1}) {\n		${2:# body...}\n	}\n	else {\n		${3:# else...}\n	}\n# Conditional if..elsif..else\nsnippet ifee\n	if (${1}) {\n		${2:# body...}\n	}\n	elsif (${3}) {\n		${4:# elsif...}\n	}\n	else {\n		${5:# else...}\n	}\n# Conditional One-line\nsnippet xif\n	${1:expression} if ${2:condition};${3}\n# Unless conditional\nsnippet unless\n	unless (${1}) {\n		${2:# body...}\n	}\n# Unless conditional One-line\nsnippet xunless\n	${1:expression} unless ${2:condition};${3}\n# Try/Except\nsnippet eval\n	local $@;\n	eval {\n		${1:# do something risky...}\n	};\n	if (my $e = $@) {\n		${2:# handle failure...}\n	}\n# While Loop\nsnippet wh\n	while (${1}) {\n		${2:# body...}\n	}\n# While Loop One-line\nsnippet xwh\n	${1:expression} while ${2:condition};${3}\n# C-style For Loop\nsnippet cfor\n	for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n		${4:# body...}\n	}\n# For loop one-line\nsnippet xfor\n	${1:expression} for @${2:array};${3}\n# Foreach Loop\nsnippet for\n	foreach my $${1:x} (@${2:array}) {\n		${3:# body...}\n	}\n# Foreach Loop One-line\nsnippet fore\n	${1:expression} foreach @${2:array};${3}\n# Package\nsnippet package\n	package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`};\n\n	${2}\n\n	1;\n\n	__END__\n# Package syntax perl >= 5.14\nsnippet packagev514\n	package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`} ${2:0.99};\n\n	${3}\n\n	1;\n\n	__END__\n#moose\nsnippet moose\n	use Moose;\n	use namespace::autoclean;\n	${1:#}BEGIN {extends '${2:ParentClass}'};\n\n	${3}\n# parent\nsnippet parent\n	use parent qw(${1:Parent Class});\n# Read File\nsnippet slurp\n	my $${1:var} = do { local $/; open my $file, '<', \"${2:file}\"; <$file> };\n	${3}\n# strict warnings\nsnippet strwar\n	use strict;\n	use warnings;\n# older versioning with perlcritic bypass\nsnippet vers\n	## no critic\n	our $VERSION = '${1:version}';\n	eval $VERSION;\n	## use critic\n# new 'switch' like feature\nsnippet switch\n	use feature 'switch';\n\n# Anonymous subroutine\nsnippet asub\n	sub {\n	 	${1:# body }\n	}\n\n\n\n# Begin block\nsnippet begin\n	BEGIN {\n		${1:# begin body}\n	}\n\n# call package function with some parameter\nsnippet pkgmv\n	__PACKAGE__->${1:package_method}(${2:var})\n\n# call package function without a parameter\nsnippet pkgm\n	__PACKAGE__->${1:package_method}()\n\n# call package \"get_\" function without a parameter\nsnippet pkget\n	__PACKAGE__->get_${1:package_method}()\n\n# call package function with a parameter\nsnippet pkgetv\n	__PACKAGE__->get_${1:package_method}(${2:var})\n\n# complex regex\nsnippet qrx\n	qr/\n	     ${1:regex}\n	/xms\n\n#simpler regex\nsnippet qr/\n	qr/${1:regex}/x\n\n#given\nsnippet given\n	given ($${1:var}) {\n		${2:# cases}\n		${3:# default}\n	}\n\n# switch-like case\nsnippet when\n	when (${1:case}) {\n		${2:# body}\n	}\n\n# hash slice\nsnippet hslice\n	@{ ${1:hash}  }{ ${2:array} }\n\n\n# map\nsnippet map\n	map {  ${2: body }    }  ${1: @array } ;\n\n\n\n# Pod stub\nsnippet ppod\n	=head1 NAME\n\n	${1:ClassName} - ${2:ShortDesc}\n\n	=head1 SYNOPSIS\n\n	  use $1;\n\n	  ${3:# synopsis...}\n\n	=head1 DESCRIPTION\n\n	${4:# longer description...}\n\n\n	=head1 INTERFACE\n\n\n	=head1 DEPENDENCIES\n\n\n	=head1 SEE ALSO\n\n\n# Heading for a subroutine stub\nsnippet psub\n	=head2 ${1:MethodName}\n\n	${2:Summary....}\n\n# Heading for inline subroutine pod\nsnippet psubi\n	=head2 ${1:MethodName}\n\n	${2:Summary...}\n\n\n	=cut\n# inline documented subroutine\nsnippet subpod\n	=head2 $1\n\n	Summary of $1\n\n	=cut\n\n	sub ${1:subroutine_name} {\n		${2:# body...}\n	}\n# Subroutine signature\nsnippet parg\n	=over 2\n\n	=item\n	Arguments\n\n\n	=over 3\n\n	=item\n	C<${1:DataStructure}>\n\n	  ${2:Sample}\n\n\n	=back\n\n\n	=item\n	Return\n\n	=over 3\n\n\n	=item\n	C<${3:...return data}>\n\n\n	=back\n\n\n	=back\n\n\n\n# Moose has\nsnippet has\n	has ${1:attribute} => (\n		is	    => '${2:ro|rw}',\n		isa 	=> '${3:Str|Int|HashRef|ArrayRef|etc}',\n		default => sub {\n			${4:defaultvalue}\n		},\n		${5:# other attributes}\n	);\n\n\n# override\nsnippet override\n	override ${1:attribute} => sub {\n		${2:# my $self = shift;};\n		${3:# my ($self, $args) = @_;};\n	};\n\n\n# use test classes\nsnippet tuse\n	use Test::More;\n	use Test::Deep; # (); # uncomment to stop prototype errors\n	use Test::Exception;\n\n# local test lib\nsnippet tlib\n	use lib qw{ ./t/lib };\n\n#test methods\nsnippet tmeths\n	$ENV{TEST_METHOD} = '${1:regex}';\n\n# runtestclass\nsnippet trunner\n	use ${1:test_class};\n	$1->runtests();\n\n# Test::Class-style test\nsnippet tsub\n	sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {\n		my $self = shift;\n		${4:#  body}\n\n	}\n\n# Test::Routine-style test\nsnippet trsub\n	test ${1:test_name} => { description => '${2:Description of test.}'} => sub {\n		my ($self) = @_;\n		${3:# test code}\n	};\n\n#prep test method\nsnippet tprep\n	sub prep${1:number}_${2:test_case} :Test(startup) {\n		my $self = shift;\n		${4:#  body}\n	}\n\n# cause failures to print stack trace\nsnippet debug_trace\n	use Carp; # 'verbose';\n	# cloak \"die\"\n	# warn \"warning\"\n	$SIG{'__DIE__'} = sub {\n		require Carp; Carp::confess\n	};\n\n",t.scope="perl"})
\ No newline at end of file
diff --git a/js/ace/snippets/pgsql.js b/js/ace/snippets/pgsql.js
new file mode 100644
index 0000000..260ff29
--- /dev/null
+++ b/js/ace/snippets/pgsql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/pgsql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="pgsql"})
\ No newline at end of file
diff --git a/js/ace/snippets/php.js b/js/ace/snippets/php.js
new file mode 100644
index 0000000..39f9ed3
--- /dev/null
+++ b/js/ace/snippets/php.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/php",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet <?\n	<?php\n\n	${1}\nsnippet ec\n	echo ${1};\nsnippet <?e\n	<?php echo ${1} ?>\n# this one is for php5.4\nsnippet <?=\n	<?=${1}?>\nsnippet ns\n	namespace ${1:Foo\\Bar\\Baz};\n	${2}\nsnippet use\n	use ${1:Foo\\Bar\\Baz};\n	${2}\nsnippet c\n	${1:abstract }class ${2:$FILENAME}\n	{\n		${3}\n	}\nsnippet i\n	interface ${1:$FILENAME}\n	{\n		${2}\n	}\nsnippet t.\n	$this->${1}\nsnippet f\n	function ${1:foo}(${2:array }${3:$bar})\n	{\n		${4}\n	}\n# method\nsnippet m\n	${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})\n	{\n		${7}\n	}\n# setter method\nsnippet sm \n	${5:public} function set${6:$2}(${7:$2 }$$1)\n	{\n		$this->${8:$1} = $$1;\n		return $this;\n	}${9}\n# getter method\nsnippet gm\n	${3:public} function get${4:$2}()\n	{\n		return $this->${5:$1};\n	}${6}\n#setter\nsnippet $s\n	${1:$foo}->set${2:Bar}(${3});\n#getter\nsnippet $g\n	${1:$foo}->get${2:Bar}();\n\n# Tertiary conditional\nsnippet =?:\n	$${1:foo} = ${2:true} ? ${3:a} : ${4};\nsnippet ?:\n	${1:true} ? ${2:a} : ${3}\n\nsnippet C\n	$_COOKIE['${1:variable}']${2}\nsnippet E\n	$_ENV['${1:variable}']${2}\nsnippet F\n	$_FILES['${1:variable}']${2}\nsnippet G\n	$_GET['${1:variable}']${2}\nsnippet P\n	$_POST['${1:variable}']${2}\nsnippet R\n	$_REQUEST['${1:variable}']${2}\nsnippet S\n	$_SERVER['${1:variable}']${2}\nsnippet SS\n	$_SESSION['${1:variable}']${2}\n	\n# the following are old ones\nsnippet inc\n	include '${1:file}';${2}\nsnippet inc1\n	include_once '${1:file}';${2}\nsnippet req\n	require '${1:file}';${2}\nsnippet req1\n	require_once '${1:file}';${2}\n# Start Docblock\nsnippet /*\n# Class - post doc\nsnippet doc_cp${5}\n# Class Variable - post doc\nsnippet doc_vp${3}\n# Class Variable\nsnippet doc_v\n	${1:var} $${2};${5}\n# Class\nsnippet doc_c\n	${1:}class ${2:}\n	{\n		${7}\n	} // END $1class $2\n# Constant Definition - post doc\nsnippet doc_dp${2}\n# Constant Definition\nsnippet doc_d\n	ace.define(${1}, ${2});${4}\n# Function - post doc\nsnippet doc_fp${4}\n# Function signature\nsnippet doc_s\n	${1}function ${2}(${3});${7}\n# Function\nsnippet doc_f\n	${1}function ${2}(${3})\n	{${7}\n	}\n# Header\nsnippet doc_h\n	\n# Interface\nsnippet interface\n	interface ${1:$FILENAME}\n	{\n		${5}\n	}\n# class ...\nsnippet class\n	class ${2:$FILENAME}\n	{\n		${3}\n		${5:public} function ${6:__construct}(${7:argument})\n		{\n			${8:// code...}\n		}\n	}\n# ace.define(...)\nsnippet def\n	ace.define('${1}'${2});${3}\n# defined(...)\nsnippet def?\n	${1}defined('${2}')${3}\nsnippet wh\n	while (${1:/* condition */}) {\n		${2:// code...}\n	}\n# do ... while\nsnippet do\n	do {\n		${2:// code... }\n	} while (${1:/* condition */});\nsnippet if\n	if (${1:/* condition */}) {\n		${2:// code...}\n	}\nsnippet ifil\n	<?php if (${1:/* condition */}): ?>\n		${2:<!-- code... -->}\n	<?php endif; ?>\nsnippet ife\n	if (${1:/* condition */}) {\n		${2:// code...}\n	} else {\n		${3:// code...}\n	}\n	${4}\nsnippet ifeil\n	<?php if (${1:/* condition */}): ?>\n		${2:<!-- html... -->}\n	<?php else: ?>\n		${3:<!-- html... -->}\n	<?php endif; ?>\n	${4}\nsnippet else\n	else {\n		${1:// code...}\n	}\nsnippet elseif\n	elseif (${1:/* condition */}) {\n		${2:// code...}\n	}\nsnippet switch\n	switch ($${1:variable}) {\n		case '${2:value}':\n			${3:// code...}\n			break;\n		${5}\n		default:\n			${4:// code...}\n			break;\n	}\nsnippet case\n	case '${1:value}':\n		${2:// code...}\n		break;${3}\nsnippet for\n	for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n		${4: // code...}\n	}\nsnippet foreach\n	foreach ($${1:variable} as $${2:value}) {\n		${3:// code...}\n	}\nsnippet foreachil\n	<?php foreach ($${1:variable} as $${2:value}): ?>\n		${3:<!-- html... -->}\n	<?php endforeach; ?>\nsnippet foreachk\n	foreach ($${1:variable} as $${2:key} => $${3:value}) {\n		${4:// code...}\n	}\nsnippet foreachkil\n	<?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?>\n		${4:<!-- html... -->}\n	<?php endforeach; ?>\n# $... = array (...)\nsnippet array\n	$${1:arrayName} = array('${2}' => ${3});${4}\nsnippet try\n	try {\n		${2}\n	} catch (${1:Exception} $e) {\n	}\n# lambda with closure\nsnippet lambda\n	${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n		${4}\n	};\n# pre_dump();\nsnippet pd\n	echo '<pre>'; var_dump(${1}); echo '</pre>';\n# pre_dump(); die();\nsnippet pdd\n	echo '<pre>'; var_dump(${1}); echo '</pre>'; die(${2:});\nsnippet vd\n	var_dump(${1});\nsnippet vdd\n	var_dump(${1}); die(${2:});\nsnippet http_redirect\n	header (\"HTTP/1.1 301 Moved Permanently\"); \n	header (\"Location: \".URL); \n	exit();\n# Getters & Setters\nsnippet gs\n	public function get${3:$2}()\n	{\n		return $this->${4:$1};\n	}\n	public function set$3(${7:$2 }$$1)\n	{\n		$this->$4 = $$1;\n		return $this;\n	}${8}\n# anotation, get, and set, useful for doctrine\nsnippet ags\n	${2:protected} $${3:foo};\n\n	public function get${4:$3}()\n	{\n		return $this->$3;\n	}\n\n	public function set$4(${5:$4 }$${6:$3})\n	{\n		$this->$3 = $$6;\n		return $this;\n	}\nsnippet rett\n	return true;\nsnippet retf\n	return false;\n",t.scope="php"})
\ No newline at end of file
diff --git a/js/ace/snippets/plain_text.js b/js/ace/snippets/plain_text.js
new file mode 100644
index 0000000..25ec4af
--- /dev/null
+++ b/js/ace/snippets/plain_text.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/plain_text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="plain_text"})
\ No newline at end of file
diff --git a/js/ace/snippets/powershell.js b/js/ace/snippets/powershell.js
new file mode 100644
index 0000000..1672035
--- /dev/null
+++ b/js/ace/snippets/powershell.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/powershell",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="powershell"})
\ No newline at end of file
diff --git a/js/ace/snippets/praat.js b/js/ace/snippets/praat.js
new file mode 100644
index 0000000..8f290e0
--- /dev/null
+++ b/js/ace/snippets/praat.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/praat",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="praat"})
\ No newline at end of file
diff --git a/js/ace/snippets/prolog.js b/js/ace/snippets/prolog.js
new file mode 100644
index 0000000..7f00711
--- /dev/null
+++ b/js/ace/snippets/prolog.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/prolog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="prolog"})
\ No newline at end of file
diff --git a/js/ace/snippets/properties.js b/js/ace/snippets/properties.js
new file mode 100644
index 0000000..6c0b236
--- /dev/null
+++ b/js/ace/snippets/properties.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/properties",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="properties"})
\ No newline at end of file
diff --git a/js/ace/snippets/protobuf.js b/js/ace/snippets/protobuf.js
new file mode 100644
index 0000000..20b10fb
--- /dev/null
+++ b/js/ace/snippets/protobuf.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/protobuf",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="",t.scope="protobuf"})
\ No newline at end of file
diff --git a/js/ace/snippets/python.js b/js/ace/snippets/python.js
new file mode 100644
index 0000000..ee023b2
--- /dev/null
+++ b/js/ace/snippets/python.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/python",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet #!\n	#!/usr/bin/env python\nsnippet imp\n	import ${1:module}\nsnippet from\n	from ${1:package} import ${2:module}\n# Module Docstring\nsnippet docs\n	\'\'\'\n	File: ${1:FILENAME:file_name}\n	Author: ${2:author}\n	Description: ${3}\n	\'\'\'\nsnippet wh\n	while ${1:condition}:\n		${2:# TODO: write code...}\n# dowh - does the same as do...while in other languages\nsnippet dowh\n	while True:\n		${1:# TODO: write code...}\n		if ${2:condition}:\n			break\nsnippet with\n	with ${1:expr} as ${2:var}:\n		${3:# TODO: write code...}\n# New Class\nsnippet cl\n	class ${1:ClassName}(${2:object}):\n		"""${3:docstring for $1}"""\n		def __init__(self, ${4:arg}):\n			${5:super($1, self).__init__()}\n			self.$4 = $4\n			${6}\n# New Function\nsnippet def\n	def ${1:fname}(${2:`indent(\'.\') ? \'self\' : \'\'`}):\n		"""${3:docstring for $1}"""\n		${4:# TODO: write code...}\nsnippet deff\n	def ${1:fname}(${2:`indent(\'.\') ? \'self\' : \'\'`}):\n		${3:# TODO: write code...}\n# New Method\nsnippet defs\n	def ${1:mname}(self, ${2:arg}):\n		${3:# TODO: write code...}\n# New Property\nsnippet property\n	def ${1:foo}():\n		doc = "${2:The $1 property.}"\n		def fget(self):\n			${3:return self._$1}\n		def fset(self, value):\n			${4:self._$1 = value}\n# Ifs\nsnippet if\n	if ${1:condition}:\n		${2:# TODO: write code...}\nsnippet el\n	else:\n		${1:# TODO: write code...}\nsnippet ei\n	elif ${1:condition}:\n		${2:# TODO: write code...}\n# For\nsnippet for\n	for ${1:item} in ${2:items}:\n		${3:# TODO: write code...}\n# Encodes\nsnippet cutf8\n	# -*- coding: utf-8 -*-\nsnippet clatin1\n	# -*- coding: latin-1 -*-\nsnippet cascii\n	# -*- coding: ascii -*-\n# Lambda\nsnippet ld\n	${1:var} = lambda ${2:vars} : ${3:action}\nsnippet .\n	self.\nsnippet try Try/Except\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\nsnippet try Try/Except/Else\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\n	else:\n		${5:# TODO: write code...}\nsnippet try Try/Except/Finally\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\n	finally:\n		${5:# TODO: write code...}\nsnippet try Try/Except/Else/Finally\n	try:\n		${1:# TODO: write code...}\n	except ${2:Exception}, ${3:e}:\n		${4:raise $3}\n	else:\n		${5:# TODO: write code...}\n	finally:\n		${6:# TODO: write code...}\n# if __name__ == \'__main__\':\nsnippet ifmain\n	if __name__ == \'__main__\':\n		${1:main()}\n# __magic__\nsnippet _\n	__${1:init}__${2}\n# python debugger (pdb)\nsnippet pdb\n	import pdb; pdb.set_trace()\n# ipython debugger (ipdb)\nsnippet ipdb\n	import ipdb; ipdb.set_trace()\n# ipython debugger (pdbbb)\nsnippet pdbbb\n	import pdbpp; pdbpp.set_trace()\nsnippet pprint\n	import pprint; pprint.pprint(${1})${2}\nsnippet "\n	"""\n	${1:doc}\n	"""\n# test function/method\nsnippet test\n	def test_${1:description}(${2:self}):\n		${3:# TODO: write code...}\n# test case\nsnippet testcase\n	class ${1:ExampleCase}(unittest.TestCase):\n		\n		def test_${2:description}(self):\n			${3:# TODO: write code...}\nsnippet fut\n	from __future__ import ${1}\n#getopt\nsnippet getopt\n	try:\n		# Short option syntax: "hv:"\n		# Long option syntax: "help" or "verbose="\n		opts, args = getopt.getopt(sys.argv[1:], "${1:short_options}", [${2:long_options}])\n	\n	except getopt.GetoptError, err:\n		# Print debug info\n		print str(err)\n		${3:error_action}\n\n	for option, argument in opts:\n		if option in ("-h", "--help"):\n			${4}\n		elif option in ("-v", "--verbose"):\n			verbose = argument\n',t.scope="python"})
\ No newline at end of file
diff --git a/js/ace/snippets/r.js b/js/ace/snippets/r.js
new file mode 100644
index 0000000..85076d5
--- /dev/null
+++ b/js/ace/snippets/r.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/r",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet #!\n	#!/usr/bin/env Rscript\n\n# includes\nsnippet lib\n	library(${1:package})\nsnippet req\n	require(${1:package})\nsnippet source\n	source(\'${1:file}\')\n\n# conditionals\nsnippet if\n	if (${1:condition}) {\n		${2:code}\n	}\nsnippet el\n	else {\n		${1:code}\n	}\nsnippet ei\n	else if (${1:condition}) {\n		${2:code}\n	}\n\n# functions\nsnippet fun\n	${1:name} = function (${2:variables}) {\n		${3:code}\n	}\nsnippet ret\n	return(${1:code})\n\n# dataframes, lists, etc\nsnippet df\n	${1:name}[${2:rows}, ${3:cols}]\nsnippet c\n	c(${1:items})\nsnippet li\n	list(${1:items})\nsnippet mat\n	matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\n# apply functions\nsnippet apply\n	apply(${1:array}, ${2:margin}, ${3:function})\nsnippet lapply\n	lapply(${1:list}, ${2:function})\nsnippet sapply\n	lapply(${1:list}, ${2:function})\nsnippet vapply\n	vapply(${1:list}, ${2:function}, ${3:type})\nsnippet mapply\n	mapply(${1:function}, ${2:...})\nsnippet tapply\n	tapply(${1:vector}, ${2:index}, ${3:function})\nsnippet rapply\n	rapply(${1:list}, ${2:function})\n\n# plyr functions\nsnippet dd\n	ddply(${1:frame}, ${2:variables}, ${3:function})\nsnippet dl\n	dlply(${1:frame}, ${2:variables}, ${3:function})\nsnippet da\n	daply(${1:frame}, ${2:variables}, ${3:function})\nsnippet d_\n	d_ply(${1:frame}, ${2:variables}, ${3:function})\n\nsnippet ad\n	adply(${1:array}, ${2:margin}, ${3:function})\nsnippet al\n	alply(${1:array}, ${2:margin}, ${3:function})\nsnippet aa\n	aaply(${1:array}, ${2:margin}, ${3:function})\nsnippet a_\n	a_ply(${1:array}, ${2:margin}, ${3:function})\n\nsnippet ld\n	ldply(${1:list}, ${2:function})\nsnippet ll\n	llply(${1:list}, ${2:function})\nsnippet la\n	laply(${1:list}, ${2:function})\nsnippet l_\n	l_ply(${1:list}, ${2:function})\n\nsnippet md\n	mdply(${1:matrix}, ${2:function})\nsnippet ml\n	mlply(${1:matrix}, ${2:function})\nsnippet ma\n	maply(${1:matrix}, ${2:function})\nsnippet m_\n	m_ply(${1:matrix}, ${2:function})\n\n# plot functions\nsnippet pl\n	plot(${1:x}, ${2:y})\nsnippet ggp\n	ggplot(${1:data}, aes(${2:aesthetics}))\nsnippet img\n	${1:(jpeg,bmp,png,tiff)}(filename="${2:filename}", width=${3}, height=${4}, unit="${5}")\n	${6:plot}\n	dev.off()\n\n# statistical test functions\nsnippet fis\n	fisher.test(${1:x}, ${2:y})\nsnippet chi\n	chisq.test(${1:x}, ${2:y})\nsnippet tt\n	t.test(${1:x}, ${2:y})\nsnippet wil\n	wilcox.test(${1:x}, ${2:y})\nsnippet cor\n	cor.test(${1:x}, ${2:y})\nsnippet fte\n	var.test(${1:x}, ${2:y})\nsnippet kvt \n	kv.test(${1:x}, ${2:y})\n',t.scope="r"})
\ No newline at end of file
diff --git a/js/ace/snippets/rdoc.js b/js/ace/snippets/rdoc.js
new file mode 100644
index 0000000..c7c3b1e
--- /dev/null
+++ b/js/ace/snippets/rdoc.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rdoc",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rdoc"})
\ No newline at end of file
diff --git a/js/ace/snippets/rhtml.js b/js/ace/snippets/rhtml.js
new file mode 100644
index 0000000..f2b53b5
--- /dev/null
+++ b/js/ace/snippets/rhtml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rhtml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rhtml"})
\ No newline at end of file
diff --git a/js/ace/snippets/ruby.js b/js/ace/snippets/ruby.js
new file mode 100644
index 0000000..0c30680
--- /dev/null
+++ b/js/ace/snippets/ruby.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/ruby",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='########################################\n# Ruby snippets - for Rails, see below #\n########################################\n\n# encoding for Ruby 1.9\nsnippet enc\n	# encoding: utf-8\n\n# #!/usr/bin/env ruby\nsnippet #!\n	#!/usr/bin/env ruby\n	# encoding: utf-8\n\n# New Block\nsnippet =b\n	=begin rdoc\n		${1}\n	=end\nsnippet y\n	:yields: ${1:arguments}\nsnippet rb\n	#!/usr/bin/env ruby -wKU\nsnippet beg\n	begin\n		${3}\n	rescue ${1:Exception} => ${2:e}\n	end\n\nsnippet req require\n	require "${1}"${2}\nsnippet #\n	# =>\nsnippet end\n	__END__\nsnippet case\n	case ${1:object}\n	when ${2:condition}\n		${3}\n	end\nsnippet when\n	when ${1:condition}\n		${2}\nsnippet def\n	def ${1:method_name}\n		${2}\n	end\nsnippet deft\n	def test_${1:case_name}\n		${2}\n	end\nsnippet if\n	if ${1:condition}\n		${2}\n	end\nsnippet ife\n	if ${1:condition}\n		${2}\n	else\n		${3}\n	end\nsnippet elsif\n	elsif ${1:condition}\n		${2}\nsnippet unless\n	unless ${1:condition}\n		${2}\n	end\nsnippet while\n	while ${1:condition}\n		${2}\n	end\nsnippet for\n	for ${1:e} in ${2:c}\n		${3}\n	end\nsnippet until\n	until ${1:condition}\n		${2}\n	end\nsnippet cla class .. end\n	class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n		${2}\n	end\nsnippet cla class .. initialize .. end\n	class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n		def initialize(${2:args})\n			${3}\n		end\n	end\nsnippet cla class .. < ParentClass .. initialize .. end\n	class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < ${2:ParentClass}\n		def initialize(${3:args})\n			${4}\n		end\n	end\nsnippet cla ClassName = Struct .. do .. end\n	${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} = Struct.new(:${2:attr_names}) do\n		def ${3:method_name}\n			${4}\n		end\n	end\nsnippet cla class BlankSlate .. initialize .. end\n	class ${1:BlankSlate}\n		instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n	end\nsnippet cla class << self .. end\n	class << ${1:self}\n		${2}\n	end\n# class .. < DelegateClass .. initialize .. end\nsnippet cla-\n	class ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`} < DelegateClass(${2:ParentClass})\n		def initialize(${3:args})\n			super(${4:del_obj})\n\n			${5}\n		end\n	end\nsnippet mod module .. end\n	module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n		${2}\n	end\nsnippet mod module .. module_function .. end\n	module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n		module_function\n\n		${2}\n	end\nsnippet mod module .. ClassMethods .. end\n	module ${1:`substitute(Filename(), \'\\(_\\|^\\)\\(.\\)\', \'\\u\\2\', \'g\')`}\n		module ClassMethods\n			${2}\n		end\n\n		module InstanceMethods\n\n		end\n\n		def self.included(receiver)\n			receiver.extend         ClassMethods\n			receiver.send :include, InstanceMethods\n		end\n	end\n# attr_reader\nsnippet r\n	attr_reader :${1:attr_names}\n# attr_writer\nsnippet w\n	attr_writer :${1:attr_names}\n# attr_accessor\nsnippet rw\n	attr_accessor :${1:attr_names}\nsnippet atp\n	attr_protected :${1:attr_names}\nsnippet ata\n	attr_accessible :${1:attr_names}\n# include Enumerable\nsnippet Enum\n	include Enumerable\n\n	def each(&block)\n		${1}\n	end\n# include Comparable\nsnippet Comp\n	include Comparable\n\n	def <=>(other)\n		${1}\n	end\n# extend Forwardable\nsnippet Forw-\n	extend Forwardable\n# def self\nsnippet defs\n	def self.${1:class_method_name}\n		${2}\n	end\n# def method_missing\nsnippet defmm\n	def method_missing(meth, *args, &blk)\n		${1}\n	end\nsnippet defd\n	def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\nsnippet defds\n	def_delegators :${1:@del_obj}, :${2:del_methods}\nsnippet am\n	alias_method :${1:new_name}, :${2:old_name}\nsnippet app\n	if __FILE__ == $PROGRAM_NAME\n		${1}\n	end\n# usage_if()\nsnippet usai\n	if ARGV.${1}\n		abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n	end\n# usage_unless()\nsnippet usau\n	unless ARGV.${1}\n		abort "Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}"${3}\n	end\nsnippet array\n	Array.new(${1:10}) { |${2:i}| ${3} }\nsnippet hash\n	Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\nsnippet file File.foreach() { |line| .. }\n	File.foreach(${1:"path/to/file"}) { |${2:line}| ${3} }\nsnippet file File.read()\n	File.read(${1:"path/to/file"})${2}\nsnippet Dir Dir.global() { |file| .. }\n	Dir.glob(${1:"dir/glob/*"}) { |${2:file}| ${3} }\nsnippet Dir Dir[".."]\n	Dir[${1:"glob/**/*.rb"}]${2}\nsnippet dir\n	Filename.dirname(__FILE__)\nsnippet deli\n	delete_if { |${1:e}| ${2} }\nsnippet fil\n	fill(${1:range}) { |${2:i}| ${3} }\n# flatten_once()\nsnippet flao\n	inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\nsnippet zip\n	zip(${1:enums}) { |${2:row}| ${3} }\n# downto(0) { |n| .. }\nsnippet dow\n	downto(${1:0}) { |${2:n}| ${3} }\nsnippet ste\n	step(${1:2}) { |${2:n}| ${3} }\nsnippet tim\n	times { |${1:n}| ${2} }\nsnippet upt\n	upto(${1:1.0/0.0}) { |${2:n}| ${3} }\nsnippet loo\n	loop { ${1} }\nsnippet ea\n	each { |${1:e}| ${2} }\nsnippet ead\n	each do |${1:e}|\n		${2}\n	end\nsnippet eab\n	each_byte { |${1:byte}| ${2} }\nsnippet eac- each_char { |chr| .. }\n	each_char { |${1:chr}| ${2} }\nsnippet eac- each_cons(..) { |group| .. }\n	each_cons(${1:2}) { |${2:group}| ${3} }\nsnippet eai\n	each_index { |${1:i}| ${2} }\nsnippet eaid\n	each_index do |${1:i}|\n		${2}\n	end\nsnippet eak\n	each_key { |${1:key}| ${2} }\nsnippet eakd\n	each_key do |${1:key}|\n		${2}\n	end\nsnippet eal\n	each_line { |${1:line}| ${2} }\nsnippet eald\n	each_line do |${1:line}|\n		${2}\n	end\nsnippet eap\n	each_pair { |${1:name}, ${2:val}| ${3} }\nsnippet eapd\n	each_pair do |${1:name}, ${2:val}|\n		${3}\n	end\nsnippet eas-\n	each_slice(${1:2}) { |${2:group}| ${3} }\nsnippet easd-\n	each_slice(${1:2}) do |${2:group}|\n		${3}\n	end\nsnippet eav\n	each_value { |${1:val}| ${2} }\nsnippet eavd\n	each_value do |${1:val}|\n		${2}\n	end\nsnippet eawi\n	each_with_index { |${1:e}, ${2:i}| ${3} }\nsnippet eawid\n	each_with_index do |${1:e},${2:i}|\n		${3}\n	end\nsnippet reve\n	reverse_each { |${1:e}| ${2} }\nsnippet reved\n	reverse_each do |${1:e}|\n		${2}\n	end\nsnippet inj\n	inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\nsnippet injd\n	inject(${1:init}) do |${2:mem}, ${3:var}|\n		${4}\n	end\nsnippet map\n	map { |${1:e}| ${2} }\nsnippet mapd\n	map do |${1:e}|\n		${2}\n	end\nsnippet mapwi-\n	enum_with_index.map { |${1:e}, ${2:i}| ${3} }\nsnippet sor\n	sort { |a, b| ${1} }\nsnippet sorb\n	sort_by { |${1:e}| ${2} }\nsnippet ran\n	sort_by { rand }\nsnippet all\n	all? { |${1:e}| ${2} }\nsnippet any\n	any? { |${1:e}| ${2} }\nsnippet cl\n	classify { |${1:e}| ${2} }\nsnippet col\n	collect { |${1:e}| ${2} }\nsnippet cold\n	collect do |${1:e}|\n		${2}\n	end\nsnippet det\n	detect { |${1:e}| ${2} }\nsnippet detd\n	detect do |${1:e}|\n		${2}\n	end\nsnippet fet\n	fetch(${1:name}) { |${2:key}| ${3} }\nsnippet fin\n	find { |${1:e}| ${2} }\nsnippet find\n	find do |${1:e}|\n		${2}\n	end\nsnippet fina\n	find_all { |${1:e}| ${2} }\nsnippet finad\n	find_all do |${1:e}|\n		${2}\n	end\nsnippet gre\n	grep(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet sub\n	${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\nsnippet sca\n	scan(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet scad\n	scan(${1:/pattern/}) do |${2:match}|\n		${3}\n	end\nsnippet max\n	max { |a, b| ${1} }\nsnippet min\n	min { |a, b| ${1} }\nsnippet par\n	partition { |${1:e}| ${2} }\nsnippet pard\n	partition do |${1:e}|\n		${2}\n	end\nsnippet rej\n	reject { |${1:e}| ${2} }\nsnippet rejd\n	reject do |${1:e}|\n		${2}\n	end\nsnippet sel\n	select { |${1:e}| ${2} }\nsnippet seld\n	select do |${1:e}|\n		${2}\n	end\nsnippet lam\n	lambda { |${1:args}| ${2} }\nsnippet doo\n	do\n		${1}\n	end\nsnippet dov\n	do |${1:variable}|\n		${2}\n	end\nsnippet :\n	:${1:key} => ${2:"value"}${3}\nsnippet ope\n	open(${1:"path/or/url/or/pipe"}, "${2:w}") { |${3:io}| ${4} }\n# path_from_here()\nsnippet fpath\n	File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n# unix_filter {}\nsnippet unif\n	ARGF.each_line${1} do |${2:line}|\n		${3}\n	end\n# option_parse {}\nsnippet optp\n	require "optparse"\n\n	options = {${1:default => "args"}}\n\n	ARGV.options do |opts|\n		opts.banner = "Usage: #{File.basename($PROGRAM_NAME)}\nsnippet opt\n	opts.on( "-${1:o}", "--${2:long-option-name}", ${3:String},\n	         "${4:Option description.}") do |${5:opt}|\n		${6}\n	end\nsnippet tc\n	require "test/unit"\n\n	require "${1:library_file_name}"\n\n	class Test${2:$1} < Test::Unit::TestCase\n		def test_${3:case_name}\n			${4}\n		end\n	end\nsnippet ts\n	require "test/unit"\n\n	require "tc_${1:test_case_file}"\n	require "tc_${2:test_case_file}"${3}\nsnippet as\n	assert ${1:test}, "${2:Failure message.}"${3}\nsnippet ase\n	assert_equal ${1:expected}, ${2:actual}${3}\nsnippet asne\n	assert_not_equal ${1:unexpected}, ${2:actual}${3}\nsnippet asid\n	assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\nsnippet asio\n	assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\nsnippet asko\n	assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\nsnippet asn\n	assert_nil ${1:instance}${2}\nsnippet asnn\n	assert_not_nil ${1:instance}${2}\nsnippet asm\n	assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\nsnippet asnm\n	assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\nsnippet aso\n	assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\nsnippet asr\n	assert_raise ${1:Exception} { ${2} }\nsnippet asrd\n	assert_raise ${1:Exception} do\n		${2}\n	end\nsnippet asnr\n	assert_nothing_raised ${1:Exception} { ${2} }\nsnippet asnrd\n	assert_nothing_raised ${1:Exception} do\n		${2}\n	end\nsnippet asrt\n	assert_respond_to ${1:object}, :${2:method}${3}\nsnippet ass assert_same(..)\n	assert_same ${1:expected}, ${2:actual}${3}\nsnippet ass assert_send(..)\n	assert_send [${1:object}, :${2:message}, ${3:args}]${4}\nsnippet asns\n	assert_not_same ${1:unexpected}, ${2:actual}${3}\nsnippet ast\n	assert_throws :${1:expected} { ${2} }\nsnippet astd\n	assert_throws :${1:expected} do\n		${2}\n	end\nsnippet asnt\n	assert_nothing_thrown { ${1} }\nsnippet asntd\n	assert_nothing_thrown do\n		${1}\n	end\nsnippet fl\n	flunk "${1:Failure message.}"${2}\n# Benchmark.bmbm do .. end\nsnippet bm-\n	TESTS = ${1:10_000}\n	Benchmark.bmbm do |results|\n		${2}\n	end\nsnippet rep\n	results.report("${1:name}:") { TESTS.times { ${2} }}\n# Marshal.dump(.., file)\nsnippet Md\n	File.open(${1:"path/to/file.dump"}, "wb") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n# Mashal.load(obj)\nsnippet Ml\n	File.open(${1:"path/to/file.dump"}, "rb") { |${2:file}| Marshal.load($2) }${3}\n# deep_copy(..)\nsnippet deec\n	Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\nsnippet Pn-\n	PStore.new(${1:"file_name.pstore"})${2}\nsnippet tra\n	transaction(${1:true}) { ${2} }\n# xmlread(..)\nsnippet xml-\n	REXML::Document.new(File.read(${1:"path/to/file"}))${2}\n# xpath(..) { .. }\nsnippet xpa\n	elements.each(${1:"//Xpath"}) do |${2:node}|\n		${3}\n	end\n# class_from_name()\nsnippet clafn\n	split("::").inject(Object) { |par, const| par.const_get(const) }\n# singleton_class()\nsnippet sinc\n	class << self; self end\nsnippet nam\n	namespace :${1:`Filename()`} do\n		${2}\n	end\nsnippet tas\n	desc "${1:Task description}"\n	task :${2:task_name => [:dependent, :tasks]} do\n		${3}\n	end\n# block\nsnippet b\n	{ |${1:var}| ${2} }\nsnippet begin\n	begin\n		raise \'A test exception.\'\n	rescue Exception => e\n		puts e.message\n		puts e.backtrace.inspect\n	else\n		# other exception\n	ensure\n		# always executed\n	end\n\n#debugging\nsnippet debug\n	require \'ruby-debug\'; debugger; true;\nsnippet pry\n	require \'pry\'; binding.pry\n\n#############################################\n# Rails snippets - for pure Ruby, see above #\n#############################################\nsnippet art\n	assert_redirected_to ${1::action => "${2:index}"}\nsnippet artnp\n	assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\nsnippet artnpp\n	assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\nsnippet artp\n	assert_redirected_to ${1:model}_path(${2:@$1})\nsnippet artpp\n	assert_redirected_to ${1:model}s_path\nsnippet asd\n	assert_difference "${1:Model}.${2:count}", $1 do\n		${3}\n	end\nsnippet asnd\n	assert_no_difference "${1:Model}.${2:count}" do\n		${3}\n	end\nsnippet asre\n	assert_response :${1:success}, @response.body${2}\nsnippet asrj\n	assert_rjs :${1:replace}, "${2:dom id}"\nsnippet ass assert_select(..)\n	assert_select \'${1:path}\', :${2:text} => \'${3:inner_html\' ${4:do}\nsnippet bf\n	before_filter :${1:method}\nsnippet bt\n	belongs_to :${1:association}\nsnippet crw\n	cattr_accessor :${1:attr_names}\nsnippet defcreate\n	def create\n		@${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\n		respond_to do |wants|\n			if @$1.save\n				flash[:notice] = \'$2 was successfully created.\'\n				wants.html { redirect_to(@$1) }\n				wants.xml  { render :xml => @$1, :status => :created, :location => @$1 }\n			else\n				wants.html { render :action => "new" }\n				wants.xml  { render :xml => @$1.errors, :status => :unprocessable_entity }\n			end\n		end\n	end${3}\nsnippet defdestroy\n	def destroy\n		@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n		@$1.destroy\n\n		respond_to do |wants|\n			wants.html { redirect_to($1s_url) }\n			wants.xml  { head :ok }\n		end\n	end${3}\nsnippet defedit\n	def edit\n		@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n	end\nsnippet defindex\n	def index\n		@${1:model_class_name} = ${2:ModelClassName}.all\n\n		respond_to do |wants|\n			wants.html # index.html.erb\n			wants.xml  { render :xml => @$1s }\n		end\n	end${3}\nsnippet defnew\n	def new\n		@${1:model_class_name} = ${2:ModelClassName}.new\n\n		respond_to do |wants|\n			wants.html # new.html.erb\n			wants.xml  { render :xml => @$1 }\n		end\n	end${3}\nsnippet defshow\n	def show\n		@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n		respond_to do |wants|\n			wants.html # show.html.erb\n			wants.xml  { render :xml => @$1 }\n		end\n	end${3}\nsnippet defupdate\n	def update\n		@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n		respond_to do |wants|\n			if @$1.update_attributes(params[:$1])\n				flash[:notice] = \'$2 was successfully updated.\'\n				wants.html { redirect_to(@$1) }\n				wants.xml  { head :ok }\n			else\n				wants.html { render :action => "edit" }\n				wants.xml  { render :xml => @$1.errors, :status => :unprocessable_entity }\n			end\n		end\n	end${3}\nsnippet flash\n	flash[:${1:notice}] = "${2}"\nsnippet habtm\n	has_and_belongs_to_many :${1:object}, :join_table => "${2:table_name}", :foreign_key => "${3}_id"${4}\nsnippet hm\n	has_many :${1:object}\nsnippet hmd\n	has_many :${1:other}s, :class_name => "${2:$1}", :foreign_key => "${3:$1}_id", :dependent => :destroy${4}\nsnippet hmt\n	has_many :${1:object}, :through => :${2:object}\nsnippet ho\n	has_one :${1:object}\nsnippet i18\n	I18n.t(\'${1:type.key}\')${2}\nsnippet ist\n	<%= image_submit_tag("${1:agree.png}", :id => "${2:id}"${3} %>\nsnippet log\n	Rails.logger.${1:debug} ${2}\nsnippet log2\n	RAILS_DEFAULT_LOGGER.${1:debug} ${2}\nsnippet logd\n	logger.debug { "${1:message}" }${2}\nsnippet loge\n	logger.error { "${1:message}" }${2}\nsnippet logf\n	logger.fatal { "${1:message}" }${2}\nsnippet logi\n	logger.info { "${1:message}" }${2}\nsnippet logw\n	logger.warn { "${1:message}" }${2}\nsnippet mapc\n	${1:map}.${2:connect} \'${3:controller/:action/:id}\'\nsnippet mapca\n	${1:map}.catch_all "*${2:anything}", :controller => "${3:default}", :action => "${4:error}"${5}\nsnippet mapr\n	${1:map}.resource :${2:resource}\nsnippet maprs\n	${1:map}.resources :${2:resource}\nsnippet mapwo\n	${1:map}.with_options :${2:controller} => \'${3:thing}\' do |$3|\n		${4}\n	end\nsnippet mbs\n	before_save :${1:method}\nsnippet mcht\n	change_table :${1:table_name} do |t|\n		${2}\n	end\nsnippet mp\n	map(&:${1:id})\nsnippet mrw\n	mattr_accessor :${1:attr_names}\nsnippet oa\n	order("${1:field}")\nsnippet od\n	order("${1:field} DESC")\nsnippet pa\n	params[:${1:id}]${2}\nsnippet ra\n	render :action => "${1:action}"\nsnippet ral\n	render :action => "${1:action}", :layout => "${2:layoutname}"\nsnippet rest\n	respond_to do |wants|\n		wants.${1:html} { ${2} }\n	end\nsnippet rf\n	render :file => "${1:filepath}"\nsnippet rfu\n	render :file => "${1:filepath}", :use_full_path => ${2:false}\nsnippet ri\n	render :inline => "${1:<%= \'hello\' %>}"\nsnippet ril\n	render :inline => "${1:<%= \'hello\' %>}", :locals => { ${2::name} => "${3:value}"${4} }\nsnippet rit\n	render :inline => "${1:<%= \'hello\' %>}", :type => ${2::rxml}\nsnippet rjson\n	render :json => ${1:text to render}\nsnippet rl\n	render :layout => "${1:layoutname}"\nsnippet rn\n	render :nothing => ${1:true}\nsnippet rns\n	render :nothing => ${1:true}, :status => ${2:401}\nsnippet rp\n	render :partial => "${1:item}"\nsnippet rpc\n	render :partial => "${1:item}", :collection => ${2:@$1s}\nsnippet rpl\n	render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1}\nsnippet rpo\n	render :partial => "${1:item}", :object => ${2:@$1}\nsnippet rps\n	render :partial => "${1:item}", :status => ${2:500}\nsnippet rt\n	render :text => "${1:text to render}"\nsnippet rtl\n	render :text => "${1:text to render}", :layout => "${2:layoutname}"\nsnippet rtlt\n	render :text => "${1:text to render}", :layout => ${2:true}\nsnippet rts\n	render :text => "${1:text to render}", :status => ${2:401}\nsnippet ru\n	render :update do |${1:page}|\n		$1.${2}\n	end\nsnippet rxml\n	render :xml => ${1:text to render}\nsnippet sc\n	scope :${1:name}, :where(:@${2:field} => ${3:value})\nsnippet sl\n	scope :${1:name}, lambda do |${2:value}|\n		where("${3:field = ?}", ${4:bind var})\n	end\nsnippet sha1\n	Digest::SHA1.hexdigest(${1:string})\nsnippet sweeper\n	class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n		observe $1\n\n		def after_save(${2:model_class_name})\n			expire_cache($2)\n		end\n\n		def after_destroy($2)\n			expire_cache($2)\n		end\n\n		def expire_cache($2)\n			expire_page\n		end\n	end\nsnippet tcb\n	t.boolean :${1:title}\n	${2}\nsnippet tcbi\n	t.binary :${1:title}, :limit => ${2:2}.megabytes\n	${3}\nsnippet tcd\n	t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n	${4}\nsnippet tcda\n	t.date :${1:title}\n	${2}\nsnippet tcdt\n	t.datetime :${1:title}\n	${2}\nsnippet tcf\n	t.float :${1:title}\n	${2}\nsnippet tch\n	t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n	${5}\nsnippet tci\n	t.integer :${1:title}\n	${2}\nsnippet tcl\n	t.integer :lock_version, :null => false, :default => 0\n	${1}\nsnippet tcr\n	t.references :${1:taggable}, :polymorphic => { :default => \'${2:Photo}\' }\n	${3}\nsnippet tcs\n	t.string :${1:title}\n	${2}\nsnippet tct\n	t.text :${1:title}\n	${2}\nsnippet tcti\n	t.time :${1:title}\n	${2}\nsnippet tcts\n	t.timestamp :${1:title}\n	${2}\nsnippet tctss\n	t.timestamps\n	${1}\nsnippet va\n	validates_associated :${1:attribute}\nsnippet vao\n	validates_acceptance_of :${1:terms}\nsnippet vc\n	validates_confirmation_of :${1:attribute}\nsnippet ve\n	validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\nsnippet vf\n	validates_format_of :${1:attribute}, :with => /${2:regex}/\nsnippet vi\n	validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\nsnippet vl\n	validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\nsnippet vn\n	validates_numericality_of :${1:attribute}\nsnippet vpo\n	validates_presence_of :${1:attribute}\nsnippet vu\n	validates_uniqueness_of :${1:attribute}\nsnippet wants\n	wants.${1:js|xml|html} { ${2} }\nsnippet wc\n	where(${1:"conditions"}${2:, bind_var})\nsnippet wh\n	where(${1:field} => ${2:value})\nsnippet xdelete\n	xhr :delete, :${1:destroy}, :id => ${2:1}${3}\nsnippet xget\n	xhr :get, :${1:show}, :id => ${2:1}${3}\nsnippet xpost\n	xhr :post, :${1:create}, :${2:object} => { ${3} }\nsnippet xput\n	xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\nsnippet test\n	test "should ${1:do something}" do\n		${2}\n	end\n#migrations\nsnippet mac\n	add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\nsnippet mrc\n	remove_column :${1:table_name}, :${2:column_name}\nsnippet mrnc\n	rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\nsnippet mcc\n	change_column :${1:table}, :${2:column}, :${3:type}\nsnippet mccc\n	t.column :${1:title}, :${2:string}\nsnippet mct\n	create_table :${1:table_name} do |t|\n		t.column :${2:name}, :${3:type}\n	end\nsnippet migration\n	class ${1:class_name} < ActiveRecord::Migration\n		def self.up\n			${2}\n		end\n\n		def self.down\n		end\n	end\n\nsnippet trc\n	t.remove :${1:column}\nsnippet tre\n	t.rename :${1:old_column_name}, :${2:new_column_name}\n	${3}\nsnippet tref\n	t.references :${1:model}\n\n#rspec\nsnippet it\n	it "${1:spec_name}" do\n		${2}\n	end\nsnippet itp\n	it "${1:spec_name}"\n	${2}\nsnippet desc\n	describe ${1:class_name} do\n		${2}\n	end\nsnippet cont\n	context "${1:message}" do\n		${2}\n	end\nsnippet bef\n	before :${1:each} do\n		${2}\n	end\nsnippet aft\n	after :${1:each} do\n		${2}\n	end\n',t.scope="ruby"})
\ No newline at end of file
diff --git a/js/ace/snippets/rust.js b/js/ace/snippets/rust.js
new file mode 100644
index 0000000..d30d87e
--- /dev/null
+++ b/js/ace/snippets/rust.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/rust",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="rust"})
\ No newline at end of file
diff --git a/js/ace/snippets/sass.js b/js/ace/snippets/sass.js
new file mode 100644
index 0000000..ccfde2c
--- /dev/null
+++ b/js/ace/snippets/sass.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sass",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sass"})
\ No newline at end of file
diff --git a/js/ace/snippets/scad.js b/js/ace/snippets/scad.js
new file mode 100644
index 0000000..9a4fcb0
--- /dev/null
+++ b/js/ace/snippets/scad.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scad",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scad"})
\ No newline at end of file
diff --git a/js/ace/snippets/scala.js b/js/ace/snippets/scala.js
new file mode 100644
index 0000000..dbbc7f4
--- /dev/null
+++ b/js/ace/snippets/scala.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scala",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scala"})
\ No newline at end of file
diff --git a/js/ace/snippets/scheme.js b/js/ace/snippets/scheme.js
new file mode 100644
index 0000000..d8770f2
--- /dev/null
+++ b/js/ace/snippets/scheme.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scheme",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scheme"})
\ No newline at end of file
diff --git a/js/ace/snippets/scss.js b/js/ace/snippets/scss.js
new file mode 100644
index 0000000..0526c69
--- /dev/null
+++ b/js/ace/snippets/scss.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/scss",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="scss"})
\ No newline at end of file
diff --git a/js/ace/snippets/sh.js b/js/ace/snippets/sh.js
new file mode 100644
index 0000000..3871076
--- /dev/null
+++ b/js/ace/snippets/sh.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sh",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\nsnippet #!\n	#!/usr/bin/env bash\n	\nsnippet if\n	if [[ ${1:condition} ]]; then\n		${2:#statements}\n	fi\nsnippet elif\n	elif [[ ${1:condition} ]]; then\n		${2:#statements}\nsnippet for\n	for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n		${3:#statements}\n	done\nsnippet fori\n	for ${1:needle} in ${2:haystack} ; do\n		${3:#statements}\n	done\nsnippet wh\n	while [[ ${1:condition} ]]; do\n		${2:#statements}\n	done\nsnippet until\n	until [[ ${1:condition} ]]; do\n		${2:#statements}\n	done\nsnippet case\n	case ${1:word} in\n		${2:pattern})\n			${3};;\n	esac\nsnippet go \n	while getopts \'${1:o}\' ${2:opts} \n	do \n		case $$2 in\n		${3:o0})\n			${4:#staments};;\n		esac\n	done\n# Set SCRIPT_DIR variable to directory script is located.\nsnippet sdir\n	SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"\n# getopt\nsnippet getopt\n	__ScriptVersion="${1:version}"\n\n	#===  FUNCTION  ================================================================\n	#         NAME:  usage\n	#  DESCRIPTION:  Display usage information.\n	#===============================================================================\n	function usage ()\n	{\n			cat <<- EOT\n\n	  Usage :  $${0:0} [options] [--] \n\n	  Options: \n	  -h|help       Display this message\n	  -v|version    Display script version\n\n			EOT\n	}    # ----------  end of function usage  ----------\n\n	#-----------------------------------------------------------------------\n	#  Handle command line arguments\n	#-----------------------------------------------------------------------\n\n	while getopts ":hv" opt\n	do\n	  case $opt in\n\n		h|help     )  usage; exit 0   ;;\n\n		v|version  )  echo "$${0:0} -- Version $__ScriptVersion"; exit 0   ;;\n\n		\\? )  echo -e "\\n  Option does not exist : $OPTARG\\n"\n			  usage; exit 1   ;;\n\n	  esac    # --- end of case ---\n	done\n	shift $(($OPTIND-1))\n\n',t.scope="sh"})
\ No newline at end of file
diff --git a/js/ace/snippets/sjs.js b/js/ace/snippets/sjs.js
new file mode 100644
index 0000000..8023e0d
--- /dev/null
+++ b/js/ace/snippets/sjs.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sjs",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="sjs"})
\ No newline at end of file
diff --git a/js/ace/snippets/smarty.js b/js/ace/snippets/smarty.js
new file mode 100644
index 0000000..5dc13d7
--- /dev/null
+++ b/js/ace/snippets/smarty.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/smarty",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="smarty"})
\ No newline at end of file
diff --git a/js/ace/snippets/snippets.js b/js/ace/snippets/snippets.js
new file mode 100644
index 0000000..8f2d037
--- /dev/null
+++ b/js/ace/snippets/snippets.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/snippets",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# snippets for making snippets :)\nsnippet snip\n	snippet ${1:trigger}\n		${2}\nsnippet msnip\n	snippet ${1:trigger} ${2:description}\n		${3}\nsnippet v\n	{VISUAL}\n",t.scope="snippets"})
\ No newline at end of file
diff --git a/js/ace/snippets/soy_template.js b/js/ace/snippets/soy_template.js
new file mode 100644
index 0000000..710cee6
--- /dev/null
+++ b/js/ace/snippets/soy_template.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/soy_template",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="soy_template"})
\ No newline at end of file
diff --git a/js/ace/snippets/space.js b/js/ace/snippets/space.js
new file mode 100644
index 0000000..8bc916b
--- /dev/null
+++ b/js/ace/snippets/space.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/space",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="space"})
\ No newline at end of file
diff --git a/js/ace/snippets/sql.js b/js/ace/snippets/sql.js
new file mode 100644
index 0000000..1bacce0
--- /dev/null
+++ b/js/ace/snippets/sql.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/sql",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet tbl\n	create table ${1:table} (\n		${2:columns}\n	);\nsnippet col\n	${1:name}	${2:type}	${3:default ''}	${4:not null}\nsnippet ccol\n	${1:name}	varchar2(${2:size})	${3:default ''}	${4:not null}\nsnippet ncol\n	${1:name}	number	${3:default 0}	${4:not null}\nsnippet dcol\n	${1:name}	date	${3:default sysdate}	${4:not null}\nsnippet ind\n	create index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n	create unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n	comment on table ${1:table} is '${2:comment}';\nsnippet colcom\n	comment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n	alter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n	create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n	select * from ${1:table}\n",t.scope="sql"})
\ No newline at end of file
diff --git a/js/ace/snippets/stylus.js b/js/ace/snippets/stylus.js
new file mode 100644
index 0000000..1da9d77
--- /dev/null
+++ b/js/ace/snippets/stylus.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/stylus",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="stylus"})
\ No newline at end of file
diff --git a/js/ace/snippets/svg.js b/js/ace/snippets/svg.js
new file mode 100644
index 0000000..26d9b1a
--- /dev/null
+++ b/js/ace/snippets/svg.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/svg",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="svg"})
\ No newline at end of file
diff --git a/js/ace/snippets/tcl.js b/js/ace/snippets/tcl.js
new file mode 100644
index 0000000..69ccc25
--- /dev/null
+++ b/js/ace/snippets/tcl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/tcl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="# #!/usr/bin/env tclsh\nsnippet #!\n	#!/usr/bin/env tclsh\n	\n# Process\nsnippet pro\n	proc ${1:function_name} {${2:args}} {\n		${3:#body ...}\n	}\n#xif\nsnippet xif\n	${1:expr}? ${2:true} : ${3:false}\n# Conditional\nsnippet if\n	if {${1}} {\n		${2:# body...}\n	}\n# Conditional if..else\nsnippet ife\n	if {${1}} {\n		${2:# body...}\n	} else {\n		${3:# else...}\n	}\n# Conditional if..elsif..else\nsnippet ifee\n	if {${1}} {\n		${2:# body...}\n	} elseif {${3}} {\n		${4:# elsif...}\n	} else {\n		${5:# else...}\n	}\n# If catch then\nsnippet ifc\n	if { [catch {${1:#do something...}} ${2:err}] } {\n		${3:# handle failure...}\n	}\n# Catch\nsnippet catch\n	catch {${1}} ${2:err} ${3:options}\n# While Loop\nsnippet wh\n	while {${1}} {\n		${2:# body...}\n	}\n# For Loop\nsnippet for\n	for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n		${4:# body...}\n	}\n# Foreach Loop\nsnippet fore\n	foreach ${1:x} {${2:#list}} {\n		${3:# body...}\n	}\n# after ms script...\nsnippet af\n	after ${1:ms} ${2:#do something}\n# after cancel id\nsnippet afc\n	after cancel ${1:id or script}\n# after idle\nsnippet afi\n	after idle ${1:script}\n# after info id\nsnippet afin\n	after info ${1:id}\n# Expr\nsnippet exp\n	expr {${1:#expression here}}\n# Switch\nsnippet sw\n	switch ${1:var} {\n		${3:pattern 1} {\n			${4:#do something}\n		}\n		default {\n			${2:#do something}\n		}\n	}\n# Case\nsnippet ca\n	${1:pattern} {\n		${2:#do something}\n	}${3}\n# Namespace eval\nsnippet ns\n	namespace eval ${1:path} {${2:#script...}}\n# Namespace current\nsnippet nsc\n	namespace current\n",t.scope="tcl"})
\ No newline at end of file
diff --git a/js/ace/snippets/tex.js b/js/ace/snippets/tex.js
new file mode 100644
index 0000000..99d058e
--- /dev/null
+++ b/js/ace/snippets/tex.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/tex",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="#PREAMBLE\n#newcommand\nsnippet nc\n	\\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n#usepackage\nsnippet up\n	\\usepackage[${1:[options}]{${2:package}}\n#newunicodechar\nsnippet nuc\n	\\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n#DeclareMathOperator\nsnippet dmo\n	\\DeclareMathOperator{${1}}{${2}}\n\n#DOCUMENT\n# \\begin{}...\\end{}\nsnippet begin\n	\\begin{${1:env}}\n		${2}\n	\\end{$1}\n# Tabular\nsnippet tab\n	\\begin{${1:tabular}}{${2:c}}\n	${3}\n	\\end{$1}\nsnippet thm\n	\\begin[${1:author}]{${2:thm}}\n	${3}\n	\\end{$1}\nsnippet center\n	\\begin{center}\n		${1}\n	\\end{center}\n# Align(ed)\nsnippet ali\n	\\begin{align${1:ed}}\n		${2}\n	\\end{align$1}\n# Gather(ed)\nsnippet gat\n	\\begin{gather${1:ed}}\n		${2}\n	\\end{gather$1}\n# Equation\nsnippet eq\n	\\begin{equation}\n		${1}\n	\\end{equation}\n# Equation\nsnippet eq*\n	\\begin{equation*}\n		${1}\n	\\end{equation*}\n# Unnumbered Equation\nsnippet \\\n	\\[\n		${1}\n	\\]\n# Enumerate\nsnippet enum\n	\\begin{enumerate}\n		\\item ${1}\n	\\end{enumerate}\n# Itemize\nsnippet itemize\n	\\begin{itemize}\n		\\item ${1}\n	\\end{itemize}\n# Description\nsnippet desc\n	\\begin{description}\n		\\item[${1}] ${2}\n	\\end{description}\n# Matrix\nsnippet mat\n	\\begin{${1:p/b/v/V/B/small}matrix}\n		${2}\n	\\end{$1matrix}\n# Cases\nsnippet cas\n	\\begin{cases}\n		${1:equation}, &\\text{ if }${2:case}\\\\\n		${3}\n	\\end{cases}\n# Split\nsnippet spl\n	\\begin{split}\n		${1}\n	\\end{split}\n# Part\nsnippet part\n	\\part{${1:part name}} % (fold)\n	\\label{prt:${2:$1}}\n	${3}\n	% part $2 (end)\n# Chapter\nsnippet cha\n	\\chapter{${1:chapter name}}\n	\\label{cha:${2:$1}}\n	${3}\n# Section\nsnippet sec\n	\\section{${1:section name}}\n	\\label{sec:${2:$1}}\n	${3}\n# Sub Section\nsnippet sub\n	\\subsection{${1:subsection name}}\n	\\label{sub:${2:$1}}\n	${3}\n# Sub Sub Section\nsnippet subs\n	\\subsubsection{${1:subsubsection name}}\n	\\label{ssub:${2:$1}}\n	${3}\n# Paragraph\nsnippet par\n	\\paragraph{${1:paragraph name}}\n	\\label{par:${2:$1}}\n	${3}\n# Sub Paragraph\nsnippet subp\n	\\subparagraph{${1:subparagraph name}}\n	\\label{subp:${2:$1}}\n	${3}\n#References\nsnippet itd\n	\\item[${1:description}] ${2:item}\nsnippet figure\n	${1:Figure}~\\ref{${2:fig:}}${3}\nsnippet table\n	${1:Table}~\\ref{${2:tab:}}${3}\nsnippet listing\n	${1:Listing}~\\ref{${2:list}}${3}\nsnippet section\n	${1:Section}~\\ref{${2:sec:}}${3}\nsnippet page\n	${1:page}~\\pageref{${2}}${3}\nsnippet index\n	\\index{${1:index}}${2}\n#Citations\nsnippet cite\n	\\cite[${1}]{${2}}${3}\nsnippet fcite\n	\\footcite[${1}]{${2}}${3}\n#Formating text: italic, bold, underline, small capital, emphase ..\nsnippet it\n	\\textit{${1:text}}\nsnippet bf\n	\\textbf{${1:text}}\nsnippet under\n	\\underline{${1:text}}\nsnippet emp\n	\\emph{${1:text}}\nsnippet sc\n	\\textsc{${1:text}}\n#Choosing font\nsnippet sf\n	\\textsf{${1:text}}\nsnippet rm\n	\\textrm{${1:text}}\nsnippet tt\n	\\texttt{${1:text}}\n#misc\nsnippet ft\n	\\footnote{${1:text}}\nsnippet fig\n	\\begin{figure}\n	\\begin{center}\n	    \\includegraphics[scale=${1}]{Figures/${2}}\n	\\end{center}\n	\\caption{${3}}\n	\\label{fig:${4}}\n	\\end{figure}\nsnippet tikz\n	\\begin{figure}\n	\\begin{center}\n	\\begin{tikzpicture}[scale=${1:1}]\n		${2}\n	\\end{tikzpicture}\n	\\end{center}\n	\\caption{${3}}\n	\\label{fig:${4}}\n	\\end{figure}\n#math\nsnippet stackrel\n	\\stackrel{${1:above}}{${2:below}} ${3}\nsnippet frac\n	\\frac{${1:num}}{${2:denom}}\nsnippet sum\n	\\sum^{${1:n}}_{${2:i=1}}{${3}}",t.scope="tex"})
\ No newline at end of file
diff --git a/js/ace/snippets/text.js b/js/ace/snippets/text.js
new file mode 100644
index 0000000..233803d
--- /dev/null
+++ b/js/ace/snippets/text.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/text",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="text"})
\ No newline at end of file
diff --git a/js/ace/snippets/textile.js b/js/ace/snippets/textile.js
new file mode 100644
index 0000000..cf4d5d5
--- /dev/null
+++ b/js/ace/snippets/textile.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/textile",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Jekyll post header\nsnippet header\n	---\n	title: ${1:title}\n	layout: post\n	date: ${2:date} ${3:hour:minute:second} -05:00\n	---\n\n# Image\nsnippet img\n	!${1:url}(${2:title}):${3:link}!\n\n# Table\nsnippet |\n	|${1}|${2}\n\n# Link\nsnippet link\n	"${1:link text}":${2:url}\n\n# Acronym\nsnippet (\n	(${1:Expand acronym})${2}\n\n# Footnote\nsnippet fn\n	[${1:ref number}] ${3}\n\n	fn$1. ${2:footnote}\n	\n',t.scope="textile"})
\ No newline at end of file
diff --git a/js/ace/snippets/toml.js b/js/ace/snippets/toml.js
new file mode 100644
index 0000000..8c3dbef
--- /dev/null
+++ b/js/ace/snippets/toml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/toml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="toml"})
\ No newline at end of file
diff --git a/js/ace/snippets/twig.js b/js/ace/snippets/twig.js
new file mode 100644
index 0000000..9c21046
--- /dev/null
+++ b/js/ace/snippets/twig.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/twig",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="twig"})
\ No newline at end of file
diff --git a/js/ace/snippets/typescript.js b/js/ace/snippets/typescript.js
new file mode 100644
index 0000000..5e6425e
--- /dev/null
+++ b/js/ace/snippets/typescript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/typescript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="typescript"})
\ No newline at end of file
diff --git a/js/ace/snippets/vala.js b/js/ace/snippets/vala.js
new file mode 100644
index 0000000..89927bc
--- /dev/null
+++ b/js/ace/snippets/vala.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/vala",["require","exports","module"],function(e,t,n){"use strict";t.snippets=[{content:"case ${1:condition}:\n	$0\n	break;\n",name:"case",scope:"vala",tabTrigger:"case"},{content:"/**\n * ${6}\n */\n${1:public} class ${2:MethodName}${3: : GLib.Object} {\n\n	/**\n	 * ${7}\n	 */\n	public ${2}(${4}) {\n		${5}\n	}\n\n	$0\n}",name:"class",scope:"vala",tabTrigger:"class"},{content:"(${1}) => {\n	${0}\n}\n",name:"closure",scope:"vala",tabTrigger:"=>"},{content:"/*\n * $0\n */",name:"Comment (multiline)",scope:"vala",tabTrigger:"/*"},{content:"Console.WriteLine($1);\n$0",name:"Console.WriteLine (writeline)",scope:"vala",tabTrigger:"writeline"},{content:'[DBus(name = "$0")]',name:"DBus annotation",scope:"vala",tabTrigger:"[DBus"},{content:"delegate ${1:void} ${2:DelegateName}($0);",name:"delegate",scope:"vala",tabTrigger:"delegate"},{content:"do {\n	$0\n} while ($1);\n",name:"do while",scope:"vala",tabTrigger:"dowhile"},{content:"/**\n * $0\n */",name:"DocBlock",scope:"vala",tabTrigger:"/**"},{content:"else if ($1) {\n	$0\n}\n",name:"else if (elseif)",scope:"vala",tabTrigger:"elseif"},{content:"else {\n	$0\n}",name:"else",scope:"vala",tabTrigger:"else"},{content:"enum {$1:EnumName} {\n	$0\n}",name:"enum",scope:"vala",tabTrigger:"enum"},{content:"public errordomain ${1:Error} {\n	$0\n}",name:"error domain",scope:"vala",tabTrigger:"errordomain"},{content:"for ($1;$2;$3) {\n	$0\n}",name:"for",scope:"vala",tabTrigger:"for"},{content:"foreach ($1 in $2) {\n	$0\n}",name:"foreach",scope:"vala",tabTrigger:"foreach"},{content:"Gee.ArrayList<${1:G}>($0);",name:"Gee.ArrayList",scope:"vala",tabTrigger:"ArrayList"},{content:"Gee.HashMap<${1:K},${2:V}>($0);",name:"Gee.HashMap",scope:"vala",tabTrigger:"HashMap"},{content:"Gee.HashSet<${1:G}>($0);",name:"Gee.HashSet",scope:"vala",tabTrigger:"HashSet"},{content:"if ($1) {\n	$0\n}",name:"if",scope:"vala",tabTrigger:"if"},{content:"interface ${1:InterfaceName}{$2: : SuperInterface} {\n	$0\n}",name:"interface",scope:"vala",tabTrigger:"interface"},{content:"public static int main(string [] argv) {\n	${0}\n	return 0;\n}",name:"Main function",scope:"vala",tabTrigger:"main"},{content:"namespace $1 {\n	$0\n}\n",name:"namespace (ns)",scope:"vala",tabTrigger:"ns"},{content:"stdout.printf($0);",name:"printf",scope:"vala",tabTrigger:"printf"},{content:"${1:public} ${2:Type} ${3:Name} {\n	set {\n		$0\n	}\n	get {\n\n	}\n}",name:"property (prop)",scope:"vala",tabTrigger:"prop"},{content:"${1:public} ${2:Type} ${3:Name} {\n	get {\n		$0\n	}\n}",name:"read-only property (roprop)",scope:"vala",tabTrigger:"roprop"},{content:'@"${1:\\$var}"',name:"String template (@)",scope:"vala",tabTrigger:"@"},{content:"struct ${1:StructName} {\n	$0\n}",name:"struct",scope:"vala",tabTrigger:"struct"},{content:"switch ($1) {\n	$0\n}",name:"switch",scope:"vala",tabTrigger:"switch"},{content:"try {\n	$2\n} catch (${1:Error} e) {\n	$0\n}",name:"try/catch",scope:"vala",tabTrigger:"try"},{content:'"""$0""";',name:'Verbatim string (""")',scope:"vala",tabTrigger:"verbatim"},{content:"while ($1) {\n	$0\n}",name:"while",scope:"vala",tabTrigger:"while"}],t.scope=""})
\ No newline at end of file
diff --git a/js/ace/snippets/vbscript.js b/js/ace/snippets/vbscript.js
new file mode 100644
index 0000000..1cf30b9
--- /dev/null
+++ b/js/ace/snippets/vbscript.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/vbscript",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vbscript"})
\ No newline at end of file
diff --git a/js/ace/snippets/velocity.js b/js/ace/snippets/velocity.js
new file mode 100644
index 0000000..9ab7789
--- /dev/null
+++ b/js/ace/snippets/velocity.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/velocity",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# macro\nsnippet #macro\n	#macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n		${3:## macro code}\n	#end\n# foreach\nsnippet #foreach\n	#foreach ( ${1:\\$item} in ${2:\\$collection} )\n		${3:## foreach code}\n	#end\n# if\nsnippet #if\n	#if ( ${1:true} )\n		${0}\n	#end\n# if ... else\nsnippet #ife\n	#if ( ${1:true} )\n		${2}\n	#else\n		${0}\n	#end\n#import\nsnippet #import\n	#import ( "${1:path/to/velocity/format}" )\n# set\nsnippet #set\n	#set ( $${1:var} = ${0} )\n',t.scope="velocity",t.includeScopes=["html","javascript","css"]})
\ No newline at end of file
diff --git a/js/ace/snippets/verilog.js b/js/ace/snippets/verilog.js
new file mode 100644
index 0000000..2c6f906
--- /dev/null
+++ b/js/ace/snippets/verilog.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/verilog",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="verilog"})
\ No newline at end of file
diff --git a/js/ace/snippets/vhdl.js b/js/ace/snippets/vhdl.js
new file mode 100644
index 0000000..c8d6fb9
--- /dev/null
+++ b/js/ace/snippets/vhdl.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/vhdl",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="vhdl"})
\ No newline at end of file
diff --git a/js/ace/snippets/xml.js b/js/ace/snippets/xml.js
new file mode 100644
index 0000000..e1c1b39
--- /dev/null
+++ b/js/ace/snippets/xml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/xml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="xml"})
\ No newline at end of file
diff --git a/js/ace/snippets/xquery.js b/js/ace/snippets/xquery.js
new file mode 100644
index 0000000..ea0f7ed
--- /dev/null
+++ b/js/ace/snippets/xquery.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/xquery",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='snippet for\n	for $${1:item} in ${2:expr}\nsnippet return\n	return ${1:expr}\nsnippet import\n	import module namespace ${1:ns} = "${2:http://www.example.com/}";\nsnippet some\n	some $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet every\n	every $${1:varname} in ${2:expr} satisfies ${3:expr}\nsnippet if\n	if(${1:true}) then ${2:expr} else ${3:true}\nsnippet switch\n	switch(${1:"foo"})\n	case ${2:"foo"}\n	return ${3:true}\n	default return ${4:false}\nsnippet try\n	try { ${1:expr} } catch ${2:*} { ${3:expr} }\nsnippet tumbling\n	for tumbling window $${1:varname} in ${2:expr}\n	start at $${3:start} when ${4:expr}\n	end at $${5:end} when ${6:expr}\n	return ${7:expr}\nsnippet sliding\n	for sliding window $${1:varname} in ${2:expr}\n	start at $${3:start} when ${4:expr}\n	end at $${5:end} when ${6:expr}\n	return ${7:expr}\nsnippet let\n	let $${1:varname} := ${2:expr}\nsnippet group\n	group by $${1:varname} := ${2:expr}\nsnippet order\n	order by ${1:expr} ${2:descending}\nsnippet stable\n	stable order by ${1:expr}\nsnippet count\n	count $${1:varname}\nsnippet ordered\n	ordered { ${1:expr} }\nsnippet unordered\n	unordered { ${1:expr} }\nsnippet treat \n	treat as ${1:expr}\nsnippet castable\n	castable as ${1:atomicType}\nsnippet cast\n	cast as ${1:atomicType}\nsnippet typeswitch\n	typeswitch(${1:expr})\n	case ${2:type}  return ${3:expr}\n	default return ${4:expr}\nsnippet var\n	declare variable $${1:varname} := ${2:expr};\nsnippet fn\n	declare function ${1:ns}:${2:name}(){\n	${3:expr}\n	};\nsnippet module\n	module namespace ${1:ns} = "${2:http://www.example.com}";\n',t.scope="xquery"})
\ No newline at end of file
diff --git a/js/ace/snippets/yaml.js b/js/ace/snippets/yaml.js
new file mode 100644
index 0000000..80b5d3b
--- /dev/null
+++ b/js/ace/snippets/yaml.js
@@ -0,0 +1 @@
+ace.define("ace/snippets/yaml",["require","exports","module"],function(e,t,n){"use strict";t.snippetText=undefined,t.scope="yaml"})
\ No newline at end of file
diff --git a/js/ace/theme-ambiance.js b/js/ace/theme-ambiance.js
new file mode 100644
index 0000000..e7c0b6b
--- /dev/null
+++ b/js/ace/theme-ambiance.js
@@ -0,0 +1 @@
+ace.define("ace/theme/ambiance",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-ambiance",t.cssText=".ace-ambiance .ace_gutter {background-color: #3d3d3d;background-image: -moz-linear-gradient(left, #3D3D3D, #333);background-image: -ms-linear-gradient(left, #3D3D3D, #333);background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3D3D3D), to(#333));background-image: -webkit-linear-gradient(left, #3D3D3D, #333);background-image: -o-linear-gradient(left, #3D3D3D, #333);background-image: linear-gradient(left, #3D3D3D, #333);background-repeat: repeat-x;border-right: 1px solid #4d4d4d;text-shadow: 0px 1px 1px #4d4d4d;color: #222;}.ace-ambiance .ace_gutter-layer {background: repeat left top;}.ace-ambiance .ace_gutter-active-line {background-color: #3F3F3F;}.ace-ambiance .ace_fold-widget {text-align: center;}.ace-ambiance .ace_fold-widget:hover {color: #777;}.ace-ambiance .ace_fold-widget.ace_start,.ace-ambiance .ace_fold-widget.ace_end,.ace-ambiance .ace_fold-widget.ace_closed{background: none;border: none;box-shadow: none;}.ace-ambiance .ace_fold-widget.ace_start:after {content: '\u25be'}.ace-ambiance .ace_fold-widget.ace_end:after {content: '\u25b4'}.ace-ambiance .ace_fold-widget.ace_closed:after {content: '\u2023'}.ace-ambiance .ace_print-margin {border-left: 1px dotted #2D2D2D;right: 0;background: #262626;}.ace-ambiance .ace_scroller {-webkit-box-shadow: inset 0 0 10px black;-moz-box-shadow: inset 0 0 10px black;-o-box-shadow: inset 0 0 10px black;box-shadow: inset 0 0 10px black;}.ace-ambiance {color: #E6E1DC;background-color: #202020;}.ace-ambiance .ace_cursor {border-left: 1px solid #7991E8;}.ace-ambiance .ace_overwrite-cursors .ace_cursor {border: 1px solid #FFE300;background: #766B13;}.ace-ambiance.normal-mode .ace_cursor-layer {z-index: 0;}.ace-ambiance .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20);}.ace-ambiance .ace_marker-layer .ace_selected-word {border-radius: 4px;border: 8px solid #3f475d;box-shadow: 0 0 4px black;}.ace-ambiance .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-ambiance .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25);}.ace-ambiance .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031);}.ace-ambiance .ace_invisible {color: #333;}.ace-ambiance .ace_paren {color: #24C2C7;}.ace-ambiance .ace_keyword {color: #cda869;}.ace-ambiance .ace_keyword.ace_operator {color: #fa8d6a;}.ace-ambiance .ace_punctuation.ace_operator {color: #fa8d6a;}.ace-ambiance .ace_identifier {}.ace-ambiance .ace-statement {color: #cda869;}.ace-ambiance .ace_constant {color: #CF7EA9;}.ace-ambiance .ace_constant.ace_language {color: #CF7EA9;}.ace-ambiance .ace_constant.ace_library {}.ace-ambiance .ace_constant.ace_numeric {color: #78CF8A;}.ace-ambiance .ace_invalid {text-decoration: underline;}.ace-ambiance .ace_invalid.ace_illegal {color:#F8F8F8;background-color: rgba(86, 45, 86, 0.75);}.ace-ambiance .ace_invalid,.ace-ambiance .ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1;}.ace-ambiance .ace_support {color: #9B859D;}.ace-ambiance .ace_support.ace_function {color: #DAD085;}.ace-ambiance .ace_function.ace_buildin {color: #9b859d;}.ace-ambiance .ace_string {color: #8f9d6a;}.ace-ambiance .ace_string.ace_regexp {color: #DAD085;}.ace-ambiance .ace_comment {font-style: italic;color: #555;}.ace-ambiance .ace_comment.ace_doc {}.ace-ambiance .ace_comment.ace_doc.ace_tag {color: #666;font-style: normal;}.ace-ambiance .ace_definition,.ace-ambiance .ace_type {color: #aac6e3;}.ace-ambiance .ace_variable {color: #9999cc;}.ace-ambiance .ace_variable.ace_language {color: #9b859d;}.ace-ambiance .ace_xml-pe {color: #494949;}.ace-ambiance .ace_gutter-layer,.ace-ambiance .ace_text-layer {background-image: url(\"data:image/png;base64,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\");}.ace-ambiance .ace_indent-guide {background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-chaos.js b/js/ace/theme-chaos.js
new file mode 100644
index 0000000..fa5b75a
--- /dev/null
+++ b/js/ace/theme-chaos.js
@@ -0,0 +1 @@
+ace.define("ace/theme/chaos",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-chaos",t.cssText=".ace-chaos .ace_gutter {background: #141414;color: #595959;border-right: 1px solid #282828;}.ace-chaos .ace_gutter-cell.ace_warning {background-image: none;background: #FC0;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_gutter-cell.ace_error {background-position: -6px center;background-image: none;background: #F10;border-left: none;padding-left: 0;color: #000;}.ace-chaos .ace_print-margin {border-left: 1px solid #555;right: 0;background: #1D1D1D;}.ace-chaos {background-color: #161616;color: #E6E1DC;}.ace-chaos .ace_cursor {border-left: 2px solid #FFFFFF;}.ace-chaos .ace_cursor.ace_overwrite {border-left: 0px;border-bottom: 1px solid #FFFFFF;}.ace-chaos .ace_marker-layer .ace_selection {background: #494836;}.ace-chaos .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-chaos .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #FCE94F;}.ace-chaos .ace_marker-layer .ace_active-line {background: #333;}.ace-chaos .ace_gutter-active-line {background-color: #222;}.ace-chaos .ace_invisible {color: #404040;}.ace-chaos .ace_keyword {color:#00698F;}.ace-chaos .ace_keyword.ace_operator {color:#FF308F;}.ace-chaos .ace_constant {color:#1EDAFB;}.ace-chaos .ace_constant.ace_language {color:#FDC251;}.ace-chaos .ace_constant.ace_library {color:#8DFF0A;}.ace-chaos .ace_constant.ace_numeric {color:#58C554;}.ace-chaos .ace_invalid {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_invalid.ace_deprecated {color:#FFFFFF;background-color:#990000;}.ace-chaos .ace_support {color: #999;}.ace-chaos .ace_support.ace_function {color:#00AEEF;}.ace-chaos .ace_function {color:#00AEEF;}.ace-chaos .ace_string {color:#58C554;}.ace-chaos .ace_comment {color:#555;font-style:italic;padding-bottom: 0px;}.ace-chaos .ace_variable {color:#997744;}.ace-chaos .ace_meta.ace_tag {color:#BE53E6;}.ace-chaos .ace_entity.ace_other.ace_attribute-name {color:#FFFF89;}.ace-chaos .ace_markup.ace_underline {text-decoration: underline;}.ace-chaos .ace_fold-widget {text-align: center;}.ace-chaos .ace_fold-widget:hover {color: #777;}.ace-chaos .ace_fold-widget.ace_start,.ace-chaos .ace_fold-widget.ace_end,.ace-chaos .ace_fold-widget.ace_closed{background: none;border: none;box-shadow: none;}.ace-chaos .ace_fold-widget.ace_start:after {content: '\u25be'}.ace-chaos .ace_fold-widget.ace_end:after {content: '\u25b4'}.ace-chaos .ace_fold-widget.ace_closed:after {content: '\u2023'}.ace-chaos .ace_indent-guide {border-right:1px dotted #333;margin-right:-1px;}.ace-chaos .ace_fold { background: #222; border-radius: 3px; color: #7AF; border: none; }.ace-chaos .ace_fold:hover {background: #CCC; color: #000;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-chrome.js b/js/ace/theme-chrome.js
new file mode 100644
index 0000000..29b01c7
--- /dev/null
+++ b/js/ace/theme-chrome.js
@@ -0,0 +1 @@
+ace.define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-clouds.js b/js/ace/theme-clouds.js
new file mode 100644
index 0000000..c04b8d1
--- /dev/null
+++ b/js/ace/theme-clouds.js
@@ -0,0 +1 @@
+ace.define("ace/theme/clouds",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-clouds",t.cssText='.ace-clouds .ace_gutter {background: #ebebeb;color: #333}.ace-clouds .ace_print-margin {width: 1px;background: #e8e8e8}.ace-clouds {background-color: #FFFFFF;color: #000000}.ace-clouds .ace_cursor {color: #000000}.ace-clouds .ace_marker-layer .ace_selection {background: #BDD5FC}.ace-clouds.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-clouds .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-clouds .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds .ace_marker-layer .ace_active-line {background: #FFFBD1}.ace-clouds .ace_gutter-active-line {background-color : #dcdcdc}.ace-clouds .ace_marker-layer .ace_selected-word {border: 1px solid #BDD5FC}.ace-clouds .ace_invisible {color: #BFBFBF}.ace-clouds .ace_keyword,.ace-clouds .ace_meta,.ace-clouds .ace_support.ace_constant.ace_property-value {color: #AF956F}.ace-clouds .ace_keyword.ace_operator {color: #484848}.ace-clouds .ace_keyword.ace_other.ace_unit {color: #96DC5F}.ace-clouds .ace_constant.ace_language {color: #39946A}.ace-clouds .ace_constant.ace_numeric {color: #46A609}.ace-clouds .ace_constant.ace_character.ace_entity {color: #BF78CC}.ace-clouds .ace_invalid {background-color: #FF002A}.ace-clouds .ace_fold {background-color: #AF956F;border-color: #000000}.ace-clouds .ace_storage,.ace-clouds .ace_support.ace_class,.ace-clouds .ace_support.ace_function,.ace-clouds .ace_support.ace_other,.ace-clouds .ace_support.ace_type {color: #C52727}.ace-clouds .ace_string {color: #5D90CD}.ace-clouds .ace_comment {color: #BCC8BA}.ace-clouds .ace_entity.ace_name.ace_tag,.ace-clouds .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-clouds_midnight.js b/js/ace/theme-clouds_midnight.js
new file mode 100644
index 0000000..7427807
--- /dev/null
+++ b/js/ace/theme-clouds_midnight.js
@@ -0,0 +1 @@
+ace.define("ace/theme/clouds_midnight",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-clouds-midnight",t.cssText=".ace-clouds-midnight .ace_gutter {background: #232323;color: #929292}.ace-clouds-midnight .ace_print-margin {width: 1px;background: #232323}.ace-clouds-midnight {background-color: #191919;color: #929292}.ace-clouds-midnight .ace_cursor {color: #7DA5DC}.ace-clouds-midnight .ace_marker-layer .ace_selection {background: #000000}.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #191919;border-radius: 2px}.ace-clouds-midnight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-clouds-midnight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-clouds-midnight .ace_marker-layer .ace_active-line {background: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_gutter-active-line {background-color: rgba(215, 215, 215, 0.031)}.ace-clouds-midnight .ace_marker-layer .ace_selected-word {border: 1px solid #000000}.ace-clouds-midnight .ace_invisible {color: #BFBFBF}.ace-clouds-midnight .ace_keyword,.ace-clouds-midnight .ace_meta,.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {color: #927C5D}.ace-clouds-midnight .ace_keyword.ace_operator {color: #4B4B4B}.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {color: #366F1A}.ace-clouds-midnight .ace_constant.ace_language {color: #39946A}.ace-clouds-midnight .ace_constant.ace_numeric {color: #46A609}.ace-clouds-midnight .ace_constant.ace_character.ace_entity {color: #A165AC}.ace-clouds-midnight .ace_invalid {color: #FFFFFF;background-color: #E92E2E}.ace-clouds-midnight .ace_fold {background-color: #927C5D;border-color: #929292}.ace-clouds-midnight .ace_storage,.ace-clouds-midnight .ace_support.ace_class,.ace-clouds-midnight .ace_support.ace_function,.ace-clouds-midnight .ace_support.ace_other,.ace-clouds-midnight .ace_support.ace_type {color: #E92E2E}.ace-clouds-midnight .ace_string {color: #5D90CD}.ace-clouds-midnight .ace_comment {color: #3C403B}.ace-clouds-midnight .ace_entity.ace_name.ace_tag,.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {color: #606060}.ace-clouds-midnight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-cobalt.js b/js/ace/theme-cobalt.js
new file mode 100644
index 0000000..10e10eb
--- /dev/null
+++ b/js/ace/theme-cobalt.js
@@ -0,0 +1 @@
+ace.define("ace/theme/cobalt",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-cobalt",t.cssText=".ace-cobalt .ace_gutter {background: #011e3a;color: rgb(128,145,160)}.ace-cobalt .ace_print-margin {width: 1px;background: #011e3a}.ace-cobalt {background-color: #002240;color: #FFFFFF}.ace-cobalt .ace_cursor {color: #FFFFFF}.ace-cobalt .ace_marker-layer .ace_selection {background: rgba(179, 101, 57, 0.75)}.ace-cobalt.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002240;border-radius: 2px}.ace-cobalt .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-cobalt .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.35)}.ace-cobalt .ace_marker-layer .ace_selected-word {border: 1px solid rgba(179, 101, 57, 0.75)}.ace-cobalt .ace_invisible {color: rgba(255, 255, 255, 0.15)}.ace-cobalt .ace_keyword,.ace-cobalt .ace_meta {color: #FF9D00}.ace-cobalt .ace_constant,.ace-cobalt .ace_constant.ace_character,.ace-cobalt .ace_constant.ace_character.ace_escape,.ace-cobalt .ace_constant.ace_other {color: #FF628C}.ace-cobalt .ace_invalid {color: #F8F8F8;background-color: #800F00}.ace-cobalt .ace_support {color: #80FFBB}.ace-cobalt .ace_support.ace_constant {color: #EB939A}.ace-cobalt .ace_fold {background-color: #FF9D00;border-color: #FFFFFF}.ace-cobalt .ace_support.ace_function {color: #FFB054}.ace-cobalt .ace_storage {color: #FFEE80}.ace-cobalt .ace_entity {color: #FFDD00}.ace-cobalt .ace_string {color: #3AD900}.ace-cobalt .ace_string.ace_regexp {color: #80FFC2}.ace-cobalt .ace_comment {font-style: italic;color: #0088FF}.ace-cobalt .ace_heading,.ace-cobalt .ace_markup.ace_heading {color: #C8E4FD;background-color: #001221}.ace-cobalt .ace_list,.ace-cobalt .ace_markup.ace_list {background-color: #130D26}.ace-cobalt .ace_variable {color: #CCCCCC}.ace-cobalt .ace_variable.ace_language {color: #FF80E1}.ace-cobalt .ace_meta.ace_tag {color: #9EFFFF}.ace-cobalt .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-crimson_editor.js b/js/ace/theme-crimson_editor.js
new file mode 100644
index 0000000..9e3653e
--- /dev/null
+++ b/js/ace/theme-crimson_editor.js
@@ -0,0 +1 @@
+ace.define("ace/theme/crimson_editor",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssText='.ace-crimson-editor .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-crimson-editor .ace_gutter-layer {width: 100%;text-align: right;}.ace-crimson-editor .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-crimson-editor {background-color: #FFFFFF;color: rgb(64, 64, 64);}.ace-crimson-editor .ace_cursor {color: black;}.ace-crimson-editor .ace_invisible {color: rgb(191, 191, 191);}.ace-crimson-editor .ace_identifier {color: black;}.ace-crimson-editor .ace_keyword {color: blue;}.ace-crimson-editor .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-crimson-editor .ace_constant.ace_language {color: rgb(255, 156, 0);}.ace-crimson-editor .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_invalid {text-decoration: line-through;color: rgb(224, 0, 0);}.ace-crimson-editor .ace_fold {}.ace-crimson-editor .ace_support.ace_function {color: rgb(192, 0, 0);}.ace-crimson-editor .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-crimson-editor .ace_support.ace_type,.ace-crimson-editor .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-crimson-editor .ace_keyword.ace_operator {color: rgb(49, 132, 149);}.ace-crimson-editor .ace_string {color: rgb(128, 0, 128);}.ace-crimson-editor .ace_comment {color: rgb(76, 136, 107);}.ace-crimson-editor .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-crimson-editor .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-crimson-editor .ace_constant.ace_numeric {color: rgb(0, 0, 64);}.ace-crimson-editor .ace_variable {color: rgb(0, 64, 128);}.ace-crimson-editor .ace_xml-pe {color: rgb(104, 104, 91);}.ace-crimson-editor .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-crimson-editor .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-crimson-editor .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-crimson-editor .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-crimson-editor .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254);}.ace-crimson-editor .ace_gutter-active-line {background-color : #dcdcdc;}.ace-crimson-editor .ace_meta.ace_tag {color:rgb(28, 2, 255);}.ace-crimson-editor .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-crimson-editor .ace_string.ace_regex {color: rgb(192, 0, 192);}.ace-crimson-editor .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-crimson-editor";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-dawn.js b/js/ace/theme-dawn.js
new file mode 100644
index 0000000..79ca2f1
--- /dev/null
+++ b/js/ace/theme-dawn.js
@@ -0,0 +1 @@
+ace.define("ace/theme/dawn",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dawn",t.cssText=".ace-dawn .ace_gutter {background: #ebebeb;color: #333}.ace-dawn .ace_print-margin {width: 1px;background: #e8e8e8}.ace-dawn {background-color: #F9F9F9;color: #080808}.ace-dawn .ace_cursor {color: #000000}.ace-dawn .ace_marker-layer .ace_selection {background: rgba(39, 95, 255, 0.30)}.ace-dawn.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #F9F9F9;border-radius: 2px}.ace-dawn .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-dawn .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(75, 75, 126, 0.50)}.ace-dawn .ace_marker-layer .ace_active-line {background: rgba(36, 99, 180, 0.12)}.ace-dawn .ace_gutter-active-line {background-color : #dcdcdc}.ace-dawn .ace_marker-layer .ace_selected-word {border: 1px solid rgba(39, 95, 255, 0.30)}.ace-dawn .ace_invisible {color: rgba(75, 75, 126, 0.50)}.ace-dawn .ace_keyword,.ace-dawn .ace_meta {color: #794938}.ace-dawn .ace_constant,.ace-dawn .ace_constant.ace_character,.ace-dawn .ace_constant.ace_character.ace_escape,.ace-dawn .ace_constant.ace_other {color: #811F24}.ace-dawn .ace_invalid.ace_illegal {text-decoration: underline;font-style: italic;color: #F8F8F8;background-color: #B52A1D}.ace-dawn .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #B52A1D}.ace-dawn .ace_support {color: #691C97}.ace-dawn .ace_support.ace_constant {color: #B4371F}.ace-dawn .ace_fold {background-color: #794938;border-color: #080808}.ace-dawn .ace_list,.ace-dawn .ace_markup.ace_list,.ace-dawn .ace_support.ace_function {color: #693A17}.ace-dawn .ace_storage {font-style: italic;color: #A71D5D}.ace-dawn .ace_string {color: #0B6125}.ace-dawn .ace_string.ace_regexp {color: #CF5628}.ace-dawn .ace_comment {font-style: italic;color: #5A525F}.ace-dawn .ace_heading,.ace-dawn .ace_markup.ace_heading {color: #19356D}.ace-dawn .ace_variable {color: #234A97}.ace-dawn .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-dreamweaver.js b/js/ace/theme-dreamweaver.js
new file mode 100644
index 0000000..618cbae
--- /dev/null
+++ b/js/ace/theme-dreamweaver.js
@@ -0,0 +1 @@
+ace.define("ace/theme/dreamweaver",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-dreamweaver",t.cssText='.ace-dreamweaver .ace_gutter {background: #e8e8e8;color: #333;}.ace-dreamweaver .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-dreamweaver {background-color: #FFFFFF;color: black;}.ace-dreamweaver .ace_fold {background-color: #757AD8;}.ace-dreamweaver .ace_cursor {color: black;}.ace-dreamweaver .ace_invisible {color: rgb(191, 191, 191);}.ace-dreamweaver .ace_storage,.ace-dreamweaver .ace_keyword {color: blue;}.ace-dreamweaver .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-dreamweaver .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-dreamweaver .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-dreamweaver .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-dreamweaver .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-dreamweaver .ace_support.ace_type,.ace-dreamweaver .ace_support.ace_class {color: #009;}.ace-dreamweaver .ace_support.ace_php_tag {color: #f00;}.ace-dreamweaver .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-dreamweaver .ace_string {color: #00F;}.ace-dreamweaver .ace_comment {color: rgb(76, 136, 107);}.ace-dreamweaver .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-dreamweaver .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-dreamweaver .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-dreamweaver .ace_variable {color: #06F}.ace-dreamweaver .ace_xml-pe {color: rgb(104, 104, 91);}.ace-dreamweaver .ace_entity.ace_name.ace_function {color: #00F;}.ace-dreamweaver .ace_heading {color: rgb(12, 7, 255);}.ace-dreamweaver .ace_list {color:rgb(185, 6, 144);}.ace-dreamweaver .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-dreamweaver .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-dreamweaver .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-dreamweaver .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-dreamweaver .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-dreamweaver .ace_gutter-active-line {background-color : #DCDCDC;}.ace-dreamweaver .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-dreamweaver .ace_meta.ace_tag {color:#009;}.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {color:#060;}.ace-dreamweaver .ace_meta.ace_tag.ace_form {color:#F90;}.ace-dreamweaver .ace_meta.ace_tag.ace_image {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_script {color:#900;}.ace-dreamweaver .ace_meta.ace_tag.ace_style {color:#909;}.ace-dreamweaver .ace_meta.ace_tag.ace_table {color:#099;}.ace-dreamweaver .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-dreamweaver .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-eclipse.js b/js/ace/theme-eclipse.js
new file mode 100644
index 0000000..b15aeec
--- /dev/null
+++ b/js/ace/theme-eclipse.js
@@ -0,0 +1 @@
+ace.define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssText='.ace-eclipse .ace_gutter {background: #ebebeb;border-right: 1px solid rgb(159, 159, 159);color: rgb(136, 136, 136);}.ace-eclipse .ace_print-margin {width: 1px;background: #ebebeb;}.ace-eclipse {background-color: #FFFFFF;color: black;}.ace-eclipse .ace_fold {background-color: rgb(60, 76, 114);}.ace-eclipse .ace_cursor {color: black;}.ace-eclipse .ace_storage,.ace-eclipse .ace_keyword,.ace-eclipse .ace_variable {color: rgb(127, 0, 85);}.ace-eclipse .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-eclipse .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-eclipse .ace_function {color: rgb(60, 76, 114);}.ace-eclipse .ace_string {color: rgb(42, 0, 255);}.ace-eclipse .ace_comment {color: rgb(113, 150, 130);}.ace-eclipse .ace_comment.ace_doc {color: rgb(63, 95, 191);}.ace-eclipse .ace_comment.ace_doc.ace_tag {color: rgb(127, 159, 191);}.ace-eclipse .ace_constant.ace_numeric {color: darkblue;}.ace-eclipse .ace_tag {color: rgb(25, 118, 116);}.ace-eclipse .ace_type {color: rgb(127, 0, 127);}.ace-eclipse .ace_xml-pe {color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_meta.ace_tag {color:rgb(25, 118, 116);}.ace-eclipse .ace_invisible {color: #ddd;}.ace-eclipse .ace_entity.ace_other.ace_attribute-name {color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_step {background: rgb(255, 255, 0);}.ace-eclipse .ace_active-line {background: rgb(232, 242, 254);}.ace-eclipse .ace_gutter-active-line {background-color : #DADADA;}.ace-eclipse .ace_marker-layer .ace_selected-word {border: 1px solid rgb(181, 213, 255);}.ace-eclipse .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.cssClass="ace-eclipse";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-github.js b/js/ace/theme-github.js
new file mode 100644
index 0000000..56ee219
--- /dev/null
+++ b/js/ace/theme-github.js
@@ -0,0 +1 @@
+ace.define("ace/theme/github",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-github",t.cssText='.ace-github .ace_gutter {background: #e8e8e8;color: #AAA;}.ace-github  {background: #fff;color: #000;}.ace-github .ace_keyword {font-weight: bold;}.ace-github .ace_string {color: #D14;}.ace-github .ace_variable.ace_class {color: teal;}.ace-github .ace_constant.ace_numeric {color: #099;}.ace-github .ace_constant.ace_buildin {color: #0086B3;}.ace-github .ace_support.ace_function {color: #0086B3;}.ace-github .ace_comment {color: #998;font-style: italic;}.ace-github .ace_variable.ace_language  {color: #0086B3;}.ace-github .ace_paren {font-weight: bold;}.ace-github .ace_boolean {font-weight: bold;}.ace-github .ace_string.ace_regexp {color: #009926;font-weight: normal;}.ace-github .ace_variable.ace_instance {color: teal;}.ace-github .ace_constant.ace_language {font-weight: bold;}.ace-github .ace_cursor {color: black;}.ace-github .ace_marker-layer .ace_active-line {background: rgb(255, 255, 204);}.ace-github .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-github.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-github.ace_nobold .ace_line > span {font-weight: normal !important;}.ace-github .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-github .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-github .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-github .ace_gutter-active-line {background-color : rgba(0, 0, 0, 0.07);}.ace-github .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-github .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-github .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-idle_fingers.js b/js/ace/theme-idle_fingers.js
new file mode 100644
index 0000000..d66d1bd
--- /dev/null
+++ b/js/ace/theme-idle_fingers.js
@@ -0,0 +1 @@
+ace.define("ace/theme/idle_fingers",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-idle-fingers",t.cssText=".ace-idle-fingers .ace_gutter {background: #3b3b3b;color: rgb(153,153,153)}.ace-idle-fingers .ace_print-margin {width: 1px;background: #3b3b3b}.ace-idle-fingers {background-color: #323232;color: #FFFFFF}.ace-idle-fingers .ace_cursor {color: #91FF00}.ace-idle-fingers .ace_marker-layer .ace_selection {background: rgba(90, 100, 126, 0.88)}.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #323232;border-radius: 2px}.ace-idle-fingers .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-idle-fingers .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-idle-fingers .ace_marker-layer .ace_active-line {background: #353637}.ace-idle-fingers .ace_gutter-active-line {background-color: #353637}.ace-idle-fingers .ace_marker-layer .ace_selected-word {border: 1px solid rgba(90, 100, 126, 0.88)}.ace-idle-fingers .ace_invisible {color: #404040}.ace-idle-fingers .ace_keyword,.ace-idle-fingers .ace_meta {color: #CC7833}.ace-idle-fingers .ace_constant,.ace-idle-fingers .ace_constant.ace_character,.ace-idle-fingers .ace_constant.ace_character.ace_escape,.ace-idle-fingers .ace_constant.ace_other,.ace-idle-fingers .ace_support.ace_constant {color: #6C99BB}.ace-idle-fingers .ace_invalid {color: #FFFFFF;background-color: #FF0000}.ace-idle-fingers .ace_fold {background-color: #CC7833;border-color: #FFFFFF}.ace-idle-fingers .ace_support.ace_function {color: #B83426}.ace-idle-fingers .ace_variable.ace_parameter {font-style: italic}.ace-idle-fingers .ace_string {color: #A5C261}.ace-idle-fingers .ace_string.ace_regexp {color: #CCCC33}.ace-idle-fingers .ace_comment {font-style: italic;color: #BC9458}.ace-idle-fingers .ace_meta.ace_tag {color: #FFE5BB}.ace-idle-fingers .ace_entity.ace_name {color: #FFC66D}.ace-idle-fingers .ace_collab.ace_user1 {color: #323232;background-color: #FFF980}.ace-idle-fingers .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-katzenmilch.js b/js/ace/theme-katzenmilch.js
new file mode 100644
index 0000000..7d72938
--- /dev/null
+++ b/js/ace/theme-katzenmilch.js
@@ -0,0 +1 @@
+ace.define("ace/theme/katzenmilch",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-katzenmilch",t.cssText=".ace-katzenmilch .ace_gutter,.ace-katzenmilch .ace_gutter {background: #e8e8e8;color: #333}.ace-katzenmilch .ace_print-margin {width: 1px;background: #e8e8e8}.ace-katzenmilch {background-color: #f3f2f3;color: rgba(15, 0, 9, 1.0)}.ace-katzenmilch .ace_cursor {border-left: 2px solid #100011}.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {border-left: 0px;border-bottom: 1px solid #100011}.ace-katzenmilch .ace_marker-layer .ace_selection {background: rgba(100, 5, 208, 0.27)}.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #f3f2f3;border-radius: 2px}.ace-katzenmilch .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-katzenmilch .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #000000}.ace-katzenmilch .ace_marker-layer .ace_active-line {background: rgb(232, 242, 254)}.ace-katzenmilch .ace_gutter-active-line {background-color: rgb(232, 242, 254)}.ace-katzenmilch .ace_marker-layer .ace_selected-word {border: 1px solid rgba(100, 5, 208, 0.27)}.ace-katzenmilch .ace_fold {background-color: rgba(2, 95, 73, 0.97);border-color: rgba(15, 0, 9, 1.0)}.ace-katzenmilch .ace_keyword {color: #674Aa8;rbackground-color: rgba(163, 170, 216, 0.055)}.ace-katzenmilch .ace_constant.ace_language {color: #7D7e52;rbackground-color: rgba(189, 190, 130, 0.059)}.ace-katzenmilch .ace_constant.ace_numeric {color: rgba(79, 130, 123, 0.93);rbackground-color: rgba(119, 194, 187, 0.059)}.ace-katzenmilch .ace_constant.ace_character,.ace-katzenmilch .ace_constant.ace_other {color: rgba(2, 95, 105, 1.0);rbackground-color: rgba(127, 34, 153, 0.063)}.ace-katzenmilch .ace_support.ace_function {color: #9D7e62;rbackground-color: rgba(189, 190, 130, 0.039)}.ace-katzenmilch .ace_support.ace_class {color: rgba(239, 106, 167, 1.0);rbackground-color: rgba(239, 106, 167, 0.063)}.ace-katzenmilch .ace_storage {color: rgba(123, 92, 191, 1.0);rbackground-color: rgba(139, 93, 223, 0.051)}.ace-katzenmilch .ace_invalid {color: #DFDFD5;rbackground-color: #CC1B27}.ace-katzenmilch .ace_string {color: #5a5f9b;rbackground-color: rgba(170, 175, 219, 0.035)}.ace-katzenmilch .ace_comment {font-style: italic;color: rgba(64, 79, 80, 0.67);rbackground-color: rgba(95, 15, 255, 0.0078)}.ace-katzenmilch .ace_entity.ace_name.ace_function,.ace-katzenmilch .ace_variable {color: rgba(2, 95, 73, 0.97);rbackground-color: rgba(34, 255, 73, 0.12)}.ace-katzenmilch .ace_variable.ace_language {color: #316fcf;rbackground-color: rgba(58, 175, 255, 0.039)}.ace-katzenmilch .ace_variable.ace_parameter {font-style: italic;color: rgba(51, 150, 159, 0.87);rbackground-color: rgba(5, 214, 249, 0.043)}.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {color: rgba(73, 70, 194, 0.93);rbackground-color: rgba(73, 134, 194, 0.035)}.ace-katzenmilch .ace_entity.ace_name.ace_tag {color: #3976a2;rbackground-color: rgba(73, 166, 210, 0.039)}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-kr_theme.js b/js/ace/theme-kr_theme.js
new file mode 100644
index 0000000..5f5a402
--- /dev/null
+++ b/js/ace/theme-kr_theme.js
@@ -0,0 +1 @@
+ace.define("ace/theme/kr_theme",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-kr-theme",t.cssText=".ace-kr-theme .ace_gutter {background: #1c1917;color: #FCFFE0}.ace-kr-theme .ace_print-margin {width: 1px;background: #1c1917}.ace-kr-theme {background-color: #0B0A09;color: #FCFFE0}.ace-kr-theme .ace_cursor {color: #FF9900}.ace-kr-theme .ace_marker-layer .ace_selection {background: rgba(170, 0, 255, 0.45)}.ace-kr-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0B0A09;border-radius: 2px}.ace-kr-theme .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-kr-theme .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_marker-layer .ace_active-line {background: #38403D}.ace-kr-theme .ace_gutter-active-line {background-color : #38403D}.ace-kr-theme .ace_marker-layer .ace_selected-word {border: 1px solid rgba(170, 0, 255, 0.45)}.ace-kr-theme .ace_invisible {color: rgba(255, 177, 111, 0.32)}.ace-kr-theme .ace_keyword,.ace-kr-theme .ace_meta {color: #949C8B}.ace-kr-theme .ace_constant,.ace-kr-theme .ace_constant.ace_character,.ace-kr-theme .ace_constant.ace_character.ace_escape,.ace-kr-theme .ace_constant.ace_other {color: rgba(210, 117, 24, 0.76)}.ace-kr-theme .ace_invalid {color: #F8F8F8;background-color: #A41300}.ace-kr-theme .ace_support {color: #9FC28A}.ace-kr-theme .ace_support.ace_constant {color: #C27E66}.ace-kr-theme .ace_fold {background-color: #949C8B;border-color: #FCFFE0}.ace-kr-theme .ace_support.ace_function {color: #85873A}.ace-kr-theme .ace_storage {color: #FFEE80}.ace-kr-theme .ace_string {color: rgba(164, 161, 181, 0.8)}.ace-kr-theme .ace_string.ace_regexp {color: rgba(125, 255, 192, 0.65)}.ace-kr-theme .ace_comment {font-style: italic;color: #706D5B}.ace-kr-theme .ace_variable {color: #D1A796}.ace-kr-theme .ace_list,.ace-kr-theme .ace_markup.ace_list {background-color: #0F0040}.ace-kr-theme .ace_variable.ace_language {color: #FF80E1}.ace-kr-theme .ace_meta.ace_tag {color: #BABD9C}.ace-kr-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-kuroir.js b/js/ace/theme-kuroir.js
new file mode 100644
index 0000000..9cc8c07
--- /dev/null
+++ b/js/ace/theme-kuroir.js
@@ -0,0 +1 @@
+ace.define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-kuroir",t.cssText=".ace-kuroir .ace_gutter {background: #e8e8e8;color: #333;}.ace-kuroir .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-kuroir {background-color: #E8E9E8;color: #363636;}.ace-kuroir .ace_cursor {color: #202020;}.ace-kuroir .ace_marker-layer .ace_selection {background: rgba(245, 170, 0, 0.57);}.ace-kuroir.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #E8E9E8;border-radius: 2px;}.ace-kuroir .ace_marker-layer .ace_step {background: rgb(198, 219, 174);}.ace-kuroir .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(0, 0, 0, 0.29);}.ace-kuroir .ace_marker-layer .ace_active-line {background: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_gutter-active-line {background-color: rgba(203, 220, 47, 0.22);}.ace-kuroir .ace_marker-layer .ace_selected-word {border: 1px solid rgba(245, 170, 0, 0.57);}.ace-kuroir .ace_fold {border-color: #363636;}.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;font-style:italic;color:#FD1732;background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-merbivore.js b/js/ace/theme-merbivore.js
new file mode 100644
index 0000000..bd1844e
--- /dev/null
+++ b/js/ace/theme-merbivore.js
@@ -0,0 +1 @@
+ace.define("ace/theme/merbivore",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore",t.cssText=".ace-merbivore .ace_gutter {background: #202020;color: #E6E1DC}.ace-merbivore .ace_print-margin {width: 1px;background: #555651}.ace-merbivore {background-color: #161616;color: #E6E1DC}.ace-merbivore .ace_cursor {color: #FFFFFF}.ace-merbivore .ace_marker-layer .ace_selection {background: #454545}.ace-merbivore.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #161616;border-radius: 2px}.ace-merbivore .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore .ace_gutter-active-line {background-color: #333435}.ace-merbivore .ace_marker-layer .ace_selected-word {border: 1px solid #454545}.ace-merbivore .ace_invisible {color: #404040}.ace-merbivore .ace_entity.ace_name.ace_tag,.ace-merbivore .ace_keyword,.ace-merbivore .ace_meta,.ace-merbivore .ace_meta.ace_tag,.ace-merbivore .ace_storage,.ace-merbivore .ace_support.ace_function {color: #FC6F09}.ace-merbivore .ace_constant,.ace-merbivore .ace_constant.ace_character,.ace-merbivore .ace_constant.ace_character.ace_escape,.ace-merbivore .ace_constant.ace_other,.ace-merbivore .ace_support.ace_type {color: #1EDAFB}.ace-merbivore .ace_constant.ace_character.ace_escape {color: #519F50}.ace-merbivore .ace_constant.ace_language {color: #FDC251}.ace-merbivore .ace_constant.ace_library,.ace-merbivore .ace_string,.ace-merbivore .ace_support.ace_constant {color: #8DFF0A}.ace-merbivore .ace_constant.ace_numeric {color: #58C554}.ace-merbivore .ace_invalid {color: #FFFFFF;background-color: #990000}.ace-merbivore .ace_fold {background-color: #FC6F09;border-color: #E6E1DC}.ace-merbivore .ace_comment {font-style: italic;color: #AD2EA4}.ace-merbivore .ace_entity.ace_other.ace_attribute-name {color: #FFFF89}.ace-merbivore .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-merbivore_soft.js b/js/ace/theme-merbivore_soft.js
new file mode 100644
index 0000000..6e21e7b
--- /dev/null
+++ b/js/ace/theme-merbivore_soft.js
@@ -0,0 +1 @@
+ace.define("ace/theme/merbivore_soft",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-merbivore-soft",t.cssText=".ace-merbivore-soft .ace_gutter {background: #262424;color: #E6E1DC}.ace-merbivore-soft .ace_print-margin {width: 1px;background: #262424}.ace-merbivore-soft {background-color: #1C1C1C;color: #E6E1DC}.ace-merbivore-soft .ace_cursor {color: #FFFFFF}.ace-merbivore-soft .ace_marker-layer .ace_selection {background: #494949}.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1C1C1C;border-radius: 2px}.ace-merbivore-soft .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-merbivore-soft .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-merbivore-soft .ace_marker-layer .ace_active-line {background: #333435}.ace-merbivore-soft .ace_gutter-active-line {background-color: #333435}.ace-merbivore-soft .ace_marker-layer .ace_selected-word {border: 1px solid #494949}.ace-merbivore-soft .ace_invisible {color: #404040}.ace-merbivore-soft .ace_entity.ace_name.ace_tag,.ace-merbivore-soft .ace_keyword,.ace-merbivore-soft .ace_meta,.ace-merbivore-soft .ace_meta.ace_tag,.ace-merbivore-soft .ace_storage {color: #FC803A}.ace-merbivore-soft .ace_constant,.ace-merbivore-soft .ace_constant.ace_character,.ace-merbivore-soft .ace_constant.ace_character.ace_escape,.ace-merbivore-soft .ace_constant.ace_other,.ace-merbivore-soft .ace_support.ace_type {color: #68C1D8}.ace-merbivore-soft .ace_constant.ace_character.ace_escape {color: #B3E5B4}.ace-merbivore-soft .ace_constant.ace_language {color: #E1C582}.ace-merbivore-soft .ace_constant.ace_library,.ace-merbivore-soft .ace_string,.ace-merbivore-soft .ace_support.ace_constant {color: #8EC65F}.ace-merbivore-soft .ace_constant.ace_numeric {color: #7FC578}.ace-merbivore-soft .ace_invalid,.ace-merbivore-soft .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #FE3838}.ace-merbivore-soft .ace_fold {background-color: #FC803A;border-color: #E6E1DC}.ace-merbivore-soft .ace_comment,.ace-merbivore-soft .ace_meta {font-style: italic;color: #AC4BB8}.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {color: #EAF1A3}.ace-merbivore-soft .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-mono_industrial.js b/js/ace/theme-mono_industrial.js
new file mode 100644
index 0000000..4d6b93c
--- /dev/null
+++ b/js/ace/theme-mono_industrial.js
@@ -0,0 +1 @@
+ace.define("ace/theme/mono_industrial",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-mono-industrial",t.cssText=".ace-mono-industrial .ace_gutter {background: #1d2521;color: #C5C9C9}.ace-mono-industrial .ace_print-margin {width: 1px;background: #555651}.ace-mono-industrial {background-color: #222C28;color: #FFFFFF}.ace-mono-industrial .ace_cursor {color: #FFFFFF}.ace-mono-industrial .ace_marker-layer .ace_selection {background: rgba(145, 153, 148, 0.40)}.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #222C28;border-radius: 2px}.ace-mono-industrial .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-mono-industrial .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_marker-layer .ace_active-line {background: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_gutter-active-line {background-color: rgba(12, 13, 12, 0.25)}.ace-mono-industrial .ace_marker-layer .ace_selected-word {border: 1px solid rgba(145, 153, 148, 0.40)}.ace-mono-industrial .ace_invisible {color: rgba(102, 108, 104, 0.50)}.ace-mono-industrial .ace_string {background-color: #151C19;color: #FFFFFF}.ace-mono-industrial .ace_keyword,.ace-mono-industrial .ace_meta {color: #A39E64}.ace-mono-industrial .ace_constant,.ace-mono-industrial .ace_constant.ace_character,.ace-mono-industrial .ace_constant.ace_character.ace_escape,.ace-mono-industrial .ace_constant.ace_numeric,.ace-mono-industrial .ace_constant.ace_other {color: #E98800}.ace-mono-industrial .ace_entity.ace_name.ace_function,.ace-mono-industrial .ace_keyword.ace_operator,.ace-mono-industrial .ace_variable {color: #A8B3AB}.ace-mono-industrial .ace_invalid {color: #FFFFFF;background-color: rgba(153, 0, 0, 0.68)}.ace-mono-industrial .ace_support.ace_constant {color: #C87500}.ace-mono-industrial .ace_fold {background-color: #A8B3AB;border-color: #FFFFFF}.ace-mono-industrial .ace_support.ace_function {color: #588E60}.ace-mono-industrial .ace_entity.ace_name,.ace-mono-industrial .ace_support.ace_class,.ace-mono-industrial .ace_support.ace_type {color: #5778B6}.ace-mono-industrial .ace_storage {color: #C23B00}.ace-mono-industrial .ace_variable.ace_language,.ace-mono-industrial .ace_variable.ace_parameter {color: #648BD2}.ace-mono-industrial .ace_comment {color: #666C68;background-color: #151C19}.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {color: #909993}.ace-mono-industrial .ace_entity.ace_name.ace_tag {color: #A65EFF}.ace-mono-industrial .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-monokai.js b/js/ace/theme-monokai.js
new file mode 100644
index 0000000..3a4361c
--- /dev/null
+++ b/js/ace/theme-monokai.js
@@ -0,0 +1 @@
+ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;border-radius: 2px}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-pastel_on_dark.js b/js/ace/theme-pastel_on_dark.js
new file mode 100644
index 0000000..e3dee73
--- /dev/null
+++ b/js/ace/theme-pastel_on_dark.js
@@ -0,0 +1 @@
+ace.define("ace/theme/pastel_on_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-pastel-on-dark",t.cssText=".ace-pastel-on-dark .ace_gutter {background: #353030;color: #8F938F}.ace-pastel-on-dark .ace_print-margin {width: 1px;background: #353030}.ace-pastel-on-dark {background-color: #2C2828;color: #8F938F}.ace-pastel-on-dark .ace_cursor {color: #A7A7A7}.ace-pastel-on-dark .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2C2828;border-radius: 2px}.ace-pastel-on-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-pastel-on-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-pastel-on-dark .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-pastel-on-dark .ace_keyword,.ace-pastel-on-dark .ace_meta {color: #757aD8}.ace-pastel-on-dark .ace_constant,.ace-pastel-on-dark .ace_constant.ace_character,.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,.ace-pastel-on-dark .ace_constant.ace_other {color: #4FB7C5}.ace-pastel-on-dark .ace_keyword.ace_operator {color: #797878}.ace-pastel-on-dark .ace_constant.ace_character {color: #AFA472}.ace-pastel-on-dark .ace_constant.ace_language {color: #DE8E30}.ace-pastel-on-dark .ace_constant.ace_numeric {color: #CCCCCC}.ace-pastel-on-dark .ace_invalid,.ace-pastel-on-dark .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-pastel-on-dark .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-pastel-on-dark .ace_fold {background-color: #757aD8;border-color: #8F938F}.ace-pastel-on-dark .ace_support.ace_function {color: #AEB2F8}.ace-pastel-on-dark .ace_string {color: #66A968}.ace-pastel-on-dark .ace_string.ace_regexp {color: #E9C062}.ace-pastel-on-dark .ace_comment {color: #A6C6FF}.ace-pastel-on-dark .ace_variable {color: #BEBF55}.ace-pastel-on-dark .ace_variable.ace_language {color: #C1C144}.ace-pastel-on-dark .ace_xml-pe {color: #494949}.ace-pastel-on-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-solarized_dark.js b/js/ace/theme-solarized_dark.js
new file mode 100644
index 0000000..34af033
--- /dev/null
+++ b/js/ace/theme-solarized_dark.js
@@ -0,0 +1 @@
+ace.define("ace/theme/solarized_dark",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-solarized-dark",t.cssText=".ace-solarized-dark .ace_gutter {background: #01313f;color: #d0edf7}.ace-solarized-dark .ace_print-margin {width: 1px;background: #33555E}.ace-solarized-dark {background-color: #002B36;color: #93A1A1}.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,.ace-solarized-dark .ace_storage {color: #93A1A1}.ace-solarized-dark .ace_cursor,.ace-solarized-dark .ace_string.ace_regexp {color: #D30102}.ace-solarized-dark .ace_marker-layer .ace_active-line,.ace-solarized-dark .ace_marker-layer .ace_selection {background: rgba(255, 255, 255, 0.1)}.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002B36;border-radius: 2px}.ace-solarized-dark .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-solarized-dark .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_gutter-active-line {background-color: #0d3440}.ace-solarized-dark .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-dark .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-dark .ace_keyword,.ace-solarized-dark .ace_meta,.ace-solarized-dark .ace_support.ace_class,.ace-solarized-dark .ace_support.ace_type {color: #859900}.ace-solarized-dark .ace_constant.ace_character,.ace-solarized-dark .ace_constant.ace_other {color: #CB4B16}.ace-solarized-dark .ace_constant.ace_language {color: #B58900}.ace-solarized-dark .ace_constant.ace_numeric {color: #D33682}.ace-solarized-dark .ace_fold {background-color: #268BD2;border-color: #93A1A1}.ace-solarized-dark .ace_entity.ace_name.ace_function,.ace-solarized-dark .ace_entity.ace_name.ace_tag,.ace-solarized-dark .ace_support.ace_function,.ace-solarized-dark .ace_variable,.ace-solarized-dark .ace_variable.ace_language {color: #268BD2}.ace-solarized-dark .ace_string {color: #2AA198}.ace-solarized-dark .ace_comment {font-style: italic;color: #657B83}.ace-solarized-dark .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-solarized_light.js b/js/ace/theme-solarized_light.js
new file mode 100644
index 0000000..d785f2b
--- /dev/null
+++ b/js/ace/theme-solarized_light.js
@@ -0,0 +1 @@
+ace.define("ace/theme/solarized_light",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-solarized-light",t.cssText=".ace-solarized-light .ace_gutter {background: #fbf1d3;color: #333}.ace-solarized-light .ace_print-margin {width: 1px;background: #e8e8e8}.ace-solarized-light {background-color: #FDF6E3;color: #586E75}.ace-solarized-light .ace_cursor {color: #000000}.ace-solarized-light .ace_marker-layer .ace_selection {background: rgba(7, 54, 67, 0.09)}.ace-solarized-light.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FDF6E3;border-radius: 2px}.ace-solarized-light .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-solarized-light .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_marker-layer .ace_active-line {background: #EEE8D5}.ace-solarized-light .ace_gutter-active-line {background-color : #EDE5C1}.ace-solarized-light .ace_marker-layer .ace_selected-word {border: 1px solid #073642}.ace-solarized-light .ace_invisible {color: rgba(147, 161, 161, 0.50)}.ace-solarized-light .ace_keyword,.ace-solarized-light .ace_meta,.ace-solarized-light .ace_support.ace_class,.ace-solarized-light .ace_support.ace_type {color: #859900}.ace-solarized-light .ace_constant.ace_character,.ace-solarized-light .ace_constant.ace_other {color: #CB4B16}.ace-solarized-light .ace_constant.ace_language {color: #B58900}.ace-solarized-light .ace_constant.ace_numeric {color: #D33682}.ace-solarized-light .ace_fold {background-color: #268BD2;border-color: #586E75}.ace-solarized-light .ace_entity.ace_name.ace_function,.ace-solarized-light .ace_entity.ace_name.ace_tag,.ace-solarized-light .ace_support.ace_function,.ace-solarized-light .ace_variable,.ace-solarized-light .ace_variable.ace_language {color: #268BD2}.ace-solarized-light .ace_storage {color: #073642}.ace-solarized-light .ace_string {color: #2AA198}.ace-solarized-light .ace_string.ace_regexp {color: #D30102}.ace-solarized-light .ace_comment,.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {color: #93A1A1}.ace-solarized-light .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-terminal.js b/js/ace/theme-terminal.js
new file mode 100644
index 0000000..4949228
--- /dev/null
+++ b/js/ace/theme-terminal.js
@@ -0,0 +1 @@
+ace.define("ace/theme/terminal",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-terminal-theme",t.cssText=".ace-terminal-theme .ace_gutter {background: #1a0005;color: steelblue}.ace-terminal-theme .ace_print-margin {width: 1px;background: #1a1a1a}.ace-terminal-theme {background-color: black;color: #DEDEDE}.ace-terminal-theme .ace_cursor {color: #9F9F9F}.ace-terminal-theme .ace_marker-layer .ace_selection {background: #424242}.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px black;border-radius: 2px}.ace-terminal-theme .ace_marker-layer .ace_step {background: rgb(0, 0, 0)}.ace-terminal-theme .ace_marker-layer .ace_bracket {background: #090;}.ace-terminal-theme .ace_marker-layer .ace_bracket-start {background: #090;}.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {margin: -1px 0 0 -1px;border: 1px solid #900}.ace-terminal-theme .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-terminal-theme .ace_gutter-active-line {background-color: #2A112A}.ace-terminal-theme .ace_marker-layer .ace_selected-word {border: 1px solid #424242}.ace-terminal-theme .ace_invisible {color: #343434}.ace-terminal-theme .ace_keyword,.ace-terminal-theme .ace_meta,.ace-terminal-theme .ace_storage,.ace-terminal-theme .ace_storage.ace_type,.ace-terminal-theme .ace_support.ace_type {color: tomato}.ace-terminal-theme .ace_keyword.ace_operator {color: deeppink}.ace-terminal-theme .ace_constant.ace_character,.ace-terminal-theme .ace_constant.ace_language,.ace-terminal-theme .ace_constant.ace_numeric,.ace-terminal-theme .ace_keyword.ace_other.ace_unit,.ace-terminal-theme .ace_support.ace_constant,.ace-terminal-theme .ace_variable.ace_parameter {color: #E78C45}.ace-terminal-theme .ace_constant.ace_other {color: gold}.ace-terminal-theme .ace_invalid {color: yellow;background-color: red}.ace-terminal-theme .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-terminal-theme .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-terminal-theme .ace_entity.ace_name.ace_function,.ace-terminal-theme .ace_support.ace_function,.ace-terminal-theme .ace_variable {color: #7AA6DA}.ace-terminal-theme .ace_support.ace_class,.ace-terminal-theme .ace_support.ace_type {color: #E7C547}.ace-terminal-theme .ace_heading,.ace-terminal-theme .ace_string {color: #B9CA4A}.ace-terminal-theme .ace_entity.ace_name.ace_tag,.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,.ace-terminal-theme .ace_meta.ace_tag,.ace-terminal-theme .ace_string.ace_regexp,.ace-terminal-theme .ace_variable {color: #D54E53}.ace-terminal-theme .ace_comment {color: orangered}.ace-terminal-theme .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-textmate.js b/js/ace/theme-textmate.js
new file mode 100644
index 0000000..24c5e16
--- /dev/null
+++ b/js/ace/theme-textmate.js
@@ -0,0 +1 @@
+ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-tomorrow.js b/js/ace/theme-tomorrow.js
new file mode 100644
index 0000000..0c43059
--- /dev/null
+++ b/js/ace/theme-tomorrow.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tomorrow",t.cssText=".ace-tomorrow .ace_gutter {background: #f6f6f6;color: #4D4D4C}.ace-tomorrow .ace_print-margin {width: 1px;background: #f6f6f6}.ace-tomorrow {background-color: #FFFFFF;color: #4D4D4C}.ace-tomorrow .ace_cursor {color: #AEAFAD}.ace-tomorrow .ace_marker-layer .ace_selection {background: #D6D6D6}.ace-tomorrow.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-tomorrow .ace_marker-layer .ace_step {background: rgb(255, 255, 0)}.ace-tomorrow .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #D1D1D1}.ace-tomorrow .ace_marker-layer .ace_active-line {background: #EFEFEF}.ace-tomorrow .ace_gutter-active-line {background-color : #dcdcdc}.ace-tomorrow .ace_marker-layer .ace_selected-word {border: 1px solid #D6D6D6}.ace-tomorrow .ace_invisible {color: #D1D1D1}.ace-tomorrow .ace_keyword,.ace-tomorrow .ace_meta,.ace-tomorrow .ace_storage,.ace-tomorrow .ace_storage.ace_type,.ace-tomorrow .ace_support.ace_type {color: #8959A8}.ace-tomorrow .ace_keyword.ace_operator {color: #3E999F}.ace-tomorrow .ace_constant.ace_character,.ace-tomorrow .ace_constant.ace_language,.ace-tomorrow .ace_constant.ace_numeric,.ace-tomorrow .ace_keyword.ace_other.ace_unit,.ace-tomorrow .ace_support.ace_constant,.ace-tomorrow .ace_variable.ace_parameter {color: #F5871F}.ace-tomorrow .ace_constant.ace_other {color: #666969}.ace-tomorrow .ace_invalid {color: #FFFFFF;background-color: #C82829}.ace-tomorrow .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #8959A8}.ace-tomorrow .ace_fold {background-color: #4271AE;border-color: #4D4D4C}.ace-tomorrow .ace_entity.ace_name.ace_function,.ace-tomorrow .ace_support.ace_function,.ace-tomorrow .ace_variable {color: #4271AE}.ace-tomorrow .ace_support.ace_class,.ace-tomorrow .ace_support.ace_type {color: #C99E00}.ace-tomorrow .ace_heading,.ace-tomorrow .ace_markup.ace_heading,.ace-tomorrow .ace_string {color: #718C00}.ace-tomorrow .ace_entity.ace_name.ace_tag,.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow .ace_meta.ace_tag,.ace-tomorrow .ace_string.ace_regexp,.ace-tomorrow .ace_variable {color: #C82829}.ace-tomorrow .ace_comment {color: #8E908C}.ace-tomorrow .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-tomorrow_night.js b/js/ace/theme-tomorrow_night.js
new file mode 100644
index 0000000..d144fa8
--- /dev/null
+++ b/js/ace/theme-tomorrow_night.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night",t.cssText=".ace-tomorrow-night .ace_gutter {background: #25282c;color: #C5C8C6}.ace-tomorrow-night .ace_print-margin {width: 1px;background: #25282c}.ace-tomorrow-night {background-color: #1D1F21;color: #C5C8C6}.ace-tomorrow-night .ace_cursor {color: #AEAFAD}.ace-tomorrow-night .ace_marker-layer .ace_selection {background: #373B41}.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #1D1F21;border-radius: 2px}.ace-tomorrow-night .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #4B4E55}.ace-tomorrow-night .ace_marker-layer .ace_active-line {background: #282A2E}.ace-tomorrow-night .ace_gutter-active-line {background-color: #282A2E}.ace-tomorrow-night .ace_marker-layer .ace_selected-word {border: 1px solid #373B41}.ace-tomorrow-night .ace_invisible {color: #4B4E55}.ace-tomorrow-night .ace_keyword,.ace-tomorrow-night .ace_meta,.ace-tomorrow-night .ace_storage,.ace-tomorrow-night .ace_storage.ace_type,.ace-tomorrow-night .ace_support.ace_type {color: #B294BB}.ace-tomorrow-night .ace_keyword.ace_operator {color: #8ABEB7}.ace-tomorrow-night .ace_constant.ace_character,.ace-tomorrow-night .ace_constant.ace_language,.ace-tomorrow-night .ace_constant.ace_numeric,.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night .ace_support.ace_constant,.ace-tomorrow-night .ace_variable.ace_parameter {color: #DE935F}.ace-tomorrow-night .ace_constant.ace_other {color: #CED1CF}.ace-tomorrow-night .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night .ace_fold {background-color: #81A2BE;border-color: #C5C8C6}.ace-tomorrow-night .ace_entity.ace_name.ace_function,.ace-tomorrow-night .ace_support.ace_function,.ace-tomorrow-night .ace_variable {color: #81A2BE}.ace-tomorrow-night .ace_support.ace_class,.ace-tomorrow-night .ace_support.ace_type {color: #F0C674}.ace-tomorrow-night .ace_heading,.ace-tomorrow-night .ace_markup.ace_heading,.ace-tomorrow-night .ace_string {color: #B5BD68}.ace-tomorrow-night .ace_entity.ace_name.ace_tag,.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night .ace_meta.ace_tag,.ace-tomorrow-night .ace_string.ace_regexp,.ace-tomorrow-night .ace_variable {color: #CC6666}.ace-tomorrow-night .ace_comment {color: #969896}.ace-tomorrow-night .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-tomorrow_night_blue.js b/js/ace/theme-tomorrow_night_blue.js
new file mode 100644
index 0000000..8cbe316
--- /dev/null
+++ b/js/ace/theme-tomorrow_night_blue.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-blue",t.cssText=".ace-tomorrow-night-blue .ace_gutter {background: #00204b;color: #7388b5}.ace-tomorrow-night-blue .ace_print-margin {width: 1px;background: #00204b}.ace-tomorrow-night-blue {background-color: #002451;color: #FFFFFF}.ace-tomorrow-night-blue .ace_constant.ace_other,.ace-tomorrow-night-blue .ace_cursor {color: #FFFFFF}.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {background: #003F8E}.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #002451;border-radius: 2px}.ace-tomorrow-night-blue .ace_marker-layer .ace_step {background: rgb(127, 111, 19)}.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404F7D}.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {background: #00346E}.ace-tomorrow-night-blue .ace_gutter-active-line {background-color: #022040}.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {border: 1px solid #003F8E}.ace-tomorrow-night-blue .ace_invisible {color: #404F7D}.ace-tomorrow-night-blue .ace_keyword,.ace-tomorrow-night-blue .ace_meta,.ace-tomorrow-night-blue .ace_storage,.ace-tomorrow-night-blue .ace_storage.ace_type,.ace-tomorrow-night-blue .ace_support.ace_type {color: #EBBBFF}.ace-tomorrow-night-blue .ace_keyword.ace_operator {color: #99FFFF}.ace-tomorrow-night-blue .ace_constant.ace_character,.ace-tomorrow-night-blue .ace_constant.ace_language,.ace-tomorrow-night-blue .ace_constant.ace_numeric,.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-blue .ace_support.ace_constant,.ace-tomorrow-night-blue .ace_variable.ace_parameter {color: #FFC58F}.ace-tomorrow-night-blue .ace_invalid {color: #FFFFFF;background-color: #F99DA5}.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {color: #FFFFFF;background-color: #EBBBFF}.ace-tomorrow-night-blue .ace_fold {background-color: #BBDAFF;border-color: #FFFFFF}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,.ace-tomorrow-night-blue .ace_support.ace_function,.ace-tomorrow-night-blue .ace_variable {color: #BBDAFF}.ace-tomorrow-night-blue .ace_support.ace_class,.ace-tomorrow-night-blue .ace_support.ace_type {color: #FFEEAD}.ace-tomorrow-night-blue .ace_heading,.ace-tomorrow-night-blue .ace_markup.ace_heading,.ace-tomorrow-night-blue .ace_string {color: #D1F1A9}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-blue .ace_meta.ace_tag,.ace-tomorrow-night-blue .ace_string.ace_regexp,.ace-tomorrow-night-blue .ace_variable {color: #FF9DA4}.ace-tomorrow-night-blue .ace_comment {color: #7285B7}.ace-tomorrow-night-blue .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-tomorrow_night_bright.js b/js/ace/theme-tomorrow_night_bright.js
new file mode 100644
index 0000000..6feb888
--- /dev/null
+++ b/js/ace/theme-tomorrow_night_bright.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-bright",t.cssText=".ace-tomorrow-night-bright .ace_gutter {background: #1a1a1a;color: #DEDEDE}.ace-tomorrow-night-bright .ace_print-margin {width: 1px;background: #1a1a1a}.ace-tomorrow-night-bright {background-color: #000000;color: #DEDEDE}.ace-tomorrow-night-bright .ace_cursor {color: #9F9F9F}.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {background: #424242}.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #000000;border-radius: 2px}.ace-tomorrow-night-bright .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #888888}.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {border: 1px solid rgb(110, 119, 0);border-bottom: 0;box-shadow: inset 0 -1px rgb(110, 119, 0);margin: -1px 0 0 -1px;background: rgba(255, 235, 0, 0.1)}.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {background: #2A2A2A}.ace-tomorrow-night-bright .ace_gutter-active-line {background-color: #2A2A2A}.ace-tomorrow-night-bright .ace_stack {background-color: rgb(66, 90, 44)}.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {border: 1px solid #888888}.ace-tomorrow-night-bright .ace_invisible {color: #343434}.ace-tomorrow-night-bright .ace_keyword,.ace-tomorrow-night-bright .ace_meta,.ace-tomorrow-night-bright .ace_storage,.ace-tomorrow-night-bright .ace_storage.ace_type,.ace-tomorrow-night-bright .ace_support.ace_type {color: #C397D8}.ace-tomorrow-night-bright .ace_keyword.ace_operator {color: #70C0B1}.ace-tomorrow-night-bright .ace_constant.ace_character,.ace-tomorrow-night-bright .ace_constant.ace_language,.ace-tomorrow-night-bright .ace_constant.ace_numeric,.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-bright .ace_support.ace_constant,.ace-tomorrow-night-bright .ace_variable.ace_parameter {color: #E78C45}.ace-tomorrow-night-bright .ace_constant.ace_other {color: #EEEEEE}.ace-tomorrow-night-bright .ace_invalid {color: #CED2CF;background-color: #DF5F5F}.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {color: #CED2CF;background-color: #B798BF}.ace-tomorrow-night-bright .ace_fold {background-color: #7AA6DA;border-color: #DEDEDE}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,.ace-tomorrow-night-bright .ace_support.ace_function,.ace-tomorrow-night-bright .ace_variable {color: #7AA6DA}.ace-tomorrow-night-bright .ace_support.ace_class,.ace-tomorrow-night-bright .ace_support.ace_type {color: #E7C547}.ace-tomorrow-night-bright .ace_heading,.ace-tomorrow-night-bright .ace_markup.ace_heading,.ace-tomorrow-night-bright .ace_string {color: #B9CA4A}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-bright .ace_meta.ace_tag,.ace-tomorrow-night-bright .ace_string.ace_regexp,.ace-tomorrow-night-bright .ace_variable {color: #D54E53}.ace-tomorrow-night-bright .ace_comment {color: #969896}.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {color: #C2C280}.ace-tomorrow-night-bright .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-tomorrow_night_eighties.js b/js/ace/theme-tomorrow_night_eighties.js
new file mode 100644
index 0000000..6dea2cc
--- /dev/null
+++ b/js/ace/theme-tomorrow_night_eighties.js
@@ -0,0 +1 @@
+ace.define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-tomorrow-night-eighties",t.cssText=".ace-tomorrow-night-eighties .ace_gutter {background: #272727;color: #CCC}.ace-tomorrow-night-eighties .ace_print-margin {width: 1px;background: #272727}.ace-tomorrow-night-eighties {background-color: #2D2D2D;color: #CCCCCC}.ace-tomorrow-night-eighties .ace_constant.ace_other,.ace-tomorrow-night-eighties .ace_cursor {color: #CCCCCC}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {background: #515151}.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #2D2D2D;border-radius: 2px}.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #6A6A6A}.ace-tomorrow-night-bright .ace_stack {background: rgb(66, 90, 44)}.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {background: #393939}.ace-tomorrow-night-eighties .ace_gutter-active-line {background-color: #393939}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {border: 1px solid #515151}.ace-tomorrow-night-eighties .ace_invisible {color: #6A6A6A}.ace-tomorrow-night-eighties .ace_keyword,.ace-tomorrow-night-eighties .ace_meta,.ace-tomorrow-night-eighties .ace_storage,.ace-tomorrow-night-eighties .ace_storage.ace_type,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #CC99CC}.ace-tomorrow-night-eighties .ace_keyword.ace_operator {color: #66CCCC}.ace-tomorrow-night-eighties .ace_constant.ace_character,.ace-tomorrow-night-eighties .ace_constant.ace_language,.ace-tomorrow-night-eighties .ace_constant.ace_numeric,.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,.ace-tomorrow-night-eighties .ace_support.ace_constant,.ace-tomorrow-night-eighties .ace_variable.ace_parameter {color: #F99157}.ace-tomorrow-night-eighties .ace_invalid {color: #CDCDCD;background-color: #F2777A}.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {color: #CDCDCD;background-color: #CC99CC}.ace-tomorrow-night-eighties .ace_fold {background-color: #6699CC;border-color: #CCCCCC}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,.ace-tomorrow-night-eighties .ace_support.ace_function,.ace-tomorrow-night-eighties .ace_variable {color: #6699CC}.ace-tomorrow-night-eighties .ace_support.ace_class,.ace-tomorrow-night-eighties .ace_support.ace_type {color: #FFCC66}.ace-tomorrow-night-eighties .ace_heading,.ace-tomorrow-night-eighties .ace_markup.ace_heading,.ace-tomorrow-night-eighties .ace_string {color: #99CC99}.ace-tomorrow-night-eighties .ace_comment {color: #999999}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,.ace-tomorrow-night-eighties .ace_meta.ace_tag,.ace-tomorrow-night-eighties .ace_variable {color: #F2777A}.ace-tomorrow-night-eighties .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-twilight.js b/js/ace/theme-twilight.js
new file mode 100644
index 0000000..1c5dfda
--- /dev/null
+++ b/js/ace/theme-twilight.js
@@ -0,0 +1 @@
+ace.define("ace/theme/twilight",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-twilight",t.cssText=".ace-twilight .ace_gutter {background: #232323;color: #E2E2E2}.ace-twilight .ace_print-margin {width: 1px;background: #232323}.ace-twilight {background-color: #141414;color: #F8F8F8}.ace-twilight .ace_cursor {color: #A7A7A7}.ace-twilight .ace_marker-layer .ace_selection {background: rgba(221, 240, 255, 0.20)}.ace-twilight.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #141414;border-radius: 2px}.ace-twilight .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-twilight .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgba(255, 255, 255, 0.25)}.ace-twilight .ace_marker-layer .ace_active-line {background: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_gutter-active-line {background-color: rgba(255, 255, 255, 0.031)}.ace-twilight .ace_marker-layer .ace_selected-word {border: 1px solid rgba(221, 240, 255, 0.20)}.ace-twilight .ace_invisible {color: rgba(255, 255, 255, 0.25)}.ace-twilight .ace_keyword,.ace-twilight .ace_meta {color: #CDA869}.ace-twilight .ace_constant,.ace-twilight .ace_constant.ace_character,.ace-twilight .ace_constant.ace_character.ace_escape,.ace-twilight .ace_constant.ace_other,.ace-twilight .ace_heading,.ace-twilight .ace_markup.ace_heading,.ace-twilight .ace_support.ace_constant {color: #CF6A4C}.ace-twilight .ace_invalid.ace_illegal {color: #F8F8F8;background-color: rgba(86, 45, 86, 0.75)}.ace-twilight .ace_invalid.ace_deprecated {text-decoration: underline;font-style: italic;color: #D2A8A1}.ace-twilight .ace_support {color: #9B859D}.ace-twilight .ace_fold {background-color: #AC885B;border-color: #F8F8F8}.ace-twilight .ace_support.ace_function {color: #DAD085}.ace-twilight .ace_list,.ace-twilight .ace_markup.ace_list,.ace-twilight .ace_storage {color: #F9EE98}.ace-twilight .ace_entity.ace_name.ace_function,.ace-twilight .ace_meta.ace_tag,.ace-twilight .ace_variable {color: #AC885B}.ace-twilight .ace_string {color: #8F9D6A}.ace-twilight .ace_string.ace_regexp {color: #E9C062}.ace-twilight .ace_comment {font-style: italic;color: #5F5A60}.ace-twilight .ace_variable {color: #7587A6}.ace-twilight .ace_xml-pe {color: #494949}.ace-twilight .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-vibrant_ink.js b/js/ace/theme-vibrant_ink.js
new file mode 100644
index 0000000..a0aebbf
--- /dev/null
+++ b/js/ace/theme-vibrant_ink.js
@@ -0,0 +1 @@
+ace.define("ace/theme/vibrant_ink",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-vibrant-ink",t.cssText=".ace-vibrant-ink .ace_gutter {background: #1a1a1a;color: #BEBEBE}.ace-vibrant-ink .ace_print-margin {width: 1px;background: #1a1a1a}.ace-vibrant-ink {background-color: #0F0F0F;color: #FFFFFF}.ace-vibrant-ink .ace_cursor {color: #FFFFFF}.ace-vibrant-ink .ace_marker-layer .ace_selection {background: #6699CC}.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #0F0F0F;border-radius: 2px}.ace-vibrant-ink .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-vibrant-ink .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #404040}.ace-vibrant-ink .ace_marker-layer .ace_active-line {background: #333333}.ace-vibrant-ink .ace_gutter-active-line {background-color: #333333}.ace-vibrant-ink .ace_marker-layer .ace_selected-word {border: 1px solid #6699CC}.ace-vibrant-ink .ace_invisible {color: #404040}.ace-vibrant-ink .ace_keyword,.ace-vibrant-ink .ace_meta {color: #FF6600}.ace-vibrant-ink .ace_constant,.ace-vibrant-ink .ace_constant.ace_character,.ace-vibrant-ink .ace_constant.ace_character.ace_escape,.ace-vibrant-ink .ace_constant.ace_other {color: #339999}.ace-vibrant-ink .ace_constant.ace_numeric {color: #99CC99}.ace-vibrant-ink .ace_invalid,.ace-vibrant-ink .ace_invalid.ace_deprecated {color: #CCFF33;background-color: #000000}.ace-vibrant-ink .ace_fold {background-color: #FFCC00;border-color: #FFFFFF}.ace-vibrant-ink .ace_entity.ace_name.ace_function,.ace-vibrant-ink .ace_support.ace_function,.ace-vibrant-ink .ace_variable {color: #FFCC00}.ace-vibrant-ink .ace_variable.ace_parameter {font-style: italic}.ace-vibrant-ink .ace_string {color: #66FF00}.ace-vibrant-ink .ace_string.ace_regexp {color: #44B4CC}.ace-vibrant-ink .ace_comment {color: #9933CC}.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {font-style: italic;color: #99CC99}.ace-vibrant-ink .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/theme-xcode.js b/js/ace/theme-xcode.js
new file mode 100644
index 0000000..873bd35
--- /dev/null
+++ b/js/ace/theme-xcode.js
@@ -0,0 +1 @@
+ace.define("ace/theme/xcode",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-xcode",t.cssText=".ace-xcode .ace_gutter {background: #e8e8e8;color: #333}.ace-xcode .ace_print-margin {width: 1px;background: #e8e8e8}.ace-xcode {background-color: #FFFFFF;color: #000000}.ace-xcode .ace_cursor {color: #000000}.ace-xcode .ace_marker-layer .ace_selection {background: #B5D5FF}.ace-xcode.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #FFFFFF;border-radius: 2px}.ace-xcode .ace_marker-layer .ace_step {background: rgb(198, 219, 174)}.ace-xcode .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #BFBFBF}.ace-xcode .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_gutter-active-line {background-color: rgba(0, 0, 0, 0.071)}.ace-xcode .ace_marker-layer .ace_selected-word {border: 1px solid #B5D5FF}.ace-xcode .ace_constant.ace_language,.ace-xcode .ace_keyword,.ace-xcode .ace_meta,.ace-xcode .ace_variable.ace_language {color: #C800A4}.ace-xcode .ace_invisible {color: #BFBFBF}.ace-xcode .ace_constant.ace_character,.ace-xcode .ace_constant.ace_other {color: #275A5E}.ace-xcode .ace_constant.ace_numeric {color: #3A00DC}.ace-xcode .ace_entity.ace_other.ace_attribute-name,.ace-xcode .ace_support.ace_constant,.ace-xcode .ace_support.ace_function {color: #450084}.ace-xcode .ace_fold {background-color: #C800A4;border-color: #000000}.ace-xcode .ace_entity.ace_name.ace_tag,.ace-xcode .ace_support.ace_class,.ace-xcode .ace_support.ace_type {color: #790EAD}.ace-xcode .ace_storage {color: #C900A4}.ace-xcode .ace_string {color: #DF0002}.ace-xcode .ace_comment {color: #008E00}.ace-xcode .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})
\ No newline at end of file
diff --git a/js/ace/worker-coffee.js b/js/ace/worker-coffee.js
new file mode 100644
index 0000000..e54130a
--- /dev/null
+++ b/js/ace/worker-coffee.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/coffee/rewriter",["require","exports","module"],function(e,t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S=[].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1},x=[].slice;m=function(e,t){var n;return n=[e,t],n.generated=!0,n},t.Rewriter=function(){function e(){}return e.prototype.rewrite=function(e){return this.tokens=e,this.removeLeadingNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.normalizeLines(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.addLocationDataToGeneratedTokens(),this.tokens},e.prototype.scanTokens=function(e){var t,n,r;r=this.tokens,t=0;while(n=r[t])t+=e.call(this,n,t,r);return!0},e.prototype.detectEnd=function(e,t,n){var r,i,s,a,f;s=this.tokens,r=0;while(i=s[e]){if(r===0&&t.call(this,i,e))return n.call(this,i,e);if(!i||r<0)return n.call(this,i,e-1);if(a=i[0],S.call(u,a)>=0)r+=1;else if(f=i[0],S.call(o,f)>=0)r-=1;e+=1}return e-1},e.prototype.removeLeadingNewlines=function(){var e,t,n,r,i;i=this.tokens;for(e=n=0,r=i.length;n<r;e=++n){t=i[e][0];if(t!=="TERMINATOR")break}if(e)return this.tokens.splice(0,e)},e.prototype.closeOpenCalls=function(){var e,t;return t=function(e,t){var n;return(n=e[0])===")"||n==="CALL_END"||e[0]==="OUTDENT"&&this.tag(t-1)===")"},e=function(e,t){return this.tokens[e[0]==="OUTDENT"?t-1:t][0]="CALL_END"},this.scanTokens(function(n,r){return n[0]==="CALL_START"&&this.detectEnd(r+1,t,e),1})},e.prototype.closeOpenIndexes=function(){var e,t;return t=function(e,t){var n;return(n=e[0])==="]"||n==="INDEX_END"},e=function(e,t){return e[0]="INDEX_END"},this.scanTokens(function(n,r){return n[0]==="INDEX_START"&&this.detectEnd(r+1,t,e),1})},e.prototype.matchTags=function(){var e,t,n,r,i,s,o;t=arguments[0],r=2<=arguments.length?x.call(arguments,1):[],e=0;for(n=i=0,s=r.length;0<=s?i<s:i>s;n=0<=s?++i:--i){while(this.tag(t+n+e)==="HERECOMMENT")e+=2;if(r[n]==null)continue;typeof r[n]=="string"&&(r[n]=[r[n]]);if(o=this.tag(t+n+e),S.call(r[n],o)<0)return!1}return!0},e.prototype.looksObjectish=function(e){return this.matchTags(e,"@",null,":")||this.matchTags(e,null,":")},e.prototype.findTagsBackwards=function(e,t){var n,r,i,s,a,f,l;n=[];while(e>=0&&(n.length||(s=this.tag(e),S.call(t,s)<0)&&((a=this.tag(e),S.call(u,a)<0)||this.tokens[e].generated)&&(f=this.tag(e),S.call(p,f)<0)))(r=this.tag(e),S.call(o,r)>=0)&&n.push(this.tag(e)),(i=this.tag(e),S.call(u,i)>=0)&&n.length&&n.pop(),e-=1;return l=this.tag(e),S.call(t,l)>=0},e.prototype.addImplicitBracesAndParens=function(){var e;return e=[],this.scanTokens(function(t,n,r){var s,h,d,v,g,y,b,w,E,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R;H=t[0],T=(N=n>0?r[n-1]:[])[0],E=(n<r.length-1?r[n+1]:[])[0],O=function(){return e[e.length-1]},M=n,v=function(e){return n-M+e},g=function(){var e,t;return(e=O())!=null?(t=e[2])!=null?t.ours:void 0:void 0},y=function(){var e;return g()&&((e=O())!=null?e[0]:void 0)==="("},w=function(){var e;return g()&&((e=O())!=null?e[0]:void 0)==="{"},b=function(){var e;return g&&((e=O())!=null?e[0]:void 0)==="CONTROL"},_=function(t){var i;i=t!=null?t:n,e.push(["(",i,{ours:!0}]),r.splice(i,0,m("CALL_START","("));if(t==null)return n+=1},h=function(){return e.pop(),r.splice(n,0,m("CALL_END",")")),n+=1},s=function(){while(y())h()},D=function(t,i){var s;i==null&&(i=!0),s=t!=null?t:n,e.push(["{",s,{sameLine:!0,startsLine:i,ours:!0}]),r.splice(s,0,m("{",m(new String("{"))));if(t==null)return n+=1},d=function(t){return t=t!=null?t:n,e.pop(),r.splice(t,0,m("}","}")),n+=1};if(!y()||H!=="IF"&&H!=="TRY"&&H!=="FINALLY"&&H!=="CATCH"&&H!=="CLASS"&&H!=="SWITCH"){if(H==="INDENT"&&g()){if(T!=="=>"&&T!=="->"&&T!=="["&&T!=="("&&T!==","&&T!=="{"&&T!=="TRY"&&T!=="ELSE"&&T!=="=")while(y())h();return b()&&e.pop(),e.push([H,n]),v(1)}if(S.call(u,H)>=0)return e.push([H,n]),v(1);if(S.call(o,H)>=0){while(g())y()?h():w()?d():e.pop();e.pop()}if((S.call(l,H)>=0&&t.spaced&&!t.stringEnd||H==="?"&&n>0&&!r[n-1].spaced)&&(S.call(a,E)>=0||S.call(c,E)>=0&&((B=r[n+1])!=null?!B.spaced:!void 0)&&((j=r[n+1])!=null?!j.newLine:!void 0)))return H==="?"&&(H=t[0]="FUNC_EXIST"),_(n+1),v(2);if(S.call(l,H)>=0&&this.matchTags(n+1,"INDENT",null,":")&&!this.findTagsBackwards(n,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"]))return _(n+1),e.push(["INDENT",n+2]),v(3);if(H===":"){this.tag(n-2)==="@"?C=n-2:C=n-1;while(this.tag(C-2)==="HERECOMMENT")C-=2;P=C===0||(F=this.tag(C-1),S.call(p,F)>=0)||r[C-1].newLine;if(O()){I=O(),A=I[0],L=I[1];if((A==="{"||A==="INDENT"&&this.tag(L-1)==="{")&&(P||this.tag(C-1)===","||this.tag(C-1)==="{"))return v(1)}return D(C,!!P),v(2)}if(y()&&S.call(i,H)>=0){if(T==="OUTDENT")return h(),v(1);if(N.newLine)return s(),v(1)}w()&&S.call(p,H)>=0&&(O()[2].sameLine=!1);if(S.call(f,H)>=0)while(g()){q=O(),A=q[0],L=q[1],R=q[2],k=R.sameLine,P=R.startsLine;if(y()&&T!==",")h();else if(w()&&k&&!P)d();else{if(!w()||H!=="TERMINATOR"||T===","||!!P&&!!this.looksObjectish(n+1))break;d()}}if(H===","&&!this.looksObjectish(n+1)&&w()&&(E!=="TERMINATOR"||!this.looksObjectish(n+2))){x=E==="OUTDENT"?1:0;while(w())d(n+x)}return v(1)}return e.push(["CONTROL",n,{ours:!0}]),v(1)})},e.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(e,t,n){var r,i,s,o,u,a;return e[2]?1:!e.generated&&!e.explicit?1:(e[0]==="{"&&(s=(u=n[t+1])!=null?u[2]:void 0)?(i=s.first_line,r=s.first_column):(o=(a=n[t-1])!=null?a[2]:void 0)?(i=o.last_line,r=o.last_column):i=r=0,e[2]={first_line:i,first_column:r,last_line:i,last_column:r},1)})},e.prototype.normalizeLines=function(){var e,t,n,r,o;return o=n=r=null,t=function(e,t){var n,r,u,a;return e[1]!==";"&&(n=e[0],S.call(d,n)>=0)&&!(e[0]==="TERMINATOR"&&(r=this.tag(t+1),S.call(s,r)>=0))&&(e[0]!=="ELSE"||o==="THEN")&&((u=e[0])!=="CATCH"&&u!=="FINALLY"||o!=="->"&&o!=="=>")||(a=e[0],S.call(i,a)>=0)&&this.tokens[t-1].newLine},e=function(e,t){return this.tokens.splice(this.tag(t-1)===","?t-1:t,0,r)},this.scanTokens(function(i,u,a){var f,l,c,h,p,d;l=i[0];if(l==="TERMINATOR"){if(this.tag(u+1)==="ELSE"&&this.tag(u-1)!=="OUTDENT")return a.splice.apply(a,[u,1].concat(x.call(this.indentation()))),1;if(h=this.tag(u+1),S.call(s,h)>=0)return a.splice(u,1),0}if(l==="CATCH")for(f=c=1;c<=2;f=++c){if((p=this.tag(u+f))!=="OUTDENT"&&p!=="TERMINATOR"&&p!=="FINALLY")continue;return a.splice.apply(a,[u+f,0].concat(x.call(this.indentation()))),2+f}return S.call(v,l)>=0&&this.tag(u+1)!=="INDENT"&&(l!=="ELSE"||this.tag(u+1)!=="IF")?(o=l,d=this.indentation(!0),n=d[0],r=d[1],o==="THEN"&&(n.fromThen=!0),a.splice(u+1,0,n),this.detectEnd(u+2,t,e),l==="THEN"&&a.splice(u,1),1):1})},e.prototype.tagPostfixConditionals=function(){var e,t,n;return n=null,t=function(e,t){var n,r;return r=e[0],n=this.tokens[t-1][0],r==="TERMINATOR"||r==="INDENT"&&S.call(v,n)<0},e=function(e,t){if(e[0]!=="INDENT"||e.generated&&!e.fromThen)return n[0]="POST_"+n[0]},this.scanTokens(function(r,i){return r[0]!=="IF"?1:(n=r,this.detectEnd(i+1,t,e),1)})},e.prototype.indentation=function(e){var t,n;return e==null&&(e=!1),t=["INDENT",2],n=["OUTDENT",2],e&&(t.generated=n.generated=!0),e||(t.explicit=n.explicit=!0),[t,n]},e.prototype.generate=m,e.prototype.tag=function(e){var t;return(t=this.tokens[e])!=null?t[0]:void 0},e}(),r=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"]],t.INVERSES=h={},u=[],o=[];for(b=0,w=r.length;b<w;b++)E=r[b],g=E[0],y=E[1],u.push(h[y]=g),o.push(h[g]=y);s=["CATCH","THEN","ELSE","FINALLY"].concat(o),l=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],a=["IDENTIFIER","NUMBER","STRING","JS","REGEX","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","BOOL","NULL","UNDEFINED","UNARY","SUPER","THROW","@","->","=>","[","(","{","--","++"],c=["+","-"],f=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],v=["ELSE","->","=>","TRY","FINALLY","THEN"],d=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],p=["TERMINATOR","INDENT","OUTDENT"],i=[".","?.","::","?::"]}),ace.define("ace/mode/coffee/helpers",["require","exports","module"],function(e,t,n){var r,i,s,o,u,a,f;t.starts=function(e,t,n){return t===e.substr(n,t.length)},t.ends=function(e,t,n){var r;return r=t.length,t===e.substr(e.length-r-(n||0),r)},t.repeat=u=function(e,t){var n;n="";while(t>0)t&1&&(n+=e),t>>>=1,e+=e;return n},t.compact=function(e){var t,n,r,i;i=[];for(n=0,r=e.length;n<r;n++)t=e[n],t&&i.push(t);return i},t.count=function(e,t){var n,r;n=r=0;if(!t.length)return 1/0;while(r=1+e.indexOf(t,r))n++;return n},t.merge=function(e,t){return i(i({},e),t)},i=t.extend=function(e,t){var n,r;for(n in t)r=t[n],e[n]=r;return e},t.flatten=s=function(e){var t,n,r,i;n=[];for(r=0,i=e.length;r<i;r++)t=e[r],t instanceof Array?n=n.concat(s(t)):n.push(t);return n},t.del=function(e,t){var n;return n=e[t],delete e[t],n},t.last=o=function(e,t){return e[e.length-(t||0)-1]},t.some=(f=Array.prototype.some)!=null?f:function(e){var t,n,r;for(n=0,r=this.length;n<r;n++){t=this[n];if(e(t))return!0}return!1},t.invertLiterate=function(e){var t,n,r;return r=!0,n=function(){var n,i,s,o;s=e.split("\n"),o=[];for(n=0,i=s.length;n<i;n++)t=s[n],r&&/^([ ]{4}|[ ]{0,3}\t)/.test(t)?o.push(t):(r=/^\s*$/.test(t))?o.push(t):o.push("# "+t);return o}(),n.join("\n")},r=function(e,t){return t?{first_line:e.first_line,first_column:e.first_column,last_line:t.last_line,last_column:t.last_column}:e},t.addLocationDataFn=function(e,t){return function(n){return typeof n=="object"&&!!n.updateLocationDataIfMissing&&n.updateLocationDataIfMissing(r(e,t)),n}},t.locationDataToString=function(e){var t;return"2"in e&&"first_line"in e[2]?t=e[2]:"first_line"in e&&(t=e),t?""+(t.first_line+1)+":"+(t.first_column+1)+"-"+(""+(t.last_line+1)+":"+(t.last_column+1)):"No location data"},t.baseFileName=function(e,t,n){var r,i;return t==null&&(t=!1),n==null&&(n=!1),i=n?/\\|\//:/\//,r=e.split(i),e=r[r.length-1],t&&e.indexOf(".")>=0?(r=e.split("."),r.pop(),r[r.length-1]==="coffee"&&r.length>1&&r.pop(),r.join(".")):e},t.isCoffee=function(e){return/\.((lit)?coffee|coffee\.md)$/.test(e)},t.isLiterate=function(e){return/\.(litcoffee|coffee\.md)$/.test(e)},t.throwSyntaxError=function(e,t){var n;throw t.last_line==null&&(t.last_line=t.first_line),t.last_column==null&&(t.last_column=t.first_column),n=new SyntaxError(e),n.location=t,n.toString=a,n.stack=n.toString(),n},t.updateSyntaxError=function(e,t,n){return e.toString===a&&(e.code||(e.code=t),e.filename||(e.filename=n),e.stack=e.toString()),e},a=function(){var e,t,n,r,i,s,o,a,f,l,c,h,p;if(!this.code||!this.location)return Error.prototype.toString.call(this);h=this.location,o=h.first_line,s=h.first_column,f=h.last_line,a=h.last_column,f==null&&(f=o),a==null&&(a=s),i=this.filename||"[stdin]",e=this.code.split("\n")[o],c=s,r=o===f?a+1:e.length,l=u(" ",c)+u("^",r-c),typeof process!="undefined"&&process!==null&&(n=process.stdout.isTTY&&!process.env.NODE_DISABLE_COLORS);if((p=this.colorful)!=null?p:n)t=function(e){return""+e+""},e=e.slice(0,c)+t(e.slice(c,r))+e.slice(r),l=t(l);return""+i+":"+(o+1)+":"+(s+1)+": error: "+this.message+"\n"+e+"\n"+l}}),ace.define("ace/mode/coffee/lexer",["require","exports","module","ace/mode/coffee/rewriter","ace/mode/coffee/helpers"],function(e,t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z,W,X,V,$,J,K,Q,G,Y,Z,et,tt,nt=[].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1};et=e("./rewriter"),F=et.Rewriter,w=et.INVERSES,tt=e("./helpers"),V=tt.count,Y=tt.starts,X=tt.compact,K=tt.last,G=tt.repeat,$=tt.invertLiterate,Q=tt.locationDataToString,Z=tt.throwSyntaxError,t.Lexer=k=function(){function e(){}return e.prototype.tokenize=function(e,t){var n,r,i,s;t==null&&(t={}),this.literate=t.literate,this.indent=0,this.baseIndent=0,this.indebt=0,this.outdebt=0,this.indents=[],this.ends=[],this.tokens=[],this.chunkLine=t.line||0,this.chunkColumn=t.column||0,e=this.clean(e),r=0;while(this.chunk=e.slice(r))n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.heredocToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),s=this.getLineAndColumnFromChunk(n),this.chunkLine=s[0],this.chunkColumn=s[1],r+=n;return this.closeIndentation(),(i=this.ends.pop())&&this.error("missing "+i),t.rewrite===!1?this.tokens:(new F).rewrite(this.tokens)},e.prototype.clean=function(e){return e.charCodeAt(0)===r&&(e=e.slice(1)),e=e.replace(/\r/g,"").replace(U,""),W.test(e)&&(e="\n"+e,this.chunkLine--),this.literate&&(e=$(e)),e},e.prototype.identifierToken=function(){var e,t,n,r,i,s,o,l,c,h,p,d,v,m;return(o=y.exec(this.chunk))?(s=o[0],r=o[1],e=o[2],i=r.length,l=void 0,r==="own"&&this.tag()==="FOR"?(this.token("OWN",r),r.length):(n=e||(c=K(this.tokens))&&((d=c[0])==="."||d==="?."||d==="::"||d==="?::"||!c.spaced&&c[0]==="@"),h="IDENTIFIER",!n&&(nt.call(x,r)>=0||nt.call(f,r)>=0)&&(h=r.toUpperCase(),h==="WHEN"&&(v=this.tag(),nt.call(T,v)>=0)?h="LEADING_WHEN":h==="FOR"?this.seenFor=!0:h==="UNLESS"?h="IF":nt.call(z,h)>=0?h="UNARY":nt.call(B,h)>=0&&(h!=="INSTANCEOF"&&this.seenFor?(h="FOR"+h,this.seenFor=!1):(h="RELATION",this.value()==="!"&&(l=this.tokens.pop(),r="!"+r)))),nt.call(S,r)>=0&&(n?(h="IDENTIFIER",r=new String(r),r.reserved=!0):nt.call(j,r)>=0&&this.error('reserved word "'+r+'"')),n||(nt.call(u,r)>=0&&(r=a[r]),h=function(){switch(r){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"&&":case"||":return"LOGIC";case"true":case"false":return"BOOL";case"break":case"continue":return"STATEMENT";default:return h}}()),p=this.token(h,r,0,i),l&&(m=[l[2].first_line,l[2].first_column],p[2].first_line=m[0],p[2].first_column=m[1]),e&&(t=s.lastIndexOf(":"),this.token(":",":",t,e.length)),s.length)):0},e.prototype.numberToken=function(){var e,t,n,r,i;if(!(n=D.exec(this.chunk)))return 0;r=n[0],/^0[BOX]/.test(r)?this.error("radix prefix '"+r+"' must be lowercase"):/E/.test(r)&&!/^0x/.test(r)?this.error("exponential notation '"+r+"' must be indicated with a lowercase 'e'"):/^0\d*[89]/.test(r)?this.error("decimal literal '"+r+"' must not be prefixed with '0'"):/^0\d+/.test(r)&&this.error("octal literal '"+r+"' must be prefixed with '0o'"),t=r.length;if(i=/^0o([0-7]+)/.exec(r))r="0x"+parseInt(i[1],8).toString(16);if(e=/^0b([01]+)/.exec(r))r="0x"+parseInt(e[1],2).toString(16);return this.token("NUMBER",r,0,t),t},e.prototype.stringToken=function(){var e,t,n,r;switch(t=this.chunk.charAt(0)){case"'":n=q.exec(this.chunk)[0];break;case'"':n=this.balancedString(this.chunk,'"')}return n?(r=this.removeNewlines(n.slice(1,-1)),t==='"'&&0<n.indexOf("#{",1)?this.interpolateString(r,{strOffset:1,lexedLength:n.length}):this.token("STRING",t+this.escapeLines(r)+t,0,n.length),(e=/^(?:\\.|[^\\])*\\(?:0[0-7]|[1-7])/.test(n))&&this.error("octal escape sequences "+n+" are not allowed"),n.length):0},e.prototype.heredocToken=function(){var e,t,n,r;return(n=p.exec(this.chunk))?(t=n[0],r=t.charAt(0),e=this.sanitizeHeredoc(n[2],{quote:r,indent:null}),r==='"'&&0<=e.indexOf("#{")?this.interpolateString(e,{heredoc:!0,strOffset:3,lexedLength:t.length}):this.token("STRING",this.makeString(e,r,!0),0,t.length),t.length):0},e.prototype.commentToken=function(){var e,t,n;return(n=this.chunk.match(l))?(e=n[0],t=n[1],t&&this.token("HERECOMMENT",this.sanitizeHeredoc(t,{herecomment:!0,indent:G(" ",this.indent)}),0,e.length),e.length):0},e.prototype.jsToken=function(){var e,t;return this.chunk.charAt(0)!=="`"||!(e=E.exec(this.chunk))?0:(this.token("JS",(t=e[0]).slice(1,-1),0,t.length),t.length)},e.prototype.regexToken=function(){var e,t,n,r,i,s,o;return this.chunk.charAt(0)!=="/"?0:(n=m.exec(this.chunk))?(t=this.heregexToken(n),t):(r=K(this.tokens),r&&(s=r[0],nt.call(r.spaced?M:_,s)>=0)?0:(n=H.exec(this.chunk))?(o=n,n=o[0],i=o[1],e=o[2],i.slice(0,2)==="/*"&&this.error("regular expressions cannot begin with `*`"),i==="//"&&(i="/(?:)/"),this.token("REGEX",""+i+e,0,n.length),n.length):0)},e.prototype.heregexToken=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m;i=e[0],t=e[1],n=e[2];if(0>t.indexOf("#{"))return u=this.escapeLines(t.replace(g,"$1$2").replace(/\//g,"\\/"),!0),u.match(/^\*/)&&this.error("regular expressions cannot begin with `*`"),this.token("REGEX","/"+(u||"(?:)")+"/"+n,0,i.length),i.length;this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),l=[],d=this.interpolateString(t,{regex:!0});for(h=0,p=d.length;h<p;h++){f=d[h],a=f[0],c=f[1];if(a==="TOKENS")l.push.apply(l,c);else if(a==="NEOSTRING"){if(!(c=c.replace(g,"$1$2")))continue;c=c.replace(/\\/g,"\\\\"),f[0]="STRING",f[1]=this.makeString(c,'"',!0),l.push(f)}else this.error("Unexpected "+a);o=K(this.tokens),s=["+","+"],s[2]=o[2],l.push(s)}return l.pop(),((v=l[0])!=null?v[0]:void 0)!=="STRING"&&(this.token("STRING",'""',0,0),this.token("+","+",0,0)),(m=this.tokens).push.apply(m,l),n&&(r=i.lastIndexOf(n),this.token(",",",",r,0),this.token("STRING",'"'+n+'"',r,n.length)),this.token(")",")",i.length-1,0),i.length},e.prototype.lineToken=function(){var e,t,n,r,i;if(!(n=O.exec(this.chunk)))return 0;t=n[0],this.seenFor=!1,i=t.length-1-t.lastIndexOf("\n"),r=this.unfinished();if(i-this.indebt===this.indent)return r?this.suppressNewlines():this.newlineToken(0),t.length;if(i>this.indent){if(r)return this.indebt=i-this.indent,this.suppressNewlines(),t.length;if(!this.tokens.length)return this.baseIndent=this.indent=i,t.length;e=i-this.indent+this.outdebt,this.token("INDENT",e,t.length-i,i),this.indents.push(e),this.ends.push("OUTDENT"),this.outdebt=this.indebt=0}else i<this.baseIndent?this.error("missing indentation",t.length):(this.indebt=0,this.outdentToken(this.indent-i,r,t.length));return this.indent=i,t.length},e.prototype.outdentToken=function(e,t,n){var r,i;while(e>0)i=this.indents.length-1,this.indents[i]===void 0?e=0:this.indents[i]===this.outdebt?(e-=this.outdebt,this.outdebt=0):this.indents[i]<this.outdebt?(this.outdebt-=this.indents[i],e-=this.indents[i]):(r=this.indents.pop()+this.outdebt,e-=r,this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",r,0,n));r&&(this.outdebt-=e);while(this.value()===";")this.tokens.pop();return this.tag()!=="TERMINATOR"&&!t&&this.token("TERMINATOR","\n",n,0),this},e.prototype.whitespaceToken=function(){var e,t,n;return!(e=W.exec(this.chunk))&&!(t=this.chunk.charAt(0)==="\n")?0:(n=K(this.tokens),n&&(n[e?"spaced":"newLine"]=!0),e?e[0].length:0)},e.prototype.newlineToken=function(e){while(this.value()===";")this.tokens.pop();return this.tag()!=="TERMINATOR"&&this.token("TERMINATOR","\n",e,0),this},e.prototype.suppressNewlines=function(){return this.value()==="\\"&&this.tokens.pop(),this},e.prototype.literalToken=function(){var e,t,n,r,i,u,a,f;(e=P.exec(this.chunk))?(r=e[0],o.test(r)&&this.tagParameters()):r=this.chunk.charAt(0),n=r,t=K(this.tokens);if(r==="="&&t){!t[1].reserved&&(i=t[1],nt.call(S,i)>=0)&&this.error('reserved word "'+this.value()+"\" can't be assigned");if((u=t[1])==="||"||u==="&&")return t[0]="COMPOUND_ASSIGN",t[1]+="=",r.length}if(r===";")this.seenFor=!1,n="TERMINATOR";else if(nt.call(L,r)>=0)n="MATH";else if(nt.call(c,r)>=0)n="COMPARE";else if(nt.call(h,r)>=0)n="COMPOUND_ASSIGN";else if(nt.call(z,r)>=0)n="UNARY";else if(nt.call(I,r)>=0)n="SHIFT";else if(nt.call(C,r)>=0||r==="?"&&(t!=null?t.spaced:void 0))n="LOGIC";else if(t&&!t.spaced)if(r==="("&&(a=t[0],nt.call(s,a)>=0))t[0]==="?"&&(t[0]="FUNC_EXIST"),n="CALL_START";else if(r==="["&&(f=t[0],nt.call(b,f)>=0)){n="INDEX_START";switch(t[0]){case"?":t[0]="INDEX_SOAK"}}switch(r){case"(":case"{":case"[":this.ends.push(w[r]);break;case")":case"}":case"]":this.pair(r)}return this.token(n,r),r.length},e.prototype.sanitizeHeredoc=function(e,t){var n,r,i,s,o;i=t.indent,r=t.herecomment;if(r){d.test(e)&&this.error('block comment cannot contain "*/", starting');if(e.indexOf("\n")<0)return e}else while(s=v.exec(e)){n=s[1];if(i===null||0<(o=n.length)&&o<i.length)i=n}return i&&(e=e.replace(RegExp("\\n"+i,"g"),"\n")),r||(e=e.replace(/^\n/,"")),e},e.prototype.tagParameters=function(){var e,t,n,r;if(this.tag()!==")")return this;t=[],r=this.tokens,e=r.length,r[--e][0]="PARAM_END";while(n=r[--e])switch(n[0]){case")":t.push(n);break;case"(":case"CALL_START":if(!t.length)return n[0]==="("?(n[0]="PARAM_START",this):this;t.pop()}return this},e.prototype.closeIndentation=function(){return this.outdentToken(this.indent)},e.prototype.balancedString=function(e,t){var n,r,i,s,o,u,a,f;n=0,u=[t];for(r=a=1,f=e.length;1<=f?a<f:a>f;r=1<=f?++a:--a){if(n){--n;continue}switch(i=e.charAt(r)){case"\\":++n;continue;case t:u.pop();if(!u.length)return e.slice(0,+r+1||9e9);t=u[u.length-1];continue}t!=="}"||i!=='"'&&i!=="'"?t==="}"&&i==="/"&&(s=m.exec(e.slice(r))||H.exec(e.slice(r)))?n+=s[0].length-1:t==="}"&&i==="{"?u.push(t="}"):t==='"'&&o==="#"&&i==="{"&&u.push(t="}"):u.push(t=i),o=i}return this.error("missing "+u.pop()+", starting")},e.prototype.interpolateString=function(t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O;n==null&&(n={}),s=n.heredoc,b=n.regex,v=n.offsetInChunk,E=n.strOffset,c=n.lexedLength,v=v||0,E=E||0,c=c||t.length,T=[],m=0,o=-1;while(l=t.charAt(o+=1)){if(l==="\\"){o+=1;continue}if(l!=="#"||t.charAt(o+1)!=="{"||!(i=this.balancedString(t.slice(o+1),"}")))continue;m<o&&T.push(this.makeToken("NEOSTRING",t.slice(m,o),E+m)),u=i.slice(1,-1);if(u.length){L=this.getLineAndColumnFromChunk(E+o+1),h=L[0],r=L[1],d=(new e).tokenize(u,{line:h,column:r,rewrite:!1}),y=d.pop(),((A=d[0])!=null?A[0]:void 0)==="TERMINATOR"&&(y=d.shift());if(f=d.length)f>1&&(d.unshift(this.makeToken("(","(",E+o+1,0)),d.push(this.makeToken(")",")",E+o+1+u.length,0))),T.push(["TOKENS",d])}o+=i.length,m=o+1}o>m&&m<t.length&&T.push(this.makeToken("NEOSTRING",t.slice(m),E+m));if(b)return T;if(!T.length)return this.token("STRING",'""',v,c);T[0][0]!=="NEOSTRING"&&T.unshift(this.makeToken("NEOSTRING","",v)),(a=T.length>1)&&this.token("(","(",v,0);for(o=C=0,k=T.length;C<k;o=++C)x=T[o],S=x[0],N=x[1],o&&(o&&(g=this.token("+","+")),p=S==="TOKENS"?N[0]:x,g[2]={first_line:p[2].first_line,first_column:p[2].first_column,last_line:p[2].first_line,last_column:p[2].first_column}),S==="TOKENS"?(O=this.tokens).push.apply(O,N):S==="NEOSTRING"?(x[0]="STRING",x[1]=this.makeString(N,'"',s),this.tokens.push(x)):this.error("Unexpected "+S);return a&&(w=this.makeToken(")",")",v+c,0),w.stringEnd=!0,this.tokens.push(w)),T},e.prototype.pair=function(e){var t,n;return e!==(n=K(this.ends))?("OUTDENT"!==n&&this.error("unmatched "+e),this.indent-=t=K(this.indents),this.outdentToken(t,!0),this.pair(e)):this.ends.pop()},e.prototype.getLineAndColumnFromChunk=function(e){var t,n,r,i;return e===0?[this.chunkLine,this.chunkColumn]:(e>=this.chunk.length?i=this.chunk:i=this.chunk.slice(0,+(e-1)+1||9e9),n=V(i,"\n"),t=this.chunkColumn,n>0?(r=i.split("\n"),t=K(r).length):t+=i.length,[this.chunkLine+n,t])},e.prototype.makeToken=function(e,t,n,r){var i,s,o,u,a;return n==null&&(n=0),r==null&&(r=t.length),s={},u=this.getLineAndColumnFromChunk(n),s.first_line=u[0],s.first_column=u[1],i=Math.max(0,r-1),a=this.getLineAndColumnFromChunk(n+i),s.last_line=a[0],s.last_column=a[1],o=[e,t,s],o},e.prototype.token=function(e,t,n,r){var i;return i=this.makeToken(e,t,n,r),this.tokens.push(i),i},e.prototype.tag=function(e,t){var n;return(n=K(this.tokens,e))&&(t?n[0]=t:n[0])},e.prototype.value=function(e,t){var n;return(n=K(this.tokens,e))&&(t?n[1]=t:n[1])},e.prototype.unfinished=function(){var e;return N.test(this.chunk)||(e=this.tag())==="\\"||e==="."||e==="?."||e==="?::"||e==="UNARY"||e==="MATH"||e==="+"||e==="-"||e==="SHIFT"||e==="RELATION"||e==="COMPARE"||e==="LOGIC"||e==="THROW"||e==="EXTENDS"},e.prototype.removeNewlines=function(e){return e.replace(/^\s*\n\s*/,"").replace(/([^\\]|\\\\)\s*\n\s*$/,"$1")},e.prototype.escapeLines=function(e,t){return e=e.replace(/\\[^\S\n]*(\n|\\)\s*/g,function(e,t){return t==="\n"?"":e}),t?e.replace(A,"\\n"):e.replace(/\s*\n\s*/g," ")},e.prototype.makeString=function(e,t,n){return e?(e=e.replace(RegExp("\\\\("+t+"|\\\\)","g"),function(e,n){return n===t?n:e}),e=e.replace(RegExp(""+t,"g"),"\\$&"),t+this.escapeLines(e,n)+t):t+t},e.prototype.error=function(e,t){var n,r,i;return t==null&&(t=0),i=this.getLineAndColumnFromChunk(t),r=i[0],n=i[1],Z(e,{first_line:r,first_column:n})},e}(),x=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super"],f=["undefined","then","unless","until","loop","of","by","when"],a={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},u=function(){var e;e=[];for(J in a)e.push(J);return e}(),f=f.concat(u),j=["case","default","function","var","void","with","const","let","enum","export","import","native","__hasProp","__extends","__slice","__bind","__indexOf","implements","interface","package","private","protected","public","static","yield"],R=["arguments","eval"],S=x.concat(j).concat(R),t.RESERVED=j.concat(x).concat(f).concat(R),t.STRICT_PROSCRIBED=R,r=65279,y=/^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/,D=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,p=/^("""|''')((?:\\[\s\S]|[^\\])*?)(?:\n[^\n\S]*)?\1/,P=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>])\2=?|\?(\.|::)|\.{2,3})/,W=/^[^\n\S]+/,l=/^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,o=/^[-=]>/,O=/^(?:\n[^\n\S]*)+/,q=/^'[^\\']*(?:\\[\s\S][^\\']*)*'/,E=/^`[^\\`]*(?:\\.[^\\`]*)*`/,H=/^(\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)([imgy]{0,4})(?!\w)/,m=/^\/{3}((?:\\?[\s\S])+?)\/{3}([imgy]{0,4})(?!\w)/,g=/((?:\\\\)+)|\\(\s|\/)|\s+(?:#.*)?/g,A=/\n/g,v=/\n+([^\n\S]*)/g,d=/\*\//,N=/^\s*(?:,|\??\.(?![.\d])|::)/,U=/\s+$/,h=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|="],z=["!","~","NEW","TYPEOF","DELETE","DO"],C=["&&","||","&","|","^"],I=["<<",">>",">>>"],c=["==","!=","<",">","<=",">="],L=["*","/","%"],B=["IN","OF","INSTANCEOF"],i=["TRUE","FALSE"],M=["NUMBER","REGEX","BOOL","NULL","UNDEFINED","++","--"],_=M.concat(")","}","THIS","IDENTIFIER","STRING","]"),s=["IDENTIFIER","STRING","REGEX",")","]","}","?","::","@","THIS","SUPER"],b=s.concat("NUMBER","BOOL","NULL","UNDEFINED"),T=["INDENT","OUTDENT","TERMINATOR"]}),ace.define("ace/mode/coffee/parser",["require","exports","module"],function(e,t,n){function i(){this.yy={}}var r={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,Statement:8,Return:9,Comment:10,STATEMENT:11,Value:12,Invocation:13,Code:14,Operation:15,Assign:16,If:17,Try:18,While:19,For:20,Switch:21,Class:22,Throw:23,Block:24,INDENT:25,OUTDENT:26,Identifier:27,IDENTIFIER:28,AlphaNumeric:29,NUMBER:30,STRING:31,Literal:32,JS:33,REGEX:34,DEBUGGER:35,UNDEFINED:36,NULL:37,BOOL:38,Assignable:39,"=":40,AssignObj:41,ObjAssignable:42,":":43,ThisProperty:44,RETURN:45,HERECOMMENT:46,PARAM_START:47,ParamList:48,PARAM_END:49,FuncGlyph:50,"->":51,"=>":52,OptComma:53,",":54,Param:55,ParamVar:56,"...":57,Array:58,Object:59,Splat:60,SimpleAssignable:61,Accessor:62,Parenthetical:63,Range:64,This:65,".":66,"?.":67,"::":68,"?::":69,Index:70,INDEX_START:71,IndexValue:72,INDEX_END:73,INDEX_SOAK:74,Slice:75,"{":76,AssignList:77,"}":78,CLASS:79,EXTENDS:80,OptFuncExist:81,Arguments:82,SUPER:83,FUNC_EXIST:84,CALL_START:85,CALL_END:86,ArgList:87,THIS:88,"@":89,"[":90,"]":91,RangeDots:92,"..":93,Arg:94,SimpleArgs:95,TRY:96,Catch:97,FINALLY:98,CATCH:99,THROW:100,"(":101,")":102,WhileSource:103,WHILE:104,WHEN:105,UNTIL:106,Loop:107,LOOP:108,ForBody:109,FOR:110,ForStart:111,ForSource:112,ForVariables:113,OWN:114,ForValue:115,FORIN:116,FOROF:117,BY:118,SWITCH:119,Whens:120,ELSE:121,When:122,LEADING_WHEN:123,IfBlock:124,IF:125,POST_IF:126,UNARY:127,"-":128,"+":129,"--":130,"++":131,"?":132,MATH:133,SHIFT:134,COMPARE:135,LOGIC:136,RELATION:137,COMPOUND_ASSIGN:138,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",11:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",31:"STRING",33:"JS",34:"REGEX",35:"DEBUGGER",36:"UNDEFINED",37:"NULL",38:"BOOL",40:"=",43:":",45:"RETURN",46:"HERECOMMENT",47:"PARAM_START",49:"PARAM_END",51:"->",52:"=>",54:",",57:"...",66:".",67:"?.",68:"::",69:"?::",71:"INDEX_START",73:"INDEX_END",74:"INDEX_SOAK",76:"{",78:"}",79:"CLASS",80:"EXTENDS",83:"SUPER",84:"FUNC_EXIST",85:"CALL_START",86:"CALL_END",88:"THIS",89:"@",90:"[",91:"]",93:"..",96:"TRY",98:"FINALLY",99:"CATCH",100:"THROW",101:"(",102:")",104:"WHILE",105:"WHEN",106:"UNTIL",108:"LOOP",110:"FOR",114:"OWN",116:"FORIN",117:"FOROF",118:"BY",119:"SWITCH",121:"ELSE",123:"LEADING_WHEN",125:"IF",126:"POST_IF",127:"UNARY",128:"-",129:"+",130:"--",131:"++",132:"?",133:"MATH",134:"SHIFT",135:"COMPARE",136:"LOGIC",137:"RELATION",138:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[32,1],[16,3],[16,4],[16,5],[41,1],[41,3],[41,5],[41,1],[42,1],[42,1],[42,1],[9,2],[9,1],[10,1],[14,5],[14,2],[50,1],[50,1],[53,0],[53,1],[48,0],[48,1],[48,3],[48,4],[48,6],[55,1],[55,2],[55,3],[56,1],[56,1],[56,1],[56,1],[60,2],[61,1],[61,2],[61,2],[61,1],[39,1],[39,1],[39,1],[12,1],[12,1],[12,1],[12,1],[12,1],[62,2],[62,2],[62,2],[62,2],[62,1],[62,1],[70,3],[70,2],[72,1],[72,1],[59,4],[77,0],[77,1],[77,3],[77,4],[77,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[81,0],[81,1],[82,2],[82,4],[65,1],[65,1],[44,2],[58,2],[58,4],[92,1],[92,1],[64,5],[75,3],[75,2],[75,2],[75,1],[87,1],[87,3],[87,4],[87,4],[87,6],[94,1],[94,1],[95,1],[95,3],[18,2],[18,3],[18,4],[18,5],[97,3],[97,3],[97,2],[23,2],[63,3],[63,5],[103,2],[103,4],[103,2],[103,4],[19,2],[19,2],[19,2],[19,1],[107,2],[107,2],[20,2],[20,2],[20,2],[109,2],[109,2],[111,2],[111,3],[115,1],[115,1],[115,1],[115,1],[113,1],[113,3],[112,2],[112,2],[112,4],[112,4],[112,4],[112,6],[112,6],[21,5],[21,7],[21,4],[21,6],[120,1],[120,2],[122,3],[122,4],[124,3],[124,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]],performAction:function(t,n,r,i,s,o,u){var a=o.length-1;switch(s){case 1:return this.$=i.addLocationDataFn(u[a],u[a])(new i.Block);case 2:return this.$=o[a];case 3:this.$=i.addLocationDataFn(u[a],u[a])(i.Block.wrap([o[a]]));break;case 4:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-2].push(o[a]));break;case 5:this.$=o[a-1];break;case 6:this.$=o[a];break;case 7:this.$=o[a];break;case 8:this.$=o[a];break;case 9:this.$=o[a];break;case 10:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 11:this.$=o[a];break;case 12:this.$=o[a];break;case 13:this.$=o[a];break;case 14:this.$=o[a];break;case 15:this.$=o[a];break;case 16:this.$=o[a];break;case 17:this.$=o[a];break;case 18:this.$=o[a];break;case 19:this.$=o[a];break;case 20:this.$=o[a];break;case 21:this.$=o[a];break;case 22:this.$=o[a];break;case 23:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Block);break;case 24:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-1]);break;case 25:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 26:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 27:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 28:this.$=o[a];break;case 29:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 30:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 31:this.$=i.addLocationDataFn(u[a],u[a])(new i.Literal(o[a]));break;case 32:this.$=i.addLocationDataFn(u[a],u[a])(new i.Undefined);break;case 33:this.$=i.addLocationDataFn(u[a],u[a])(new i.Null);break;case 34:this.$=i.addLocationDataFn(u[a],u[a])(new i.Bool(o[a]));break;case 35:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Assign(o[a-2],o[a]));break;case 36:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Assign(o[a-3],o[a]));break;case 37:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Assign(o[a-4],o[a-1]));break;case 38:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 39:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Assign(i.addLocationDataFn(u[a-2])(new i.Value(o[a-2])),o[a],"object"));break;case 40:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Assign(i.addLocationDataFn(u[a-4])(new i.Value(o[a-4])),o[a-1],"object"));break;case 41:this.$=o[a];break;case 42:this.$=o[a];break;case 43:this.$=o[a];break;case 44:this.$=o[a];break;case 45:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Return(o[a]));break;case 46:this.$=i.addLocationDataFn(u[a],u[a])(new i.Return);break;case 47:this.$=i.addLocationDataFn(u[a],u[a])(new i.Comment(o[a]));break;case 48:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Code(o[a-3],o[a],o[a-1]));break;case 49:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Code([],o[a],o[a-1]));break;case 50:this.$=i.addLocationDataFn(u[a],u[a])("func");break;case 51:this.$=i.addLocationDataFn(u[a],u[a])("boundfunc");break;case 52:this.$=o[a];break;case 53:this.$=o[a];break;case 54:this.$=i.addLocationDataFn(u[a],u[a])([]);break;case 55:this.$=i.addLocationDataFn(u[a],u[a])([o[a]]);break;case 56:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-2].concat(o[a]));break;case 57:this.$=i.addLocationDataFn(u[a-3],u[a])(o[a-3].concat(o[a]));break;case 58:this.$=i.addLocationDataFn(u[a-5],u[a])(o[a-5].concat(o[a-2]));break;case 59:this.$=i.addLocationDataFn(u[a],u[a])(new i.Param(o[a]));break;case 60:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Param(o[a-1],null,!0));break;case 61:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Param(o[a-2],o[a]));break;case 62:this.$=o[a];break;case 63:this.$=o[a];break;case 64:this.$=o[a];break;case 65:this.$=o[a];break;case 66:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Splat(o[a-1]));break;case 67:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 68:this.$=i.addLocationDataFn(u[a-1],u[a])(o[a-1].add(o[a]));break;case 69:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Value(o[a-1],[].concat(o[a])));break;case 70:this.$=o[a];break;case 71:this.$=o[a];break;case 72:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 73:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 74:this.$=o[a];break;case 75:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 76:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 77:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 78:this.$=o[a];break;case 79:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Access(o[a]));break;case 80:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Access(o[a],"soak"));break;case 81:this.$=i.addLocationDataFn(u[a-1],u[a])([i.addLocationDataFn(u[a-1])(new i.Access(new i.Literal("prototype"))),i.addLocationDataFn(u[a])(new i.Access(o[a]))]);break;case 82:this.$=i.addLocationDataFn(u[a-1],u[a])([i.addLocationDataFn(u[a-1])(new i.Access(new i.Literal("prototype"),"soak")),i.addLocationDataFn(u[a])(new i.Access(o[a]))]);break;case 83:this.$=i.addLocationDataFn(u[a],u[a])(new i.Access(new i.Literal("prototype")));break;case 84:this.$=o[a];break;case 85:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-1]);break;case 86:this.$=i.addLocationDataFn(u[a-1],u[a])(i.extend(o[a],{soak:!0}));break;case 87:this.$=i.addLocationDataFn(u[a],u[a])(new i.Index(o[a]));break;case 88:this.$=i.addLocationDataFn(u[a],u[a])(new i.Slice(o[a]));break;case 89:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Obj(o[a-2],o[a-3].generated));break;case 90:this.$=i.addLocationDataFn(u[a],u[a])([]);break;case 91:this.$=i.addLocationDataFn(u[a],u[a])([o[a]]);break;case 92:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-2].concat(o[a]));break;case 93:this.$=i.addLocationDataFn(u[a-3],u[a])(o[a-3].concat(o[a]));break;case 94:this.$=i.addLocationDataFn(u[a-5],u[a])(o[a-5].concat(o[a-2]));break;case 95:this.$=i.addLocationDataFn(u[a],u[a])(new i.Class);break;case 96:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Class(null,null,o[a]));break;case 97:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Class(null,o[a]));break;case 98:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Class(null,o[a-1],o[a]));break;case 99:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Class(o[a]));break;case 100:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Class(o[a-1],null,o[a]));break;case 101:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Class(o[a-2],o[a]));break;case 102:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Class(o[a-3],o[a-1],o[a]));break;case 103:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Call(o[a-2],o[a],o[a-1]));break;case 104:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Call(o[a-2],o[a],o[a-1]));break;case 105:this.$=i.addLocationDataFn(u[a],u[a])(new i.Call("super",[new i.Splat(new i.Literal("arguments"))]));break;case 106:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Call("super",o[a]));break;case 107:this.$=i.addLocationDataFn(u[a],u[a])(!1);break;case 108:this.$=i.addLocationDataFn(u[a],u[a])(!0);break;case 109:this.$=i.addLocationDataFn(u[a-1],u[a])([]);break;case 110:this.$=i.addLocationDataFn(u[a-3],u[a])(o[a-2]);break;case 111:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(new i.Literal("this")));break;case 112:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(new i.Literal("this")));break;case 113:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Value(i.addLocationDataFn(u[a-1])(new i.Literal("this")),[i.addLocationDataFn(u[a])(new i.Access(o[a]))],"this"));break;case 114:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Arr([]));break;case 115:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Arr(o[a-2]));break;case 116:this.$=i.addLocationDataFn(u[a],u[a])("inclusive");break;case 117:this.$=i.addLocationDataFn(u[a],u[a])("exclusive");break;case 118:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Range(o[a-3],o[a-1],o[a-2]));break;case 119:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Range(o[a-2],o[a],o[a-1]));break;case 120:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Range(o[a-1],null,o[a]));break;case 121:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Range(null,o[a],o[a-1]));break;case 122:this.$=i.addLocationDataFn(u[a],u[a])(new i.Range(null,null,o[a]));break;case 123:this.$=i.addLocationDataFn(u[a],u[a])([o[a]]);break;case 124:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-2].concat(o[a]));break;case 125:this.$=i.addLocationDataFn(u[a-3],u[a])(o[a-3].concat(o[a]));break;case 126:this.$=i.addLocationDataFn(u[a-3],u[a])(o[a-2]);break;case 127:this.$=i.addLocationDataFn(u[a-5],u[a])(o[a-5].concat(o[a-2]));break;case 128:this.$=o[a];break;case 129:this.$=o[a];break;case 130:this.$=o[a];break;case 131:this.$=i.addLocationDataFn(u[a-2],u[a])([].concat(o[a-2],o[a]));break;case 132:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Try(o[a]));break;case 133:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Try(o[a-1],o[a][0],o[a][1]));break;case 134:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Try(o[a-2],null,null,o[a]));break;case 135:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Try(o[a-3],o[a-2][0],o[a-2][1],o[a]));break;case 136:this.$=i.addLocationDataFn(u[a-2],u[a])([o[a-1],o[a]]);break;case 137:this.$=i.addLocationDataFn(u[a-2],u[a])([i.addLocationDataFn(u[a-1])(new i.Value(o[a-1])),o[a]]);break;case 138:this.$=i.addLocationDataFn(u[a-1],u[a])([null,o[a]]);break;case 139:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Throw(o[a]));break;case 140:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Parens(o[a-1]));break;case 141:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Parens(o[a-2]));break;case 142:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.While(o[a]));break;case 143:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.While(o[a-2],{guard:o[a]}));break;case 144:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.While(o[a],{invert:!0}));break;case 145:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.While(o[a-2],{invert:!0,guard:o[a]}));break;case 146:this.$=i.addLocationDataFn(u[a-1],u[a])(o[a-1].addBody(o[a]));break;case 147:this.$=i.addLocationDataFn(u[a-1],u[a])(o[a].addBody(i.addLocationDataFn(u[a-1])(i.Block.wrap([o[a-1]]))));break;case 148:this.$=i.addLocationDataFn(u[a-1],u[a])(o[a].addBody(i.addLocationDataFn(u[a-1])(i.Block.wrap([o[a-1]]))));break;case 149:this.$=i.addLocationDataFn(u[a],u[a])(o[a]);break;case 150:this.$=i.addLocationDataFn(u[a-1],u[a])((new i.While(i.addLocationDataFn(u[a-1])(new i.Literal("true")))).addBody(o[a]));break;case 151:this.$=i.addLocationDataFn(u[a-1],u[a])((new i.While(i.addLocationDataFn(u[a-1])(new i.Literal("true")))).addBody(i.addLocationDataFn(u[a])(i.Block.wrap([o[a]]))));break;case 152:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.For(o[a-1],o[a]));break;case 153:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.For(o[a-1],o[a]));break;case 154:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.For(o[a],o[a-1]));break;case 155:this.$=i.addLocationDataFn(u[a-1],u[a])({source:i.addLocationDataFn(u[a])(new i.Value(o[a]))});break;case 156:this.$=i.addLocationDataFn(u[a-1],u[a])(function(){return o[a].own=o[a-1].own,o[a].name=o[a-1][0],o[a].index=o[a-1][1],o[a]}());break;case 157:this.$=i.addLocationDataFn(u[a-1],u[a])(o[a]);break;case 158:this.$=i.addLocationDataFn(u[a-2],u[a])(function(){return o[a].own=!0,o[a]}());break;case 159:this.$=o[a];break;case 160:this.$=o[a];break;case 161:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 162:this.$=i.addLocationDataFn(u[a],u[a])(new i.Value(o[a]));break;case 163:this.$=i.addLocationDataFn(u[a],u[a])([o[a]]);break;case 164:this.$=i.addLocationDataFn(u[a-2],u[a])([o[a-2],o[a]]);break;case 165:this.$=i.addLocationDataFn(u[a-1],u[a])({source:o[a]});break;case 166:this.$=i.addLocationDataFn(u[a-1],u[a])({source:o[a],object:!0});break;case 167:this.$=i.addLocationDataFn(u[a-3],u[a])({source:o[a-2],guard:o[a]});break;case 168:this.$=i.addLocationDataFn(u[a-3],u[a])({source:o[a-2],guard:o[a],object:!0});break;case 169:this.$=i.addLocationDataFn(u[a-3],u[a])({source:o[a-2],step:o[a]});break;case 170:this.$=i.addLocationDataFn(u[a-5],u[a])({source:o[a-4],guard:o[a-2],step:o[a]});break;case 171:this.$=i.addLocationDataFn(u[a-5],u[a])({source:o[a-4],step:o[a-2],guard:o[a]});break;case 172:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Switch(o[a-3],o[a-1]));break;case 173:this.$=i.addLocationDataFn(u[a-6],u[a])(new i.Switch(o[a-5],o[a-3],o[a-1]));break;case 174:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Switch(null,o[a-1]));break;case 175:this.$=i.addLocationDataFn(u[a-5],u[a])(new i.Switch(null,o[a-3],o[a-1]));break;case 176:this.$=o[a];break;case 177:this.$=i.addLocationDataFn(u[a-1],u[a])(o[a-1].concat(o[a]));break;case 178:this.$=i.addLocationDataFn(u[a-2],u[a])([[o[a-1],o[a]]]);break;case 179:this.$=i.addLocationDataFn(u[a-3],u[a])([[o[a-2],o[a-1]]]);break;case 180:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.If(o[a-1],o[a],{type:o[a-2]}));break;case 181:this.$=i.addLocationDataFn(u[a-4],u[a])(o[a-4].addElse(i.addLocationDataFn(u[a-2],u[a])(new i.If(o[a-1],o[a],{type:o[a-2]}))));break;case 182:this.$=o[a];break;case 183:this.$=i.addLocationDataFn(u[a-2],u[a])(o[a-2].addElse(o[a]));break;case 184:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.If(o[a],i.addLocationDataFn(u[a-2])(i.Block.wrap([o[a-2]])),{type:o[a-1],statement:!0}));break;case 185:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.If(o[a],i.addLocationDataFn(u[a-2])(i.Block.wrap([o[a-2]])),{type:o[a-1],statement:!0}));break;case 186:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op(o[a-1],o[a]));break;case 187:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op("-",o[a]));break;case 188:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op("+",o[a]));break;case 189:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op("--",o[a]));break;case 190:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op("++",o[a]));break;case 191:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op("--",o[a-1],null,!0));break;case 192:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Op("++",o[a-1],null,!0));break;case 193:this.$=i.addLocationDataFn(u[a-1],u[a])(new i.Existence(o[a-1]));break;case 194:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Op("+",o[a-2],o[a]));break;case 195:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Op("-",o[a-2],o[a]));break;case 196:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Op(o[a-1],o[a-2],o[a]));break;case 197:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Op(o[a-1],o[a-2],o[a]));break;case 198:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Op(o[a-1],o[a-2],o[a]));break;case 199:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Op(o[a-1],o[a-2],o[a]));break;case 200:this.$=i.addLocationDataFn(u[a-2],u[a])(function(){return o[a-1].charAt(0)==="!"?(new i.Op(o[a-1].slice(1),o[a-2],o[a])).invert():new i.Op(o[a-1],o[a-2],o[a])}());break;case 201:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Assign(o[a-2],o[a],o[a-1]));break;case 202:this.$=i.addLocationDataFn(u[a-4],u[a])(new i.Assign(o[a-4],o[a-1],o[a-3]));break;case 203:this.$=i.addLocationDataFn(u[a-3],u[a])(new i.Assign(o[a-3],o[a],o[a-2]));break;case 204:this.$=i.addLocationDataFn(u[a-2],u[a])(new i.Extends(o[a-2],o[a]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[3]},{1:[2,2],6:[1,72]},{1:[2,3],6:[2,3],26:[2,3],102:[2,3]},{1:[2,6],6:[2,6],26:[2,6],102:[2,6],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,7],6:[2,7],26:[2,7],102:[2,7],103:85,104:[1,63],106:[1,64],109:86,110:[1,66],111:67,126:[1,84]},{1:[2,11],6:[2,11],25:[2,11],26:[2,11],49:[2,11],54:[2,11],57:[2,11],62:88,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],73:[2,11],74:[1,96],78:[2,11],81:87,84:[1,89],85:[2,107],86:[2,11],91:[2,11],93:[2,11],102:[2,11],104:[2,11],105:[2,11],106:[2,11],110:[2,11],118:[2,11],126:[2,11],128:[2,11],129:[2,11],132:[2,11],133:[2,11],134:[2,11],135:[2,11],136:[2,11],137:[2,11]},{1:[2,12],6:[2,12],25:[2,12],26:[2,12],49:[2,12],54:[2,12],57:[2,12],62:98,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],73:[2,12],74:[1,96],78:[2,12],81:97,84:[1,89],85:[2,107],86:[2,12],91:[2,12],93:[2,12],102:[2,12],104:[2,12],105:[2,12],106:[2,12],110:[2,12],118:[2,12],126:[2,12],128:[2,12],129:[2,12],132:[2,12],133:[2,12],134:[2,12],135:[2,12],136:[2,12],137:[2,12]},{1:[2,13],6:[2,13],25:[2,13],26:[2,13],49:[2,13],54:[2,13],57:[2,13],73:[2,13],78:[2,13],86:[2,13],91:[2,13],93:[2,13],102:[2,13],104:[2,13],105:[2,13],106:[2,13],110:[2,13],118:[2,13],126:[2,13],128:[2,13],129:[2,13],132:[2,13],133:[2,13],134:[2,13],135:[2,13],136:[2,13],137:[2,13]},{1:[2,14],6:[2,14],25:[2,14],26:[2,14],49:[2,14],54:[2,14],57:[2,14],73:[2,14],78:[2,14],86:[2,14],91:[2,14],93:[2,14],102:[2,14],104:[2,14],105:[2,14],106:[2,14],110:[2,14],118:[2,14],126:[2,14],128:[2,14],129:[2,14],132:[2,14],133:[2,14],134:[2,14],135:[2,14],136:[2,14],137:[2,14]},{1:[2,15],6:[2,15],25:[2,15],26:[2,15],49:[2,15],54:[2,15],57:[2,15],73:[2,15],78:[2,15],86:[2,15],91:[2,15],93:[2,15],102:[2,15],104:[2,15],105:[2,15],106:[2,15],110:[2,15],118:[2,15],126:[2,15],128:[2,15],129:[2,15],132:[2,15],133:[2,15],134:[2,15],135:[2,15],136:[2,15],137:[2,15]},{1:[2,16],6:[2,16],25:[2,16],26:[2,16],49:[2,16],54:[2,16],57:[2,16],73:[2,16],78:[2,16],86:[2,16],91:[2,16],93:[2,16],102:[2,16],104:[2,16],105:[2,16],106:[2,16],110:[2,16],118:[2,16],126:[2,16],128:[2,16],129:[2,16],132:[2,16],133:[2,16],134:[2,16],135:[2,16],136:[2,16],137:[2,16]},{1:[2,17],6:[2,17],25:[2,17],26:[2,17],49:[2,17],54:[2,17],57:[2,17],73:[2,17],78:[2,17],86:[2,17],91:[2,17],93:[2,17],102:[2,17],104:[2,17],105:[2,17],106:[2,17],110:[2,17],118:[2,17],126:[2,17],128:[2,17],129:[2,17],132:[2,17],133:[2,17],134:[2,17],135:[2,17],136:[2,17],137:[2,17]},{1:[2,18],6:[2,18],25:[2,18],26:[2,18],49:[2,18],54:[2,18],57:[2,18],73:[2,18],78:[2,18],86:[2,18],91:[2,18],93:[2,18],102:[2,18],104:[2,18],105:[2,18],106:[2,18],110:[2,18],118:[2,18],126:[2,18],128:[2,18],129:[2,18],132:[2,18],133:[2,18],134:[2,18],135:[2,18],136:[2,18],137:[2,18]},{1:[2,19],6:[2,19],25:[2,19],26:[2,19],49:[2,19],54:[2,19],57:[2,19],73:[2,19],78:[2,19],86:[2,19],91:[2,19],93:[2,19],102:[2,19],104:[2,19],105:[2,19],106:[2,19],110:[2,19],118:[2,19],126:[2,19],128:[2,19],129:[2,19],132:[2,19],133:[2,19],134:[2,19],135:[2,19],136:[2,19],137:[2,19]},{1:[2,20],6:[2,20],25:[2,20],26:[2,20],49:[2,20],54:[2,20],57:[2,20],73:[2,20],78:[2,20],86:[2,20],91:[2,20],93:[2,20],102:[2,20],104:[2,20],105:[2,20],106:[2,20],110:[2,20],118:[2,20],126:[2,20],128:[2,20],129:[2,20],132:[2,20],133:[2,20],134:[2,20],135:[2,20],136:[2,20],137:[2,20]},{1:[2,21],6:[2,21],25:[2,21],26:[2,21],49:[2,21],54:[2,21],57:[2,21],73:[2,21],78:[2,21],86:[2,21],91:[2,21],93:[2,21],102:[2,21],104:[2,21],105:[2,21],106:[2,21],110:[2,21],118:[2,21],126:[2,21],128:[2,21],129:[2,21],132:[2,21],133:[2,21],134:[2,21],135:[2,21],136:[2,21],137:[2,21]},{1:[2,22],6:[2,22],25:[2,22],26:[2,22],49:[2,22],54:[2,22],57:[2,22],73:[2,22],78:[2,22],86:[2,22],91:[2,22],93:[2,22],102:[2,22],104:[2,22],105:[2,22],106:[2,22],110:[2,22],118:[2,22],126:[2,22],128:[2,22],129:[2,22],132:[2,22],133:[2,22],134:[2,22],135:[2,22],136:[2,22],137:[2,22]},{1:[2,8],6:[2,8],26:[2,8],102:[2,8],104:[2,8],106:[2,8],110:[2,8],126:[2,8]},{1:[2,9],6:[2,9],26:[2,9],102:[2,9],104:[2,9],106:[2,9],110:[2,9],126:[2,9]},{1:[2,10],6:[2,10],26:[2,10],102:[2,10],104:[2,10],106:[2,10],110:[2,10],126:[2,10]},{1:[2,74],6:[2,74],25:[2,74],26:[2,74],40:[1,99],49:[2,74],54:[2,74],57:[2,74],66:[2,74],67:[2,74],68:[2,74],69:[2,74],71:[2,74],73:[2,74],74:[2,74],78:[2,74],84:[2,74],85:[2,74],86:[2,74],91:[2,74],93:[2,74],102:[2,74],104:[2,74],105:[2,74],106:[2,74],110:[2,74],118:[2,74],126:[2,74],128:[2,74],129:[2,74],132:[2,74],133:[2,74],134:[2,74],135:[2,74],136:[2,74],137:[2,74]},{1:[2,75],6:[2,75],25:[2,75],26:[2,75],49:[2,75],54:[2,75],57:[2,75],66:[2,75],67:[2,75],68:[2,75],69:[2,75],71:[2,75],73:[2,75],74:[2,75],78:[2,75],84:[2,75],85:[2,75],86:[2,75],91:[2,75],93:[2,75],102:[2,75],104:[2,75],105:[2,75],106:[2,75],110:[2,75],118:[2,75],126:[2,75],128:[2,75],129:[2,75],132:[2,75],133:[2,75],134:[2,75],135:[2,75],136:[2,75],137:[2,75]},{1:[2,76],6:[2,76],25:[2,76],26:[2,76],49:[2,76],54:[2,76],57:[2,76],66:[2,76],67:[2,76],68:[2,76],69:[2,76],71:[2,76],73:[2,76],74:[2,76],78:[2,76],84:[2,76],85:[2,76],86:[2,76],91:[2,76],93:[2,76],102:[2,76],104:[2,76],105:[2,76],106:[2,76],110:[2,76],118:[2,76],126:[2,76],128:[2,76],129:[2,76],132:[2,76],133:[2,76],134:[2,76],135:[2,76],136:[2,76],137:[2,76]},{1:[2,77],6:[2,77],25:[2,77],26:[2,77],49:[2,77],54:[2,77],57:[2,77],66:[2,77],67:[2,77],68:[2,77],69:[2,77],71:[2,77],73:[2,77],74:[2,77],78:[2,77],84:[2,77],85:[2,77],86:[2,77],91:[2,77],93:[2,77],102:[2,77],104:[2,77],105:[2,77],106:[2,77],110:[2,77],118:[2,77],126:[2,77],128:[2,77],129:[2,77],132:[2,77],133:[2,77],134:[2,77],135:[2,77],136:[2,77],137:[2,77]},{1:[2,78],6:[2,78],25:[2,78],26:[2,78],49:[2,78],54:[2,78],57:[2,78],66:[2,78],67:[2,78],68:[2,78],69:[2,78],71:[2,78],73:[2,78],74:[2,78],78:[2,78],84:[2,78],85:[2,78],86:[2,78],91:[2,78],93:[2,78],102:[2,78],104:[2,78],105:[2,78],106:[2,78],110:[2,78],118:[2,78],126:[2,78],128:[2,78],129:[2,78],132:[2,78],133:[2,78],134:[2,78],135:[2,78],136:[2,78],137:[2,78]},{1:[2,105],6:[2,105],25:[2,105],26:[2,105],49:[2,105],54:[2,105],57:[2,105],66:[2,105],67:[2,105],68:[2,105],69:[2,105],71:[2,105],73:[2,105],74:[2,105],78:[2,105],82:100,84:[2,105],85:[1,101],86:[2,105],91:[2,105],93:[2,105],102:[2,105],104:[2,105],105:[2,105],106:[2,105],110:[2,105],118:[2,105],126:[2,105],128:[2,105],129:[2,105],132:[2,105],133:[2,105],134:[2,105],135:[2,105],136:[2,105],137:[2,105]},{6:[2,54],25:[2,54],27:105,28:[1,71],44:106,48:102,49:[2,54],54:[2,54],55:103,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{24:111,25:[1,112]},{7:113,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:115,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:116,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{12:118,13:119,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:120,44:61,58:45,59:46,61:117,63:23,64:24,65:25,76:[1,68],83:[1,26],88:[1,56],89:[1,57],90:[1,55],101:[1,54]},{12:118,13:119,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:120,44:61,58:45,59:46,61:121,63:23,64:24,65:25,76:[1,68],83:[1,26],88:[1,56],89:[1,57],90:[1,55],101:[1,54]},{1:[2,71],6:[2,71],25:[2,71],26:[2,71],40:[2,71],49:[2,71],54:[2,71],57:[2,71],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,71],74:[2,71],78:[2,71],80:[1,125],84:[2,71],85:[2,71],86:[2,71],91:[2,71],93:[2,71],102:[2,71],104:[2,71],105:[2,71],106:[2,71],110:[2,71],118:[2,71],126:[2,71],128:[2,71],129:[2,71],130:[1,122],131:[1,123],132:[2,71],133:[2,71],134:[2,71],135:[2,71],136:[2,71],137:[2,71],138:[1,124]},{1:[2,182],6:[2,182],25:[2,182],26:[2,182],49:[2,182],54:[2,182],57:[2,182],73:[2,182],78:[2,182],86:[2,182],91:[2,182],93:[2,182],102:[2,182],104:[2,182],105:[2,182],106:[2,182],110:[2,182],118:[2,182],121:[1,126],126:[2,182],128:[2,182],129:[2,182],132:[2,182],133:[2,182],134:[2,182],135:[2,182],136:[2,182],137:[2,182]},{24:127,25:[1,112]},{24:128,25:[1,112]},{1:[2,149],6:[2,149],25:[2,149],26:[2,149],49:[2,149],54:[2,149],57:[2,149],73:[2,149],78:[2,149],86:[2,149],91:[2,149],93:[2,149],102:[2,149],104:[2,149],105:[2,149],106:[2,149],110:[2,149],118:[2,149],126:[2,149],128:[2,149],129:[2,149],132:[2,149],133:[2,149],134:[2,149],135:[2,149],136:[2,149],137:[2,149]},{24:129,25:[1,112]},{7:130,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,131],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,95],6:[2,95],12:118,13:119,24:132,25:[1,112],26:[2,95],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:120,44:61,49:[2,95],54:[2,95],57:[2,95],58:45,59:46,61:134,63:23,64:24,65:25,73:[2,95],76:[1,68],78:[2,95],80:[1,133],83:[1,26],86:[2,95],88:[1,56],89:[1,57],90:[1,55],91:[2,95],93:[2,95],101:[1,54],102:[2,95],104:[2,95],105:[2,95],106:[2,95],110:[2,95],118:[2,95],126:[2,95],128:[2,95],129:[2,95],132:[2,95],133:[2,95],134:[2,95],135:[2,95],136:[2,95],137:[2,95]},{7:135,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,46],6:[2,46],7:136,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[2,46],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],102:[2,46],103:37,104:[2,46],106:[2,46],107:38,108:[1,65],109:39,110:[2,46],111:67,119:[1,40],124:35,125:[1,62],126:[2,46],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,47],6:[2,47],25:[2,47],26:[2,47],54:[2,47],78:[2,47],102:[2,47],104:[2,47],106:[2,47],110:[2,47],126:[2,47]},{1:[2,72],6:[2,72],25:[2,72],26:[2,72],40:[2,72],49:[2,72],54:[2,72],57:[2,72],66:[2,72],67:[2,72],68:[2,72],69:[2,72],71:[2,72],73:[2,72],74:[2,72],78:[2,72],84:[2,72],85:[2,72],86:[2,72],91:[2,72],93:[2,72],102:[2,72],104:[2,72],105:[2,72],106:[2,72],110:[2,72],118:[2,72],126:[2,72],128:[2,72],129:[2,72],132:[2,72],133:[2,72],134:[2,72],135:[2,72],136:[2,72],137:[2,72]},{1:[2,73],6:[2,73],25:[2,73],26:[2,73],40:[2,73],49:[2,73],54:[2,73],57:[2,73],66:[2,73],67:[2,73],68:[2,73],69:[2,73],71:[2,73],73:[2,73],74:[2,73],78:[2,73],84:[2,73],85:[2,73],86:[2,73],91:[2,73],93:[2,73],102:[2,73],104:[2,73],105:[2,73],106:[2,73],110:[2,73],118:[2,73],126:[2,73],128:[2,73],129:[2,73],132:[2,73],133:[2,73],134:[2,73],135:[2,73],136:[2,73],137:[2,73]},{1:[2,28],6:[2,28],25:[2,28],26:[2,28],49:[2,28],54:[2,28],57:[2,28],66:[2,28],67:[2,28],68:[2,28],69:[2,28],71:[2,28],73:[2,28],74:[2,28],78:[2,28],84:[2,28],85:[2,28],86:[2,28],91:[2,28],93:[2,28],102:[2,28],104:[2,28],105:[2,28],106:[2,28],110:[2,28],118:[2,28],126:[2,28],128:[2,28],129:[2,28],132:[2,28],133:[2,28],134:[2,28],135:[2,28],136:[2,28],137:[2,28]},{1:[2,29],6:[2,29],25:[2,29],26:[2,29],49:[2,29],54:[2,29],57:[2,29],66:[2,29],67:[2,29],68:[2,29],69:[2,29],71:[2,29],73:[2,29],74:[2,29],78:[2,29],84:[2,29],85:[2,29],86:[2,29],91:[2,29],93:[2,29],102:[2,29],104:[2,29],105:[2,29],106:[2,29],110:[2,29],118:[2,29],126:[2,29],128:[2,29],129:[2,29],132:[2,29],133:[2,29],134:[2,29],135:[2,29],136:[2,29],137:[2,29]},{1:[2,30],6:[2,30],25:[2,30],26:[2,30],49:[2,30],54:[2,30],57:[2,30],66:[2,30],67:[2,30],68:[2,30],69:[2,30],71:[2,30],73:[2,30],74:[2,30],78:[2,30],84:[2,30],85:[2,30],86:[2,30],91:[2,30],93:[2,30],102:[2,30],104:[2,30],105:[2,30],106:[2,30],110:[2,30],118:[2,30],126:[2,30],128:[2,30],129:[2,30],132:[2,30],133:[2,30],134:[2,30],135:[2,30],136:[2,30],137:[2,30]},{1:[2,31],6:[2,31],25:[2,31],26:[2,31],49:[2,31],54:[2,31],57:[2,31],66:[2,31],67:[2,31],68:[2,31],69:[2,31],71:[2,31],73:[2,31],74:[2,31],78:[2,31],84:[2,31],85:[2,31],86:[2,31],91:[2,31],93:[2,31],102:[2,31],104:[2,31],105:[2,31],106:[2,31],110:[2,31],118:[2,31],126:[2,31],128:[2,31],129:[2,31],132:[2,31],133:[2,31],134:[2,31],135:[2,31],136:[2,31],137:[2,31]},{1:[2,32],6:[2,32],25:[2,32],26:[2,32],49:[2,32],54:[2,32],57:[2,32],66:[2,32],67:[2,32],68:[2,32],69:[2,32],71:[2,32],73:[2,32],74:[2,32],78:[2,32],84:[2,32],85:[2,32],86:[2,32],91:[2,32],93:[2,32],102:[2,32],104:[2,32],105:[2,32],106:[2,32],110:[2,32],118:[2,32],126:[2,32],128:[2,32],129:[2,32],132:[2,32],133:[2,32],134:[2,32],135:[2,32],136:[2,32],137:[2,32]},{1:[2,33],6:[2,33],25:[2,33],26:[2,33],49:[2,33],54:[2,33],57:[2,33],66:[2,33],67:[2,33],68:[2,33],69:[2,33],71:[2,33],73:[2,33],74:[2,33],78:[2,33],84:[2,33],85:[2,33],86:[2,33],91:[2,33],93:[2,33],102:[2,33],104:[2,33],105:[2,33],106:[2,33],110:[2,33],118:[2,33],126:[2,33],128:[2,33],129:[2,33],132:[2,33],133:[2,33],134:[2,33],135:[2,33],136:[2,33],137:[2,33]},{1:[2,34],6:[2,34],25:[2,34],26:[2,34],49:[2,34],54:[2,34],57:[2,34],66:[2,34],67:[2,34],68:[2,34],69:[2,34],71:[2,34],73:[2,34],74:[2,34],78:[2,34],84:[2,34],85:[2,34],86:[2,34],91:[2,34],93:[2,34],102:[2,34],104:[2,34],105:[2,34],106:[2,34],110:[2,34],118:[2,34],126:[2,34],128:[2,34],129:[2,34],132:[2,34],133:[2,34],134:[2,34],135:[2,34],136:[2,34],137:[2,34]},{4:137,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,138],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:139,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:141,88:[1,56],89:[1,57],90:[1,55],91:[1,140],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,111],6:[2,111],25:[2,111],26:[2,111],49:[2,111],54:[2,111],57:[2,111],66:[2,111],67:[2,111],68:[2,111],69:[2,111],71:[2,111],73:[2,111],74:[2,111],78:[2,111],84:[2,111],85:[2,111],86:[2,111],91:[2,111],93:[2,111],102:[2,111],104:[2,111],105:[2,111],106:[2,111],110:[2,111],118:[2,111],126:[2,111],128:[2,111],129:[2,111],132:[2,111],133:[2,111],134:[2,111],135:[2,111],136:[2,111],137:[2,111]},{1:[2,112],6:[2,112],25:[2,112],26:[2,112],27:145,28:[1,71],49:[2,112],54:[2,112],57:[2,112],66:[2,112],67:[2,112],68:[2,112],69:[2,112],71:[2,112],73:[2,112],74:[2,112],78:[2,112],84:[2,112],85:[2,112],86:[2,112],91:[2,112],93:[2,112],102:[2,112],104:[2,112],105:[2,112],106:[2,112],110:[2,112],118:[2,112],126:[2,112],128:[2,112],129:[2,112],132:[2,112],133:[2,112],134:[2,112],135:[2,112],136:[2,112],137:[2,112]},{25:[2,50]},{25:[2,51]},{1:[2,67],6:[2,67],25:[2,67],26:[2,67],40:[2,67],49:[2,67],54:[2,67],57:[2,67],66:[2,67],67:[2,67],68:[2,67],69:[2,67],71:[2,67],73:[2,67],74:[2,67],78:[2,67],80:[2,67],84:[2,67],85:[2,67],86:[2,67],91:[2,67],93:[2,67],102:[2,67],104:[2,67],105:[2,67],106:[2,67],110:[2,67],118:[2,67],126:[2,67],128:[2,67],129:[2,67],130:[2,67],131:[2,67],132:[2,67],133:[2,67],134:[2,67],135:[2,67],136:[2,67],137:[2,67],138:[2,67]},{1:[2,70],6:[2,70],25:[2,70],26:[2,70],40:[2,70],49:[2,70],54:[2,70],57:[2,70],66:[2,70],67:[2,70],68:[2,70],69:[2,70],71:[2,70],73:[2,70],74:[2,70],78:[2,70],80:[2,70],84:[2,70],85:[2,70],86:[2,70],91:[2,70],93:[2,70],102:[2,70],104:[2,70],105:[2,70],106:[2,70],110:[2,70],118:[2,70],126:[2,70],128:[2,70],129:[2,70],130:[2,70],131:[2,70],132:[2,70],133:[2,70],134:[2,70],135:[2,70],136:[2,70],137:[2,70],138:[2,70]},{7:146,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:147,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:148,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:150,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:149,25:[1,112],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{27:155,28:[1,71],44:156,58:157,59:158,64:151,76:[1,68],89:[1,109],90:[1,55],113:152,114:[1,153],115:154},{112:159,116:[1,160],117:[1,161]},{6:[2,90],10:165,25:[2,90],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:163,42:164,44:168,46:[1,44],54:[2,90],77:162,78:[2,90],89:[1,109]},{1:[2,26],6:[2,26],25:[2,26],26:[2,26],43:[2,26],49:[2,26],54:[2,26],57:[2,26],66:[2,26],67:[2,26],68:[2,26],69:[2,26],71:[2,26],73:[2,26],74:[2,26],78:[2,26],84:[2,26],85:[2,26],86:[2,26],91:[2,26],93:[2,26],102:[2,26],104:[2,26],105:[2,26],106:[2,26],110:[2,26],118:[2,26],126:[2,26],128:[2,26],129:[2,26],132:[2,26],133:[2,26],134:[2,26],135:[2,26],136:[2,26],137:[2,26]},{1:[2,27],6:[2,27],25:[2,27],26:[2,27],43:[2,27],49:[2,27],54:[2,27],57:[2,27],66:[2,27],67:[2,27],68:[2,27],69:[2,27],71:[2,27],73:[2,27],74:[2,27],78:[2,27],84:[2,27],85:[2,27],86:[2,27],91:[2,27],93:[2,27],102:[2,27],104:[2,27],105:[2,27],106:[2,27],110:[2,27],118:[2,27],126:[2,27],128:[2,27],129:[2,27],132:[2,27],133:[2,27],134:[2,27],135:[2,27],136:[2,27],137:[2,27]},{1:[2,25],6:[2,25],25:[2,25],26:[2,25],40:[2,25],43:[2,25],49:[2,25],54:[2,25],57:[2,25],66:[2,25],67:[2,25],68:[2,25],69:[2,25],71:[2,25],73:[2,25],74:[2,25],78:[2,25],80:[2,25],84:[2,25],85:[2,25],86:[2,25],91:[2,25],93:[2,25],102:[2,25],104:[2,25],105:[2,25],106:[2,25],110:[2,25],116:[2,25],117:[2,25],118:[2,25],126:[2,25],128:[2,25],129:[2,25],130:[2,25],131:[2,25],132:[2,25],133:[2,25],134:[2,25],135:[2,25],136:[2,25],137:[2,25],138:[2,25]},{1:[2,5],5:169,6:[2,5],7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[2,5],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],102:[2,5],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,193],6:[2,193],25:[2,193],26:[2,193],49:[2,193],54:[2,193],57:[2,193],73:[2,193],78:[2,193],86:[2,193],91:[2,193],93:[2,193],102:[2,193],104:[2,193],105:[2,193],106:[2,193],110:[2,193],118:[2,193],126:[2,193],128:[2,193],129:[2,193],132:[2,193],133:[2,193],134:[2,193],135:[2,193],136:[2,193],137:[2,193]},{7:170,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:171,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:172,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:173,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:174,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:175,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:176,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:177,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,148],6:[2,148],25:[2,148],26:[2,148],49:[2,148],54:[2,148],57:[2,148],73:[2,148],78:[2,148],86:[2,148],91:[2,148],93:[2,148],102:[2,148],104:[2,148],105:[2,148],106:[2,148],110:[2,148],118:[2,148],126:[2,148],128:[2,148],129:[2,148],132:[2,148],133:[2,148],134:[2,148],135:[2,148],136:[2,148],137:[2,148]},{1:[2,153],6:[2,153],25:[2,153],26:[2,153],49:[2,153],54:[2,153],57:[2,153],73:[2,153],78:[2,153],86:[2,153],91:[2,153],93:[2,153],102:[2,153],104:[2,153],105:[2,153],106:[2,153],110:[2,153],118:[2,153],126:[2,153],128:[2,153],129:[2,153],132:[2,153],133:[2,153],134:[2,153],135:[2,153],136:[2,153],137:[2,153]},{7:178,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,147],6:[2,147],25:[2,147],26:[2,147],49:[2,147],54:[2,147],57:[2,147],73:[2,147],78:[2,147],86:[2,147],91:[2,147],93:[2,147],102:[2,147],104:[2,147],105:[2,147],106:[2,147],110:[2,147],118:[2,147],126:[2,147],128:[2,147],129:[2,147],132:[2,147],133:[2,147],134:[2,147],135:[2,147],136:[2,147],137:[2,147]},{1:[2,152],6:[2,152],25:[2,152],26:[2,152],49:[2,152],54:[2,152],57:[2,152],73:[2,152],78:[2,152],86:[2,152],91:[2,152],93:[2,152],102:[2,152],104:[2,152],105:[2,152],106:[2,152],110:[2,152],118:[2,152],126:[2,152],128:[2,152],129:[2,152],132:[2,152],133:[2,152],134:[2,152],135:[2,152],136:[2,152],137:[2,152]},{82:179,85:[1,101]},{1:[2,68],6:[2,68],25:[2,68],26:[2,68],40:[2,68],49:[2,68],54:[2,68],57:[2,68],66:[2,68],67:[2,68],68:[2,68],69:[2,68],71:[2,68],73:[2,68],74:[2,68],78:[2,68],80:[2,68],84:[2,68],85:[2,68],86:[2,68],91:[2,68],93:[2,68],102:[2,68],104:[2,68],105:[2,68],106:[2,68],110:[2,68],118:[2,68],126:[2,68],128:[2,68],129:[2,68],130:[2,68],131:[2,68],132:[2,68],133:[2,68],134:[2,68],135:[2,68],136:[2,68],137:[2,68],138:[2,68]},{85:[2,108]},{27:180,28:[1,71]},{27:181,28:[1,71]},{1:[2,83],6:[2,83],25:[2,83],26:[2,83],27:182,28:[1,71],40:[2,83],49:[2,83],54:[2,83],57:[2,83],66:[2,83],67:[2,83],68:[2,83],69:[2,83],71:[2,83],73:[2,83],74:[2,83],78:[2,83],80:[2,83],84:[2,83],85:[2,83],86:[2,83],91:[2,83],93:[2,83],102:[2,83],104:[2,83],105:[2,83],106:[2,83],110:[2,83],118:[2,83],126:[2,83],128:[2,83],129:[2,83],130:[2,83],131:[2,83],132:[2,83],133:[2,83],134:[2,83],135:[2,83],136:[2,83],137:[2,83],138:[2,83]},{27:183,28:[1,71]},{1:[2,84],6:[2,84],25:[2,84],26:[2,84],40:[2,84],49:[2,84],54:[2,84],57:[2,84],66:[2,84],67:[2,84],68:[2,84],69:[2,84],71:[2,84],73:[2,84],74:[2,84],78:[2,84],80:[2,84],84:[2,84],85:[2,84],86:[2,84],91:[2,84],93:[2,84],102:[2,84],104:[2,84],105:[2,84],106:[2,84],110:[2,84],118:[2,84],126:[2,84],128:[2,84],129:[2,84],130:[2,84],131:[2,84],132:[2,84],133:[2,84],134:[2,84],135:[2,84],136:[2,84],137:[2,84],138:[2,84]},{7:185,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],57:[1,189],58:45,59:46,61:34,63:23,64:24,65:25,72:184,75:186,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],92:187,93:[1,188],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{70:190,71:[1,95],74:[1,96]},{82:191,85:[1,101]},{1:[2,69],6:[2,69],25:[2,69],26:[2,69],40:[2,69],49:[2,69],54:[2,69],57:[2,69],66:[2,69],67:[2,69],68:[2,69],69:[2,69],71:[2,69],73:[2,69],74:[2,69],78:[2,69],80:[2,69],84:[2,69],85:[2,69],86:[2,69],91:[2,69],93:[2,69],102:[2,69],104:[2,69],105:[2,69],106:[2,69],110:[2,69],118:[2,69],126:[2,69],128:[2,69],129:[2,69],130:[2,69],131:[2,69],132:[2,69],133:[2,69],134:[2,69],135:[2,69],136:[2,69],137:[2,69],138:[2,69]},{6:[1,193],7:192,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,194],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,106],6:[2,106],25:[2,106],26:[2,106],49:[2,106],54:[2,106],57:[2,106],66:[2,106],67:[2,106],68:[2,106],69:[2,106],71:[2,106],73:[2,106],74:[2,106],78:[2,106],84:[2,106],85:[2,106],86:[2,106],91:[2,106],93:[2,106],102:[2,106],104:[2,106],105:[2,106],106:[2,106],110:[2,106],118:[2,106],126:[2,106],128:[2,106],129:[2,106],132:[2,106],133:[2,106],134:[2,106],135:[2,106],136:[2,106],137:[2,106]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],86:[1,195],87:196,88:[1,56],89:[1,57],90:[1,55],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,52],25:[2,52],49:[1,198],53:200,54:[1,199]},{6:[2,55],25:[2,55],26:[2,55],49:[2,55],54:[2,55]},{6:[2,59],25:[2,59],26:[2,59],40:[1,202],49:[2,59],54:[2,59],57:[1,201]},{6:[2,62],25:[2,62],26:[2,62],40:[2,62],49:[2,62],54:[2,62],57:[2,62]},{6:[2,63],25:[2,63],26:[2,63],40:[2,63],49:[2,63],54:[2,63],57:[2,63]},{6:[2,64],25:[2,64],26:[2,64],40:[2,64],49:[2,64],54:[2,64],57:[2,64]},{6:[2,65],25:[2,65],26:[2,65],40:[2,65],49:[2,65],54:[2,65],57:[2,65]},{27:145,28:[1,71]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:141,88:[1,56],89:[1,57],90:[1,55],91:[1,140],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,49],6:[2,49],25:[2,49],26:[2,49],49:[2,49],54:[2,49],57:[2,49],73:[2,49],78:[2,49],86:[2,49],91:[2,49],93:[2,49],102:[2,49],104:[2,49],105:[2,49],106:[2,49],110:[2,49],118:[2,49],126:[2,49],128:[2,49],129:[2,49],132:[2,49],133:[2,49],134:[2,49],135:[2,49],136:[2,49],137:[2,49]},{4:204,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,203],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,186],6:[2,186],25:[2,186],26:[2,186],49:[2,186],54:[2,186],57:[2,186],73:[2,186],78:[2,186],86:[2,186],91:[2,186],93:[2,186],102:[2,186],103:82,104:[2,186],105:[2,186],106:[2,186],109:83,110:[2,186],111:67,118:[2,186],126:[2,186],128:[2,186],129:[2,186],132:[1,73],133:[2,186],134:[2,186],135:[2,186],136:[2,186],137:[2,186]},{103:85,104:[1,63],106:[1,64],109:86,110:[1,66],111:67,126:[1,84]},{1:[2,187],6:[2,187],25:[2,187],26:[2,187],49:[2,187],54:[2,187],57:[2,187],73:[2,187],78:[2,187],86:[2,187],91:[2,187],93:[2,187],102:[2,187],103:82,104:[2,187],105:[2,187],106:[2,187],109:83,110:[2,187],111:67,118:[2,187],126:[2,187],128:[2,187],129:[2,187],132:[1,73],133:[2,187],134:[2,187],135:[2,187],136:[2,187],137:[2,187]},{1:[2,188],6:[2,188],25:[2,188],26:[2,188],49:[2,188],54:[2,188],57:[2,188],73:[2,188],78:[2,188],86:[2,188],91:[2,188],93:[2,188],102:[2,188],103:82,104:[2,188],105:[2,188],106:[2,188],109:83,110:[2,188],111:67,118:[2,188],126:[2,188],128:[2,188],129:[2,188],132:[1,73],133:[2,188],134:[2,188],135:[2,188],136:[2,188],137:[2,188]},{1:[2,189],6:[2,189],25:[2,189],26:[2,189],49:[2,189],54:[2,189],57:[2,189],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,189],74:[2,71],78:[2,189],84:[2,71],85:[2,71],86:[2,189],91:[2,189],93:[2,189],102:[2,189],104:[2,189],105:[2,189],106:[2,189],110:[2,189],118:[2,189],126:[2,189],128:[2,189],129:[2,189],132:[2,189],133:[2,189],134:[2,189],135:[2,189],136:[2,189],137:[2,189]},{62:88,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],74:[1,96],81:87,84:[1,89],85:[2,107]},{62:98,66:[1,90],67:[1,91],68:[1,92],69:[1,93],70:94,71:[1,95],74:[1,96],81:97,84:[1,89],85:[2,107]},{66:[2,74],67:[2,74],68:[2,74],69:[2,74],71:[2,74],74:[2,74],84:[2,74],85:[2,74]},{1:[2,190],6:[2,190],25:[2,190],26:[2,190],49:[2,190],54:[2,190],57:[2,190],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,190],74:[2,71],78:[2,190],84:[2,71],85:[2,71],86:[2,190],91:[2,190],93:[2,190],102:[2,190],104:[2,190],105:[2,190],106:[2,190],110:[2,190],118:[2,190],126:[2,190],128:[2,190],129:[2,190],132:[2,190],133:[2,190],134:[2,190],135:[2,190],136:[2,190],137:[2,190]},{1:[2,191],6:[2,191],25:[2,191],26:[2,191],49:[2,191],54:[2,191],57:[2,191],73:[2,191],78:[2,191],86:[2,191],91:[2,191],93:[2,191],102:[2,191],104:[2,191],105:[2,191],106:[2,191],110:[2,191],118:[2,191],126:[2,191],128:[2,191],129:[2,191],132:[2,191],133:[2,191],134:[2,191],135:[2,191],136:[2,191],137:[2,191]},{1:[2,192],6:[2,192],25:[2,192],26:[2,192],49:[2,192],54:[2,192],57:[2,192],73:[2,192],78:[2,192],86:[2,192],91:[2,192],93:[2,192],102:[2,192],104:[2,192],105:[2,192],106:[2,192],110:[2,192],118:[2,192],126:[2,192],128:[2,192],129:[2,192],132:[2,192],133:[2,192],134:[2,192],135:[2,192],136:[2,192],137:[2,192]},{6:[1,207],7:205,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,206],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:208,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{24:209,25:[1,112],125:[1,210]},{1:[2,132],6:[2,132],25:[2,132],26:[2,132],49:[2,132],54:[2,132],57:[2,132],73:[2,132],78:[2,132],86:[2,132],91:[2,132],93:[2,132],97:211,98:[1,212],99:[1,213],102:[2,132],104:[2,132],105:[2,132],106:[2,132],110:[2,132],118:[2,132],126:[2,132],128:[2,132],129:[2,132],132:[2,132],133:[2,132],134:[2,132],135:[2,132],136:[2,132],137:[2,132]},{1:[2,146],6:[2,146],25:[2,146],26:[2,146],49:[2,146],54:[2,146],57:[2,146],73:[2,146],78:[2,146],86:[2,146],91:[2,146],93:[2,146],102:[2,146],104:[2,146],105:[2,146],106:[2,146],110:[2,146],118:[2,146],126:[2,146],128:[2,146],129:[2,146],132:[2,146],133:[2,146],134:[2,146],135:[2,146],136:[2,146],137:[2,146]},{1:[2,154],6:[2,154],25:[2,154],26:[2,154],49:[2,154],54:[2,154],57:[2,154],73:[2,154],78:[2,154],86:[2,154],91:[2,154],93:[2,154],102:[2,154],104:[2,154],105:[2,154],106:[2,154],110:[2,154],118:[2,154],126:[2,154],128:[2,154],129:[2,154],132:[2,154],133:[2,154],134:[2,154],135:[2,154],136:[2,154],137:[2,154]},{25:[1,214],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{120:215,122:216,123:[1,217]},{1:[2,96],6:[2,96],25:[2,96],26:[2,96],49:[2,96],54:[2,96],57:[2,96],73:[2,96],78:[2,96],86:[2,96],91:[2,96],93:[2,96],102:[2,96],104:[2,96],105:[2,96],106:[2,96],110:[2,96],118:[2,96],126:[2,96],128:[2,96],129:[2,96],132:[2,96],133:[2,96],134:[2,96],135:[2,96],136:[2,96],137:[2,96]},{7:218,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,99],6:[2,99],24:219,25:[1,112],26:[2,99],49:[2,99],54:[2,99],57:[2,99],66:[2,71],67:[2,71],68:[2,71],69:[2,71],71:[2,71],73:[2,99],74:[2,71],78:[2,99],80:[1,220],84:[2,71],85:[2,71],86:[2,99],91:[2,99],93:[2,99],102:[2,99],104:[2,99],105:[2,99],106:[2,99],110:[2,99],118:[2,99],126:[2,99],128:[2,99],129:[2,99],132:[2,99],133:[2,99],134:[2,99],135:[2,99],136:[2,99],137:[2,99]},{1:[2,139],6:[2,139],25:[2,139],26:[2,139],49:[2,139],54:[2,139],57:[2,139],73:[2,139],78:[2,139],86:[2,139],91:[2,139],93:[2,139],102:[2,139],103:82,104:[2,139],105:[2,139],106:[2,139],109:83,110:[2,139],111:67,118:[2,139],126:[2,139],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,45],6:[2,45],26:[2,45],102:[2,45],103:82,104:[2,45],106:[2,45],109:83,110:[2,45],111:67,126:[2,45],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,72],102:[1,221]},{4:222,5:3,7:4,8:5,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,128],25:[2,128],54:[2,128],57:[1,224],91:[2,128],92:223,93:[1,188],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,114],6:[2,114],25:[2,114],26:[2,114],40:[2,114],49:[2,114],54:[2,114],57:[2,114],66:[2,114],67:[2,114],68:[2,114],69:[2,114],71:[2,114],73:[2,114],74:[2,114],78:[2,114],84:[2,114],85:[2,114],86:[2,114],91:[2,114],93:[2,114],102:[2,114],104:[2,114],105:[2,114],106:[2,114],110:[2,114],116:[2,114],117:[2,114],118:[2,114],126:[2,114],128:[2,114],129:[2,114],132:[2,114],133:[2,114],134:[2,114],135:[2,114],136:[2,114],137:[2,114]},{6:[2,52],25:[2,52],53:225,54:[1,226],91:[2,52]},{6:[2,123],25:[2,123],26:[2,123],54:[2,123],86:[2,123],91:[2,123]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:227,88:[1,56],89:[1,57],90:[1,55],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,129],25:[2,129],26:[2,129],54:[2,129],86:[2,129],91:[2,129]},{1:[2,113],6:[2,113],25:[2,113],26:[2,113],40:[2,113],43:[2,113],49:[2,113],54:[2,113],57:[2,113],66:[2,113],67:[2,113],68:[2,113],69:[2,113],71:[2,113],73:[2,113],74:[2,113],78:[2,113],80:[2,113],84:[2,113],85:[2,113],86:[2,113],91:[2,113],93:[2,113],102:[2,113],104:[2,113],105:[2,113],106:[2,113],110:[2,113],116:[2,113],117:[2,113],118:[2,113],126:[2,113],128:[2,113],129:[2,113],130:[2,113],131:[2,113],132:[2,113],133:[2,113],134:[2,113],135:[2,113],136:[2,113],137:[2,113],138:[2,113]},{24:228,25:[1,112],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,142],6:[2,142],25:[2,142],26:[2,142],49:[2,142],54:[2,142],57:[2,142],73:[2,142],78:[2,142],86:[2,142],91:[2,142],93:[2,142],102:[2,142],103:82,104:[1,63],105:[1,229],106:[1,64],109:83,110:[1,66],111:67,118:[2,142],126:[2,142],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,144],6:[2,144],25:[2,144],26:[2,144],49:[2,144],54:[2,144],57:[2,144],73:[2,144],78:[2,144],86:[2,144],91:[2,144],93:[2,144],102:[2,144],103:82,104:[1,63],105:[1,230],106:[1,64],109:83,110:[1,66],111:67,118:[2,144],126:[2,144],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,150],6:[2,150],25:[2,150],26:[2,150],49:[2,150],54:[2,150],57:[2,150],73:[2,150],78:[2,150],86:[2,150],91:[2,150],93:[2,150],102:[2,150],104:[2,150],105:[2,150],106:[2,150],110:[2,150],118:[2,150],126:[2,150],128:[2,150],129:[2,150],132:[2,150],133:[2,150],134:[2,150],135:[2,150],136:[2,150],137:[2,150]},{1:[2,151],6:[2,151],25:[2,151],26:[2,151],49:[2,151],54:[2,151],57:[2,151],73:[2,151],78:[2,151],86:[2,151],91:[2,151],93:[2,151],102:[2,151],103:82,104:[1,63],105:[2,151],106:[1,64],109:83,110:[1,66],111:67,118:[2,151],126:[2,151],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,155],6:[2,155],25:[2,155],26:[2,155],49:[2,155],54:[2,155],57:[2,155],73:[2,155],78:[2,155],86:[2,155],91:[2,155],93:[2,155],102:[2,155],104:[2,155],105:[2,155],106:[2,155],110:[2,155],118:[2,155],126:[2,155],128:[2,155],129:[2,155],132:[2,155],133:[2,155],134:[2,155],135:[2,155],136:[2,155],137:[2,155]},{116:[2,157],117:[2,157]},{27:155,28:[1,71],44:156,58:157,59:158,76:[1,68],89:[1,109],90:[1,110],113:231,115:154},{54:[1,232],116:[2,163],117:[2,163]},{54:[2,159],116:[2,159],117:[2,159]},{54:[2,160],116:[2,160],117:[2,160]},{54:[2,161],116:[2,161],117:[2,161]},{54:[2,162],116:[2,162],117:[2,162]},{1:[2,156],6:[2,156],25:[2,156],26:[2,156],49:[2,156],54:[2,156],57:[2,156],73:[2,156],78:[2,156],86:[2,156],91:[2,156],93:[2,156],102:[2,156],104:[2,156],105:[2,156],106:[2,156],110:[2,156],118:[2,156],126:[2,156],128:[2,156],129:[2,156],132:[2,156],133:[2,156],134:[2,156],135:[2,156],136:[2,156],137:[2,156]},{7:233,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:234,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,52],25:[2,52],53:235,54:[1,236],78:[2,52]},{6:[2,91],25:[2,91],26:[2,91],54:[2,91],78:[2,91]},{6:[2,38],25:[2,38],26:[2,38],43:[1,237],54:[2,38],78:[2,38]},{6:[2,41],25:[2,41],26:[2,41],54:[2,41],78:[2,41]},{6:[2,42],25:[2,42],26:[2,42],43:[2,42],54:[2,42],78:[2,42]},{6:[2,43],25:[2,43],26:[2,43],43:[2,43],54:[2,43],78:[2,43]},{6:[2,44],25:[2,44],26:[2,44],43:[2,44],54:[2,44],78:[2,44]},{1:[2,4],6:[2,4],26:[2,4],102:[2,4]},{1:[2,194],6:[2,194],25:[2,194],26:[2,194],49:[2,194],54:[2,194],57:[2,194],73:[2,194],78:[2,194],86:[2,194],91:[2,194],93:[2,194],102:[2,194],103:82,104:[2,194],105:[2,194],106:[2,194],109:83,110:[2,194],111:67,118:[2,194],126:[2,194],128:[2,194],129:[2,194],132:[1,73],133:[1,76],134:[2,194],135:[2,194],136:[2,194],137:[2,194]},{1:[2,195],6:[2,195],25:[2,195],26:[2,195],49:[2,195],54:[2,195],57:[2,195],73:[2,195],78:[2,195],86:[2,195],91:[2,195],93:[2,195],102:[2,195],103:82,104:[2,195],105:[2,195],106:[2,195],109:83,110:[2,195],111:67,118:[2,195],126:[2,195],128:[2,195],129:[2,195],132:[1,73],133:[1,76],134:[2,195],135:[2,195],136:[2,195],137:[2,195]},{1:[2,196],6:[2,196],25:[2,196],26:[2,196],49:[2,196],54:[2,196],57:[2,196],73:[2,196],78:[2,196],86:[2,196],91:[2,196],93:[2,196],102:[2,196],103:82,104:[2,196],105:[2,196],106:[2,196],109:83,110:[2,196],111:67,118:[2,196],126:[2,196],128:[2,196],129:[2,196],132:[1,73],133:[2,196],134:[2,196],135:[2,196],136:[2,196],137:[2,196]},{1:[2,197],6:[2,197],25:[2,197],26:[2,197],49:[2,197],54:[2,197],57:[2,197],73:[2,197],78:[2,197],86:[2,197],91:[2,197],93:[2,197],102:[2,197],103:82,104:[2,197],105:[2,197],106:[2,197],109:83,110:[2,197],111:67,118:[2,197],126:[2,197],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[2,197],135:[2,197],136:[2,197],137:[2,197]},{1:[2,198],6:[2,198],25:[2,198],26:[2,198],49:[2,198],54:[2,198],57:[2,198],73:[2,198],78:[2,198],86:[2,198],91:[2,198],93:[2,198],102:[2,198],103:82,104:[2,198],105:[2,198],106:[2,198],109:83,110:[2,198],111:67,118:[2,198],126:[2,198],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[2,198],136:[2,198],137:[1,80]},{1:[2,199],6:[2,199],25:[2,199],26:[2,199],49:[2,199],54:[2,199],57:[2,199],73:[2,199],78:[2,199],86:[2,199],91:[2,199],93:[2,199],102:[2,199],103:82,104:[2,199],105:[2,199],106:[2,199],109:83,110:[2,199],111:67,118:[2,199],126:[2,199],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[2,199],137:[1,80]},{1:[2,200],6:[2,200],25:[2,200],26:[2,200],49:[2,200],54:[2,200],57:[2,200],73:[2,200],78:[2,200],86:[2,200],91:[2,200],93:[2,200],102:[2,200],103:82,104:[2,200],105:[2,200],106:[2,200],109:83,110:[2,200],111:67,118:[2,200],126:[2,200],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[2,200],136:[2,200],137:[2,200]},{1:[2,185],6:[2,185],25:[2,185],26:[2,185],49:[2,185],54:[2,185],57:[2,185],73:[2,185],78:[2,185],86:[2,185],91:[2,185],93:[2,185],102:[2,185],103:82,104:[1,63],105:[2,185],106:[1,64],109:83,110:[1,66],111:67,118:[2,185],126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,184],6:[2,184],25:[2,184],26:[2,184],49:[2,184],54:[2,184],57:[2,184],73:[2,184],78:[2,184],86:[2,184],91:[2,184],93:[2,184],102:[2,184],103:82,104:[1,63],105:[2,184],106:[1,64],109:83,110:[1,66],111:67,118:[2,184],126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,103],6:[2,103],25:[2,103],26:[2,103],49:[2,103],54:[2,103],57:[2,103],66:[2,103],67:[2,103],68:[2,103],69:[2,103],71:[2,103],73:[2,103],74:[2,103],78:[2,103],84:[2,103],85:[2,103],86:[2,103],91:[2,103],93:[2,103],102:[2,103],104:[2,103],105:[2,103],106:[2,103],110:[2,103],118:[2,103],126:[2,103],128:[2,103],129:[2,103],132:[2,103],133:[2,103],134:[2,103],135:[2,103],136:[2,103],137:[2,103]},{1:[2,79],6:[2,79],25:[2,79],26:[2,79],40:[2,79],49:[2,79],54:[2,79],57:[2,79],66:[2,79],67:[2,79],68:[2,79],69:[2,79],71:[2,79],73:[2,79],74:[2,79],78:[2,79],80:[2,79],84:[2,79],85:[2,79],86:[2,79],91:[2,79],93:[2,79],102:[2,79],104:[2,79],105:[2,79],106:[2,79],110:[2,79],118:[2,79],126:[2,79],128:[2,79],129:[2,79],130:[2,79],131:[2,79],132:[2,79],133:[2,79],134:[2,79],135:[2,79],136:[2,79],137:[2,79],138:[2,79]},{1:[2,80],6:[2,80],25:[2,80],26:[2,80],40:[2,80],49:[2,80],54:[2,80],57:[2,80],66:[2,80],67:[2,80],68:[2,80],69:[2,80],71:[2,80],73:[2,80],74:[2,80],78:[2,80],80:[2,80],84:[2,80],85:[2,80],86:[2,80],91:[2,80],93:[2,80],102:[2,80],104:[2,80],105:[2,80],106:[2,80],110:[2,80],118:[2,80],126:[2,80],128:[2,80],129:[2,80],130:[2,80],131:[2,80],132:[2,80],133:[2,80],134:[2,80],135:[2,80],136:[2,80],137:[2,80],138:[2,80]},{1:[2,81],6:[2,81],25:[2,81],26:[2,81],40:[2,81],49:[2,81],54:[2,81],57:[2,81],66:[2,81],67:[2,81],68:[2,81],69:[2,81],71:[2,81],73:[2,81],74:[2,81],78:[2,81],80:[2,81],84:[2,81],85:[2,81],86:[2,81],91:[2,81],93:[2,81],102:[2,81],104:[2,81],105:[2,81],106:[2,81],110:[2,81],118:[2,81],126:[2,81],128:[2,81],129:[2,81],130:[2,81],131:[2,81],132:[2,81],133:[2,81],134:[2,81],135:[2,81],136:[2,81],137:[2,81],138:[2,81]},{1:[2,82],6:[2,82],25:[2,82],26:[2,82],40:[2,82],49:[2,82],54:[2,82],57:[2,82],66:[2,82],67:[2,82],68:[2,82],69:[2,82],71:[2,82],73:[2,82],74:[2,82],78:[2,82],80:[2,82],84:[2,82],85:[2,82],86:[2,82],91:[2,82],93:[2,82],102:[2,82],104:[2,82],105:[2,82],106:[2,82],110:[2,82],118:[2,82],126:[2,82],128:[2,82],129:[2,82],130:[2,82],131:[2,82],132:[2,82],133:[2,82],134:[2,82],135:[2,82],136:[2,82],137:[2,82],138:[2,82]},{73:[1,238]},{57:[1,189],73:[2,87],92:239,93:[1,188],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{73:[2,88]},{7:240,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,73:[2,122],76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{11:[2,116],28:[2,116],30:[2,116],31:[2,116],33:[2,116],34:[2,116],35:[2,116],36:[2,116],37:[2,116],38:[2,116],45:[2,116],46:[2,116],47:[2,116],51:[2,116],52:[2,116],73:[2,116],76:[2,116],79:[2,116],83:[2,116],88:[2,116],89:[2,116],90:[2,116],96:[2,116],100:[2,116],101:[2,116],104:[2,116],106:[2,116],108:[2,116],110:[2,116],119:[2,116],125:[2,116],127:[2,116],128:[2,116],129:[2,116],130:[2,116],131:[2,116]},{11:[2,117],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],73:[2,117],76:[2,117],79:[2,117],83:[2,117],88:[2,117],89:[2,117],90:[2,117],96:[2,117],100:[2,117],101:[2,117],104:[2,117],106:[2,117],108:[2,117],110:[2,117],119:[2,117],125:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117],131:[2,117]},{1:[2,86],6:[2,86],25:[2,86],26:[2,86],40:[2,86],49:[2,86],54:[2,86],57:[2,86],66:[2,86],67:[2,86],68:[2,86],69:[2,86],71:[2,86],73:[2,86],74:[2,86],78:[2,86],80:[2,86],84:[2,86],85:[2,86],86:[2,86],91:[2,86],93:[2,86],102:[2,86],104:[2,86],105:[2,86],106:[2,86],110:[2,86],118:[2,86],126:[2,86],128:[2,86],129:[2,86],130:[2,86],131:[2,86],132:[2,86],133:[2,86],134:[2,86],135:[2,86],136:[2,86],137:[2,86],138:[2,86]},{1:[2,104],6:[2,104],25:[2,104],26:[2,104],49:[2,104],54:[2,104],57:[2,104],66:[2,104],67:[2,104],68:[2,104],69:[2,104],71:[2,104],73:[2,104],74:[2,104],78:[2,104],84:[2,104],85:[2,104],86:[2,104],91:[2,104],93:[2,104],102:[2,104],104:[2,104],105:[2,104],106:[2,104],110:[2,104],118:[2,104],126:[2,104],128:[2,104],129:[2,104],132:[2,104],133:[2,104],134:[2,104],135:[2,104],136:[2,104],137:[2,104]},{1:[2,35],6:[2,35],25:[2,35],26:[2,35],49:[2,35],54:[2,35],57:[2,35],73:[2,35],78:[2,35],86:[2,35],91:[2,35],93:[2,35],102:[2,35],103:82,104:[2,35],105:[2,35],106:[2,35],109:83,110:[2,35],111:67,118:[2,35],126:[2,35],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{7:241,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:242,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,109],6:[2,109],25:[2,109],26:[2,109],49:[2,109],54:[2,109],57:[2,109],66:[2,109],67:[2,109],68:[2,109],69:[2,109],71:[2,109],73:[2,109],74:[2,109],78:[2,109],84:[2,109],85:[2,109],86:[2,109],91:[2,109],93:[2,109],102:[2,109],104:[2,109],105:[2,109],106:[2,109],110:[2,109],118:[2,109],126:[2,109],128:[2,109],129:[2,109],132:[2,109],133:[2,109],134:[2,109],135:[2,109],136:[2,109],137:[2,109]},{6:[2,52],25:[2,52],53:243,54:[1,226],86:[2,52]},{6:[2,128],25:[2,128],26:[2,128],54:[2,128],57:[1,244],86:[2,128],91:[2,128],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{50:245,51:[1,58],52:[1,59]},{6:[2,53],25:[2,53],26:[2,53],27:105,28:[1,71],44:106,55:246,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{6:[1,247],25:[1,248]},{6:[2,60],25:[2,60],26:[2,60],49:[2,60],54:[2,60]},{7:249,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,23],6:[2,23],25:[2,23],26:[2,23],49:[2,23],54:[2,23],57:[2,23],73:[2,23],78:[2,23],86:[2,23],91:[2,23],93:[2,23],98:[2,23],99:[2,23],102:[2,23],104:[2,23],105:[2,23],106:[2,23],110:[2,23],118:[2,23],121:[2,23],123:[2,23],126:[2,23],128:[2,23],129:[2,23],132:[2,23],133:[2,23],134:[2,23],135:[2,23],136:[2,23],137:[2,23]},{6:[1,72],26:[1,250]},{1:[2,201],6:[2,201],25:[2,201],26:[2,201],49:[2,201],54:[2,201],57:[2,201],73:[2,201],78:[2,201],86:[2,201],91:[2,201],93:[2,201],102:[2,201],103:82,104:[2,201],105:[2,201],106:[2,201],109:83,110:[2,201],111:67,118:[2,201],126:[2,201],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{7:251,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:252,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,204],6:[2,204],25:[2,204],26:[2,204],49:[2,204],54:[2,204],57:[2,204],73:[2,204],78:[2,204],86:[2,204],91:[2,204],93:[2,204],102:[2,204],103:82,104:[2,204],105:[2,204],106:[2,204],109:83,110:[2,204],111:67,118:[2,204],126:[2,204],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,183],6:[2,183],25:[2,183],26:[2,183],49:[2,183],54:[2,183],57:[2,183],73:[2,183],78:[2,183],86:[2,183],91:[2,183],93:[2,183],102:[2,183],104:[2,183],105:[2,183],106:[2,183],110:[2,183],118:[2,183],126:[2,183],128:[2,183],129:[2,183],132:[2,183],133:[2,183],134:[2,183],135:[2,183],136:[2,183],137:[2,183]},{7:253,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,133],6:[2,133],25:[2,133],26:[2,133],49:[2,133],54:[2,133],57:[2,133],73:[2,133],78:[2,133],86:[2,133],91:[2,133],93:[2,133],98:[1,254],102:[2,133],104:[2,133],105:[2,133],106:[2,133],110:[2,133],118:[2,133],126:[2,133],128:[2,133],129:[2,133],132:[2,133],133:[2,133],134:[2,133],135:[2,133],136:[2,133],137:[2,133]},{24:255,25:[1,112]},{24:258,25:[1,112],27:256,28:[1,71],59:257,76:[1,68]},{120:259,122:216,123:[1,217]},{26:[1,260],121:[1,261],122:262,123:[1,217]},{26:[2,176],121:[2,176],123:[2,176]},{7:264,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],95:263,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,97],6:[2,97],24:265,25:[1,112],26:[2,97],49:[2,97],54:[2,97],57:[2,97],73:[2,97],78:[2,97],86:[2,97],91:[2,97],93:[2,97],102:[2,97],103:82,104:[1,63],105:[2,97],106:[1,64],109:83,110:[1,66],111:67,118:[2,97],126:[2,97],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,100],6:[2,100],25:[2,100],26:[2,100],49:[2,100],54:[2,100],57:[2,100],73:[2,100],78:[2,100],86:[2,100],91:[2,100],93:[2,100],102:[2,100],104:[2,100],105:[2,100],106:[2,100],110:[2,100],118:[2,100],126:[2,100],128:[2,100],129:[2,100],132:[2,100],133:[2,100],134:[2,100],135:[2,100],136:[2,100],137:[2,100]},{7:266,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,140],6:[2,140],25:[2,140],26:[2,140],49:[2,140],54:[2,140],57:[2,140],66:[2,140],67:[2,140],68:[2,140],69:[2,140],71:[2,140],73:[2,140],74:[2,140],78:[2,140],84:[2,140],85:[2,140],86:[2,140],91:[2,140],93:[2,140],102:[2,140],104:[2,140],105:[2,140],106:[2,140],110:[2,140],118:[2,140],126:[2,140],128:[2,140],129:[2,140],132:[2,140],133:[2,140],134:[2,140],135:[2,140],136:[2,140],137:[2,140]},{6:[1,72],26:[1,267]},{7:268,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,66],11:[2,117],25:[2,66],28:[2,117],30:[2,117],31:[2,117],33:[2,117],34:[2,117],35:[2,117],36:[2,117],37:[2,117],38:[2,117],45:[2,117],46:[2,117],47:[2,117],51:[2,117],52:[2,117],54:[2,66],76:[2,117],79:[2,117],83:[2,117],88:[2,117],89:[2,117],90:[2,117],91:[2,66],96:[2,117],100:[2,117],101:[2,117],104:[2,117],106:[2,117],108:[2,117],110:[2,117],119:[2,117],125:[2,117],127:[2,117],128:[2,117],129:[2,117],130:[2,117],131:[2,117]},{6:[1,270],25:[1,271],91:[1,269]},{6:[2,53],7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[2,53],26:[2,53],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],86:[2,53],88:[1,56],89:[1,57],90:[1,55],91:[2,53],94:272,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,52],25:[2,52],26:[2,52],53:273,54:[1,226]},{1:[2,180],6:[2,180],25:[2,180],26:[2,180],49:[2,180],54:[2,180],57:[2,180],73:[2,180],78:[2,180],86:[2,180],91:[2,180],93:[2,180],102:[2,180],104:[2,180],105:[2,180],106:[2,180],110:[2,180],118:[2,180],121:[2,180],126:[2,180],128:[2,180],129:[2,180],132:[2,180],133:[2,180],134:[2,180],135:[2,180],136:[2,180],137:[2,180]},{7:274,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:275,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{116:[2,158],117:[2,158]},{27:155,28:[1,71],44:156,58:157,59:158,76:[1,68],89:[1,109],90:[1,110],115:276},{1:[2,165],6:[2,165],25:[2,165],26:[2,165],49:[2,165],54:[2,165],57:[2,165],73:[2,165],78:[2,165],86:[2,165],91:[2,165],93:[2,165],102:[2,165],103:82,104:[2,165],105:[1,277],106:[2,165],109:83,110:[2,165],111:67,118:[1,278],126:[2,165],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,166],6:[2,166],25:[2,166],26:[2,166],49:[2,166],54:[2,166],57:[2,166],73:[2,166],78:[2,166],86:[2,166],91:[2,166],93:[2,166],102:[2,166],103:82,104:[2,166],105:[1,279],106:[2,166],109:83,110:[2,166],111:67,118:[2,166],126:[2,166],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,281],25:[1,282],78:[1,280]},{6:[2,53],10:165,25:[2,53],26:[2,53],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:283,42:164,44:168,46:[1,44],78:[2,53],89:[1,109]},{7:284,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,285],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,85],6:[2,85],25:[2,85],26:[2,85],40:[2,85],49:[2,85],54:[2,85],57:[2,85],66:[2,85],67:[2,85],68:[2,85],69:[2,85],71:[2,85],73:[2,85],74:[2,85],78:[2,85],80:[2,85],84:[2,85],85:[2,85],86:[2,85],91:[2,85],93:[2,85],102:[2,85],104:[2,85],105:[2,85],106:[2,85],110:[2,85],118:[2,85],126:[2,85],128:[2,85],129:[2,85],130:[2,85],131:[2,85],132:[2,85],133:[2,85],134:[2,85],135:[2,85],136:[2,85],137:[2,85],138:[2,85]},{7:286,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,73:[2,120],76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{73:[2,121],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,36],6:[2,36],25:[2,36],26:[2,36],49:[2,36],54:[2,36],57:[2,36],73:[2,36],78:[2,36],86:[2,36],91:[2,36],93:[2,36],102:[2,36],103:82,104:[2,36],105:[2,36],106:[2,36],109:83,110:[2,36],111:67,118:[2,36],126:[2,36],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{26:[1,287],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,270],25:[1,271],86:[1,288]},{6:[2,66],25:[2,66],26:[2,66],54:[2,66],86:[2,66],91:[2,66]},{24:289,25:[1,112]},{6:[2,56],25:[2,56],26:[2,56],49:[2,56],54:[2,56]},{27:105,28:[1,71],44:106,55:290,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{6:[2,54],25:[2,54],26:[2,54],27:105,28:[1,71],44:106,48:291,54:[2,54],55:103,56:104,58:107,59:108,76:[1,68],89:[1,109],90:[1,110]},{6:[2,61],25:[2,61],26:[2,61],49:[2,61],54:[2,61],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,24],6:[2,24],25:[2,24],26:[2,24],49:[2,24],54:[2,24],57:[2,24],73:[2,24],78:[2,24],86:[2,24],91:[2,24],93:[2,24],98:[2,24],99:[2,24],102:[2,24],104:[2,24],105:[2,24],106:[2,24],110:[2,24],118:[2,24],121:[2,24],123:[2,24],126:[2,24],128:[2,24],129:[2,24],132:[2,24],133:[2,24],134:[2,24],135:[2,24],136:[2,24],137:[2,24]},{26:[1,292],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,203],6:[2,203],25:[2,203],26:[2,203],49:[2,203],54:[2,203],57:[2,203],73:[2,203],78:[2,203],86:[2,203],91:[2,203],93:[2,203],102:[2,203],103:82,104:[2,203],105:[2,203],106:[2,203],109:83,110:[2,203],111:67,118:[2,203],126:[2,203],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{24:293,25:[1,112],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{24:294,25:[1,112]},{1:[2,134],6:[2,134],25:[2,134],26:[2,134],49:[2,134],54:[2,134],57:[2,134],73:[2,134],78:[2,134],86:[2,134],91:[2,134],93:[2,134],102:[2,134],104:[2,134],105:[2,134],106:[2,134],110:[2,134],118:[2,134],126:[2,134],128:[2,134],129:[2,134],132:[2,134],133:[2,134],134:[2,134],135:[2,134],136:[2,134],137:[2,134]},{24:295,25:[1,112]},{24:296,25:[1,112]},{1:[2,138],6:[2,138],25:[2,138],26:[2,138],49:[2,138],54:[2,138],57:[2,138],73:[2,138],78:[2,138],86:[2,138],91:[2,138],93:[2,138],98:[2,138],102:[2,138],104:[2,138],105:[2,138],106:[2,138],110:[2,138],118:[2,138],126:[2,138],128:[2,138],129:[2,138],132:[2,138],133:[2,138],134:[2,138],135:[2,138],136:[2,138],137:[2,138]},{26:[1,297],121:[1,298],122:262,123:[1,217]},{1:[2,174],6:[2,174],25:[2,174],26:[2,174],49:[2,174],54:[2,174],57:[2,174],73:[2,174],78:[2,174],86:[2,174],91:[2,174],93:[2,174],102:[2,174],104:[2,174],105:[2,174],106:[2,174],110:[2,174],118:[2,174],126:[2,174],128:[2,174],129:[2,174],132:[2,174],133:[2,174],134:[2,174],135:[2,174],136:[2,174],137:[2,174]},{24:299,25:[1,112]},{26:[2,177],121:[2,177],123:[2,177]},{24:300,25:[1,112],54:[1,301]},{25:[2,130],54:[2,130],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,98],6:[2,98],25:[2,98],26:[2,98],49:[2,98],54:[2,98],57:[2,98],73:[2,98],78:[2,98],86:[2,98],91:[2,98],93:[2,98],102:[2,98],104:[2,98],105:[2,98],106:[2,98],110:[2,98],118:[2,98],126:[2,98],128:[2,98],129:[2,98],132:[2,98],133:[2,98],134:[2,98],135:[2,98],136:[2,98],137:[2,98]},{1:[2,101],6:[2,101],24:302,25:[1,112],26:[2,101],49:[2,101],54:[2,101],57:[2,101],73:[2,101],78:[2,101],86:[2,101],91:[2,101],93:[2,101],102:[2,101],103:82,104:[1,63],105:[2,101],106:[1,64],109:83,110:[1,66],111:67,118:[2,101],126:[2,101],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{102:[1,303]},{91:[1,304],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,115],6:[2,115],25:[2,115],26:[2,115],40:[2,115],49:[2,115],54:[2,115],57:[2,115],66:[2,115],67:[2,115],68:[2,115],69:[2,115],71:[2,115],73:[2,115],74:[2,115],78:[2,115],84:[2,115],85:[2,115],86:[2,115],91:[2,115],93:[2,115],102:[2,115],104:[2,115],105:[2,115],106:[2,115],110:[2,115],116:[2,115],117:[2,115],118:[2,115],126:[2,115],128:[2,115],129:[2,115],132:[2,115],133:[2,115],134:[2,115],135:[2,115],136:[2,115],137:[2,115]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],94:305,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:197,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,60:144,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],87:306,88:[1,56],89:[1,57],90:[1,55],94:142,96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[2,124],25:[2,124],26:[2,124],54:[2,124],86:[2,124],91:[2,124]},{6:[1,270],25:[1,271],26:[1,307]},{1:[2,143],6:[2,143],25:[2,143],26:[2,143],49:[2,143],54:[2,143],57:[2,143],73:[2,143],78:[2,143],86:[2,143],91:[2,143],93:[2,143],102:[2,143],103:82,104:[1,63],105:[2,143],106:[1,64],109:83,110:[1,66],111:67,118:[2,143],126:[2,143],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,145],6:[2,145],25:[2,145],26:[2,145],49:[2,145],54:[2,145],57:[2,145],73:[2,145],78:[2,145],86:[2,145],91:[2,145],93:[2,145],102:[2,145],103:82,104:[1,63],105:[2,145],106:[1,64],109:83,110:[1,66],111:67,118:[2,145],126:[2,145],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{116:[2,164],117:[2,164]},{7:308,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:309,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:310,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,89],6:[2,89],25:[2,89],26:[2,89],40:[2,89],49:[2,89],54:[2,89],57:[2,89],66:[2,89],67:[2,89],68:[2,89],69:[2,89],71:[2,89],73:[2,89],74:[2,89],78:[2,89],84:[2,89],85:[2,89],86:[2,89],91:[2,89],93:[2,89],102:[2,89],104:[2,89],105:[2,89],106:[2,89],110:[2,89],116:[2,89],117:[2,89],118:[2,89],126:[2,89],128:[2,89],129:[2,89],132:[2,89],133:[2,89],134:[2,89],135:[2,89],136:[2,89],137:[2,89]},{10:165,27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:311,42:164,44:168,46:[1,44],89:[1,109]},{6:[2,90],10:165,25:[2,90],26:[2,90],27:166,28:[1,71],29:167,30:[1,69],31:[1,70],41:163,42:164,44:168,46:[1,44],54:[2,90],77:312,89:[1,109]},{6:[2,92],25:[2,92],26:[2,92],54:[2,92],78:[2,92]},{6:[2,39],25:[2,39],26:[2,39],54:[2,39],78:[2,39],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{7:313,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{73:[2,119],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,37],6:[2,37],25:[2,37],26:[2,37],49:[2,37],54:[2,37],57:[2,37],73:[2,37],78:[2,37],86:[2,37],91:[2,37],93:[2,37],102:[2,37],104:[2,37],105:[2,37],106:[2,37],110:[2,37],118:[2,37],126:[2,37],128:[2,37],129:[2,37],132:[2,37],133:[2,37],134:[2,37],135:[2,37],136:[2,37],137:[2,37]},{1:[2,110],6:[2,110],25:[2,110],26:[2,110],49:[2,110],54:[2,110],57:[2,110],66:[2,110],67:[2,110],68:[2,110],69:[2,110],71:[2,110],73:[2,110],74:[2,110],78:[2,110],84:[2,110],85:[2,110],86:[2,110],91:[2,110],93:[2,110],102:[2,110],104:[2,110],105:[2,110],106:[2,110],110:[2,110],118:[2,110],126:[2,110],128:[2,110],129:[2,110],132:[2,110],133:[2,110],134:[2,110],135:[2,110],136:[2,110],137:[2,110]},{1:[2,48],6:[2,48],25:[2,48],26:[2,48],49:[2,48],54:[2,48],57:[2,48],73:[2,48],78:[2,48],86:[2,48],91:[2,48],93:[2,48],102:[2,48],104:[2,48],105:[2,48],106:[2,48],110:[2,48],118:[2,48],126:[2,48],128:[2,48],129:[2,48],132:[2,48],133:[2,48],134:[2,48],135:[2,48],136:[2,48],137:[2,48]},{6:[2,57],25:[2,57],26:[2,57],49:[2,57],54:[2,57]},{6:[2,52],25:[2,52],26:[2,52],53:314,54:[1,199]},{1:[2,202],6:[2,202],25:[2,202],26:[2,202],49:[2,202],54:[2,202],57:[2,202],73:[2,202],78:[2,202],86:[2,202],91:[2,202],93:[2,202],102:[2,202],104:[2,202],105:[2,202],106:[2,202],110:[2,202],118:[2,202],126:[2,202],128:[2,202],129:[2,202],132:[2,202],133:[2,202],134:[2,202],135:[2,202],136:[2,202],137:[2,202]},{1:[2,181],6:[2,181],25:[2,181],26:[2,181],49:[2,181],54:[2,181],57:[2,181],73:[2,181],78:[2,181],86:[2,181],91:[2,181],93:[2,181],102:[2,181],104:[2,181],105:[2,181],106:[2,181],110:[2,181],118:[2,181],121:[2,181],126:[2,181],128:[2,181],129:[2,181],132:[2,181],133:[2,181],134:[2,181],135:[2,181],136:[2,181],137:[2,181]},{1:[2,135],6:[2,135],25:[2,135],26:[2,135],49:[2,135],54:[2,135],57:[2,135],73:[2,135],78:[2,135],86:[2,135],91:[2,135],93:[2,135],102:[2,135],104:[2,135],105:[2,135],106:[2,135],110:[2,135],118:[2,135],126:[2,135],128:[2,135],129:[2,135],132:[2,135],133:[2,135],134:[2,135],135:[2,135],136:[2,135],137:[2,135]},{1:[2,136],6:[2,136],25:[2,136],26:[2,136],49:[2,136],54:[2,136],57:[2,136],73:[2,136],78:[2,136],86:[2,136],91:[2,136],93:[2,136],98:[2,136],102:[2,136],104:[2,136],105:[2,136],106:[2,136],110:[2,136],118:[2,136],126:[2,136],128:[2,136],129:[2,136],132:[2,136],133:[2,136],134:[2,136],135:[2,136],136:[2,136],137:[2,136]},{1:[2,137],6:[2,137],25:[2,137],26:[2,137],49:[2,137],54:[2,137],57:[2,137],73:[2,137],78:[2,137],86:[2,137],91:[2,137],93:[2,137],98:[2,137],102:[2,137],104:[2,137],105:[2,137],106:[2,137],110:[2,137],118:[2,137],126:[2,137],128:[2,137],129:[2,137],132:[2,137],133:[2,137],134:[2,137],135:[2,137],136:[2,137],137:[2,137]},{1:[2,172],6:[2,172],25:[2,172],26:[2,172],49:[2,172],54:[2,172],57:[2,172],73:[2,172],78:[2,172],86:[2,172],91:[2,172],93:[2,172],102:[2,172],104:[2,172],105:[2,172],106:[2,172],110:[2,172],118:[2,172],126:[2,172],128:[2,172],129:[2,172],132:[2,172],133:[2,172],134:[2,172],135:[2,172],136:[2,172],137:[2,172]},{24:315,25:[1,112]},{26:[1,316]},{6:[1,317],26:[2,178],121:[2,178],123:[2,178]},{7:318,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{1:[2,102],6:[2,102],25:[2,102],26:[2,102],49:[2,102],54:[2,102],57:[2,102],73:[2,102],78:[2,102],86:[2,102],91:[2,102],93:[2,102],102:[2,102],104:[2,102],105:[2,102],106:[2,102],110:[2,102],118:[2,102],126:[2,102],128:[2,102],129:[2,102],132:[2,102],133:[2,102],134:[2,102],135:[2,102],136:[2,102],137:[2,102]},{1:[2,141],6:[2,141],25:[2,141],26:[2,141],49:[2,141],54:[2,141],57:[2,141],66:[2,141],67:[2,141],68:[2,141],69:[2,141],71:[2,141],73:[2,141],74:[2,141],78:[2,141],84:[2,141],85:[2,141],86:[2,141],91:[2,141],93:[2,141],102:[2,141],104:[2,141],105:[2,141],106:[2,141],110:[2,141],118:[2,141],126:[2,141],128:[2,141],129:[2,141],132:[2,141],133:[2,141],134:[2,141],135:[2,141],136:[2,141],137:[2,141]},{1:[2,118],6:[2,118],25:[2,118],26:[2,118],49:[2,118],54:[2,118],57:[2,118],66:[2,118],67:[2,118],68:[2,118],69:[2,118],71:[2,118],73:[2,118],74:[2,118],78:[2,118],84:[2,118],85:[2,118],86:[2,118],91:[2,118],93:[2,118],102:[2,118],104:[2,118],105:[2,118],106:[2,118],110:[2,118],118:[2,118],126:[2,118],128:[2,118],129:[2,118],132:[2,118],133:[2,118],134:[2,118],135:[2,118],136:[2,118],137:[2,118]},{6:[2,125],25:[2,125],26:[2,125],54:[2,125],86:[2,125],91:[2,125]},{6:[2,52],25:[2,52],26:[2,52],53:319,54:[1,226]},{6:[2,126],25:[2,126],26:[2,126],54:[2,126],86:[2,126],91:[2,126]},{1:[2,167],6:[2,167],25:[2,167],26:[2,167],49:[2,167],54:[2,167],57:[2,167],73:[2,167],78:[2,167],86:[2,167],91:[2,167],93:[2,167],102:[2,167],103:82,104:[2,167],105:[2,167],106:[2,167],109:83,110:[2,167],111:67,118:[1,320],126:[2,167],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,169],6:[2,169],25:[2,169],26:[2,169],49:[2,169],54:[2,169],57:[2,169],73:[2,169],78:[2,169],86:[2,169],91:[2,169],93:[2,169],102:[2,169],103:82,104:[2,169],105:[1,321],106:[2,169],109:83,110:[2,169],111:67,118:[2,169],126:[2,169],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,168],6:[2,168],25:[2,168],26:[2,168],49:[2,168],54:[2,168],57:[2,168],73:[2,168],78:[2,168],86:[2,168],91:[2,168],93:[2,168],102:[2,168],103:82,104:[2,168],105:[2,168],106:[2,168],109:83,110:[2,168],111:67,118:[2,168],126:[2,168],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[2,93],25:[2,93],26:[2,93],54:[2,93],78:[2,93]},{6:[2,52],25:[2,52],26:[2,52],53:322,54:[1,236]},{26:[1,323],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,247],25:[1,248],26:[1,324]},{26:[1,325]},{1:[2,175],6:[2,175],25:[2,175],26:[2,175],49:[2,175],54:[2,175],57:[2,175],73:[2,175],78:[2,175],86:[2,175],91:[2,175],93:[2,175],102:[2,175],104:[2,175],105:[2,175],106:[2,175],110:[2,175],118:[2,175],126:[2,175],128:[2,175],129:[2,175],132:[2,175],133:[2,175],134:[2,175],135:[2,175],136:[2,175],137:[2,175]},{26:[2,179],121:[2,179],123:[2,179]},{25:[2,131],54:[2,131],103:82,104:[1,63],106:[1,64],109:83,110:[1,66],111:67,126:[1,81],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[1,270],25:[1,271],26:[1,326]},{7:327,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{7:328,8:114,9:18,10:19,11:[1,20],12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:60,28:[1,71],29:47,30:[1,69],31:[1,70],32:22,33:[1,48],34:[1,49],35:[1,50],36:[1,51],37:[1,52],38:[1,53],39:21,44:61,45:[1,43],46:[1,44],47:[1,27],50:28,51:[1,58],52:[1,59],58:45,59:46,61:34,63:23,64:24,65:25,76:[1,68],79:[1,41],83:[1,26],88:[1,56],89:[1,57],90:[1,55],96:[1,36],100:[1,42],101:[1,54],103:37,104:[1,63],106:[1,64],107:38,108:[1,65],109:39,110:[1,66],111:67,119:[1,40],124:35,125:[1,62],127:[1,29],128:[1,30],129:[1,31],130:[1,32],131:[1,33]},{6:[1,281],25:[1,282],26:[1,329]},{6:[2,40],25:[2,40],26:[2,40],54:[2,40],78:[2,40]},{6:[2,58],25:[2,58],26:[2,58],49:[2,58],54:[2,58]},{1:[2,173],6:[2,173],25:[2,173],26:[2,173],49:[2,173],54:[2,173],57:[2,173],73:[2,173],78:[2,173],86:[2,173],91:[2,173],93:[2,173],102:[2,173],104:[2,173],105:[2,173],106:[2,173],110:[2,173],118:[2,173],126:[2,173],128:[2,173],129:[2,173],132:[2,173],133:[2,173],134:[2,173],135:[2,173],136:[2,173],137:[2,173]},{6:[2,127],25:[2,127],26:[2,127],54:[2,127],86:[2,127],91:[2,127]},{1:[2,170],6:[2,170],25:[2,170],26:[2,170],49:[2,170],54:[2,170],57:[2,170],73:[2,170],78:[2,170],86:[2,170],91:[2,170],93:[2,170],102:[2,170],103:82,104:[2,170],105:[2,170],106:[2,170],109:83,110:[2,170],111:67,118:[2,170],126:[2,170],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{1:[2,171],6:[2,171],25:[2,171],26:[2,171],49:[2,171],54:[2,171],57:[2,171],73:[2,171],78:[2,171],86:[2,171],91:[2,171],93:[2,171],102:[2,171],103:82,104:[2,171],105:[2,171],106:[2,171],109:83,110:[2,171],111:67,118:[2,171],126:[2,171],128:[1,75],129:[1,74],132:[1,73],133:[1,76],134:[1,77],135:[1,78],136:[1,79],137:[1,80]},{6:[2,94],25:[2,94],26:[2,94],54:[2,94],78:[2,94]}],defaultActions:{58:[2,50],59:[2,51],89:[2,108],186:[2,88]},parseError:function(t,n){if(!n.recoverable){var r=new Error(t);throw r.location=n.loc,r}this.trace(t)},parse:function(t){function v(e){r.length=r.length-2*e,i.length=i.length-e,s.length=s.length-e}function m(){var e;return e=n.lexer.lex()||h,typeof e!="number"&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],s=[],o=this.table,u="",a=0,f=0,l=0,c=2,h=1;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p);var d=this.lexer.options&&this.lexer.options.ranges;typeof this.yy.parseError=="function"?this.parseError=this.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;var g,y,b,w,E,S,x={},T,N,C,k;for(;;){b=r[r.length-1];if(this.defaultActions[b])w=this.defaultActions[b];else{if(g===null||typeof g=="undefined")g=m();w=o[b]&&o[b][g]}if(typeof w=="undefined"||!w.length||!w[0]){var L="";k=[];for(T in o[b])this.terminals_[T]&&T>c&&k.push("'"+this.terminals_[T]+"'");this.lexer.showPosition?L="Expecting "+k.join(", ")+", got '"+(this.terminals_[g]||g)+"'":L="Unexpected "+(g==h?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.lexer.yylloc.first_line!==p.first_line&&(p=this.lexer.yylloc),this.parseError(L,{text:this.lexer.match,token:this.terminals_[g]||g,line:this.lexer.yylineno,loc:p,expected:k})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+b+", token: "+g);switch(w[0]){case 1:r.push(g),i.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(w[1]),g=null,y?(g=y,y=null):(f=this.lexer.yyleng,u=this.lexer.yytext,a=this.lexer.yylineno,p=this.lexer.yylloc,l>0&&l--);break;case 2:N=this.productions_[w[1]][1],x.$=i[i.length-N],x._$={first_line:s[s.length-(N||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(N||1)].first_column,last_column:s[s.length-1].last_column},d&&(x._$.range=[s[s.length-(N||1)].range[0],s[s.length-1].range[1]]),S=this.performAction.call(x,u,f,a,this.yy,w[1],i,s);if(typeof S!="undefined")return S;N&&(r=r.slice(0,-1*N*2),i=i.slice(0,-1*N),s=s.slice(0,-1*N)),r.push(this.productions_[w[1]][0]),i.push(x.$),s.push(x._$),C=o[r[r.length-2]][r[r.length-1]],r.push(C);break;case 3:return!0}}return!0}};undefined,i.prototype=r,r.Parser=i,n.exports=new i}),ace.define("ace/mode/coffee/scope",["require","exports","module","ace/mode/coffee/helpers"],function(e,t,n){var r,i,s,o;o=e("./helpers"),i=o.extend,s=o.last,t.Scope=r=function(){function e(t,n,r){this.parent=t,this.expressions=n,this.method=r,this.variables=[{name:"arguments",type:"arguments"}],this.positions={},this.parent||(e.root=this)}return e.root=null,e.prototype.add=function(e,t,n){return this.shared&&!n?this.parent.add(e,t,n):Object.prototype.hasOwnProperty.call(this.positions,e)?this.variables[this.positions[e]].type=t:this.positions[e]=this.variables.push({name:e,type:t})-1},e.prototype.namedMethod=function(){var e;return((e=this.method)!=null?e.name:void 0)||!this.parent?this.method:this.parent.namedMethod()},e.prototype.find=function(e){return this.check(e)?!0:(this.add(e,"var"),!1)},e.prototype.parameter=function(e){if(this.shared&&this.parent.check(e,!0))return;return this.add(e,"param")},e.prototype.check=function(e){var t;return!!(this.type(e)||((t=this.parent)!=null?t.check(e):void 0))},e.prototype.temporary=function(e,t){return e.length>1?"_"+e+(t>1?t-1:""):"_"+(t+parseInt(e,36)).toString(36).replace(/\d/g,"a")},e.prototype.type=function(e){var t,n,r,i;i=this.variables;for(n=0,r=i.length;n<r;n++){t=i[n];if(t.name===e)return t.type}return null},e.prototype.freeVariable=function(e,t){var n,r;t==null&&(t=!0),n=0;while(this.check(r=this.temporary(e,n)))n++;return t&&this.add(r,"var",!0),r},e.prototype.assign=function(e,t){return this.add(e,{value:t,assigned:!0},!0),this.hasAssignments=!0},e.prototype.hasDeclarations=function(){return!!this.declaredVariables().length},e.prototype.declaredVariables=function(){var e,t,n,r,i,s;e=[],t=[],s=this.variables;for(r=0,i=s.length;r<i;r++)n=s[r],n.type==="var"&&(n.name.charAt(0)==="_"?t:e).push(n.name);return e.sort().concat(t.sort())},e.prototype.assignedVariables=function(){var e,t,n,r,i;r=this.variables,i=[];for(t=0,n=r.length;t<n;t++)e=r[t],e.type.assigned&&i.push(""+e.name+" = "+e.type.value);return i},e}()}),ace.define("ace/mode/coffee/nodes",["require","exports","module","ace/mode/coffee/scope","ace/mode/coffee/lexer","ace/mode/coffee/helpers"],function(e,t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q,R,U,z,W,X,V,$,J,K,Q,G,Y,Z,et,tt,nt,rt,it,st,ot,ut,at,ft,lt,ct,ht,pt,dt,vt,mt,gt,yt,bt,wt,Et,St,xt={}.hasOwnProperty,Tt=function(e,t){function r(){this.constructor=e}for(var n in t)xt.call(t,n)&&(e[n]=t[n]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},Nt=[].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1},Ct=[].slice;Error.stackTraceLimit=Infinity,W=e("./scope").Scope,Et=e("./lexer"),I=Et.RESERVED,z=Et.STRICT_PROSCRIBED,St=e("./helpers"),rt=St.compact,ut=St.flatten,ot=St.extend,pt=St.merge,it=St.del,gt=St.starts,st=St.ends,ct=St.last,mt=St.some,nt=St.addLocationDataFn,ht=St.locationDataToString,yt=St.throwSyntaxError,t.extend=ot,t.addLocationDataFn=nt,tt=function(){return!0},D=function(){return!1},K=function(){return this},_=function(){return this.negated=!this.negated,this},t.CodeFragment=c=function(){function e(e,t){var n;this.code=""+t,this.locationData=e!=null?e.locationData:void 0,this.type=(e!=null?(n=e.constructor)!=null?n.name:void 0:void 0)||"unknown"}return e.prototype.toString=function(){return""+this.code+(this.locationData?": "+ht(this.locationData):"")},e}(),at=function(e){var t;return function(){var n,r,i;i=[];for(n=0,r=e.length;n<r;n++)t=e[n],i.push(t.code);return i}().join("")},t.Base=o=function(){function e(){}return e.prototype.compile=function(e,t){return at(this.compileToFragments(e,t))},e.prototype.compileToFragments=function(e,t){var n;return e=ot({},e),t&&(e.level=t),n=this.unfoldSoak(e)||this,n.tab=e.indent,e.level===A||!n.isStatement(e)?n.compileNode(e):n.compileClosure(e)},e.prototype.compileClosure=function(e){var t,n,i,s,o;(s=this.jumps())&&s.error("cannot use a pure statement in an expression"),e.sharedScope=!0,i=new l([],u.wrap([this])),t=[];if((n=this.contains(ft))||this.contains(lt))t=[new O("this")],n?(o="apply",t.push(new O("arguments"))):o="call",i=new Z(i,[new r(new O(o))]);return(new a(i,t)).compileNode(e)},e.prototype.cache=function(e,t,n){var r,i;return this.isComplex()?(r=new O(n||e.scope.freeVariable("ref")),i=new s(r,this),t?[i.compileToFragments(e,t),[this.makeCode(r.value)]]:[i,r]):(r=t?this.compileToFragments(e,t):this,[r,r])},e.prototype.cacheToCodeFragments=function(e){return[at(e[0]),at(e[1])]},e.prototype.makeReturn=function(e){var t;return t=this.unwrapAll(),e?new a(new O(""+e+".push"),[t]):new R(t)},e.prototype.contains=function(e){var t;return t=void 0,this.traverseChildren(!1,function(n){if(e(n))return t=n,!1}),t},e.prototype.lastNonComment=function(e){var t;t=e.length;while(t--)if(!(e[t]instanceof h))return e[t];return null},e.prototype.toString=function(e,t){var n;return e==null&&(e=""),t==null&&(t=this.constructor.name),n="\n"+e+t,this.soak&&(n+="?"),this.eachChild(function(t){return n+=t.toString(e+J)}),n},e.prototype.eachChild=function(e){var t,n,r,i,s,o,u,a;if(!this.children)return this;u=this.children;for(r=0,s=u.length;r<s;r++){t=u[r];if(this[t]){a=ut([this[t]]);for(i=0,o=a.length;i<o;i++){n=a[i];if(e(n)===!1)return this}}}return this},e.prototype.traverseChildren=function(e,t){return this.eachChild(function(n){var r;r=t(n);if(r!==!1)return n.traverseChildren(e,t)})},e.prototype.invert=function(){return new B("!",this)},e.prototype.unwrapAll=function(){var e;e=this;while(e!==(e=e.unwrap()))continue;return e},e.prototype.children=[],e.prototype.isStatement=D,e.prototype.jumps=D,e.prototype.isComplex=tt,e.prototype.isChainable=D,e.prototype.isAssignable=D,e.prototype.unwrap=K,e.prototype.unfoldSoak=D,e.prototype.assigns=D,e.prototype.updateLocationDataIfMissing=function(e){return this.locationData?this:(this.locationData=e,this.eachChild(function(t){return t.updateLocationDataIfMissing(e)}))},e.prototype.error=function(e){return yt(e,this.locationData)},e.prototype.makeCode=function(e){return new c(this,e)},e.prototype.wrapInBraces=function(e){return[].concat(this.makeCode("("),e,this.makeCode(")"))},e.prototype.joinFragmentArrays=function(e,t){var n,r,i,s,o;n=[];for(i=s=0,o=e.length;s<o;i=++s)r=e[i],i&&n.push(this.makeCode(t)),n=n.concat(r);return n},e}(),t.Block=u=function(e){function t(e){this.expressions=rt(ut(e||[]))}return Tt(t,e),t.prototype.children=["expressions"],t.prototype.push=function(e){return this.expressions.push(e),this},t.prototype.pop=function(){return this.expressions.pop()},t.prototype.unshift=function(e){return this.expressions.unshift(e),this},t.prototype.unwrap=function(){return this.expressions.length===1?this.expressions[0]:this},t.prototype.isEmpty=function(){return!this.expressions.length},t.prototype.isStatement=function(e){var t,n,r,i;i=this.expressions;for(n=0,r=i.length;n<r;n++){t=i[n];if(t.isStatement(e))return!0}return!1},t.prototype.jumps=function(e){var t,n,r,i,s;s=this.expressions;for(r=0,i=s.length;r<i;r++){t=s[r];if(n=t.jumps(e))return n}},t.prototype.makeReturn=function(e){var t,n;n=this.expressions.length;while(n--){t=this.expressions[n];if(!(t instanceof h)){this.expressions[n]=t.makeReturn(e),t instanceof R&&!t.expression&&this.expressions.splice(n,1);break}}return this},t.prototype.compileToFragments=function(e,n){return e==null&&(e={}),e.scope?t.__super__.compileToFragments.call(this,e,n):this.compileRoot(e)},t.prototype.compileNode=function(e){var n,r,i,s,o,u,a,f,l;this.tab=e.indent,u=e.level===A,r=[],l=this.expressions;for(s=a=0,f=l.length;a<f;s=++a)o=l[s],o=o.unwrapAll(),o=o.unfoldSoak(e)||o,o instanceof t?r.push(o.compileNode(e)):u?(o.front=!0,i=o.compileToFragments(e),o.isStatement(e)||(i.unshift(this.makeCode(""+this.tab)),i.push(this.makeCode(";"))),r.push(i)):r.push(o.compileToFragments(e,C));return u?this.spaced?[].concat(this.joinFragmentArrays(r,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(r,"\n"):(r.length?n=this.joinFragmentArrays(r,", "):n=[this.makeCode("void 0")],r.length>1&&e.level>=C?this.wrapInBraces(n):n)},t.prototype.compileRoot=function(e){var t,n,r,i,s,o,u,a,f,l;e.indent=e.bare?"":J,e.level=A,this.spaced=!0,e.scope=new W(null,this,null),l=e.locals||[];for(a=0,f=l.length;a<f;a++)i=l[a],e.scope.parameter(i);return s=[],e.bare||(o=function(){var e,n,i,s;i=this.expressions,s=[];for(r=e=0,n=i.length;e<n;r=++e){t=i[r];if(!(t.unwrap()instanceof h))break;s.push(t)}return s}.call(this),u=this.expressions.slice(o.length),this.expressions=o,o.length&&(s=this.compileNode(pt(e,{indent:""})),s.push(this.makeCode("\n"))),this.expressions=u),n=this.compileWithDeclarations(e),e.bare?n:[].concat(s,this.makeCode("(function() {\n"),n,this.makeCode("\n}).call(this);\n"))},t.prototype.compileWithDeclarations=function(e){var t,n,r,i,s,o,u,a,f,l,c,p,d,v;i=[],o=[],p=this.expressions;for(s=l=0,c=p.length;l<c;s=++l){r=p[s],r=r.unwrap();if(!(r instanceof h||r instanceof O))break}return e=pt(e,{level:A}),s&&(u=this.expressions.splice(s,9e9),d=[this.spaced,!1],f=d[0],this.spaced=d[1],v=[this.compileNode(e),f],i=v[0],this.spaced=v[1],this.expressions=u),o=this.compileNode(e),a=e.scope,a.expressions===this&&(n=e.scope.hasDeclarations(),t=a.hasAssignments,n||t?(s&&i.push(this.makeCode("\n")),i.push(this.makeCode(""+this.tab+"var ")),n&&i.push(this.makeCode(a.declaredVariables().join(", "))),t&&(n&&i.push(this.makeCode(",\n"+(this.tab+J))),i.push(this.makeCode(a.assignedVariables().join(",\n"+(this.tab+J))))),i.push(this.makeCode(";\n"+(this.spaced?"\n":"")))):i.length&&o.length&&i.push(this.makeCode("\n"))),i.concat(o)},t.wrap=function(e){return e.length===1&&e[0]instanceof t?e[0]:new t(e)},t}(o),t.Literal=O=function(e){function t(e){this.value=e}return Tt(t,e),t.prototype.makeReturn=function(){return this.isStatement()?this:t.__super__.makeReturn.apply(this,arguments)},t.prototype.isAssignable=function(){return g.test(this.value)},t.prototype.isStatement=function(){var e;return(e=this.value)==="break"||e==="continue"||e==="debugger"},t.prototype.isComplex=D,t.prototype.assigns=function(e){return e===this.value},t.prototype.jumps=function(e){if(this.value==="break"&&!((e!=null?e.loop:void 0)||(e!=null?e.block:void 0)))return this;if(this.value==="continue"&&(e!=null?!e.loop:!void 0))return this},t.prototype.compileNode=function(e){var t,n,r;return n=this.value==="this"?((r=e.scope.method)!=null?r.bound:void 0)?e.scope.method.context:this.value:this.value.reserved?'"'+this.value+'"':this.value,t=this.isStatement()?""+this.tab+n+";":n,[this.makeCode(t)]},t.prototype.toString=function(){return' "'+this.value+'"'},t}(o),t.Undefined=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return Tt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(e){return[this.makeCode(e.level>=T?"(void 0)":"void 0")]},t}(o),t.Null=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return Tt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(){return[this.makeCode("null")]},t}(o),t.Bool=function(e){function t(e){this.val=e}return Tt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(){return[this.makeCode(this.val)]},t}(o),t.Return=R=function(e){function t(e){e&&!e.unwrap().isUndefined&&(this.expression=e)}return Tt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=tt,t.prototype.makeReturn=K,t.prototype.jumps=K,t.prototype.compileToFragments=function(e,n){var r,i;return r=(i=this.expression)!=null?i.makeReturn():void 0,!r||r instanceof t?t.__super__.compileToFragments.call(this,e,n):r.compileToFragments(e,n)},t.prototype.compileNode=function(e){var t;return t=[],t.push(this.makeCode(this.tab+("return"+(this.expression?" ":"")))),this.expression&&(t=t.concat(this.expression.compileToFragments(e,L))),t.push(this.makeCode(";")),t},t}(o),t.Value=Z=function(e){function t(e,n,r){return!n&&e instanceof t?e:(this.base=e,this.properties=n||[],r&&(this[r]=!0),this)}return Tt(t,e),t.prototype.children=["base","properties"],t.prototype.add=function(e){return this.properties=this.properties.concat(e),this},t.prototype.hasProperties=function(){return!!this.properties.length},t.prototype.bareLiteral=function(e){return!this.properties.length&&this.base instanceof e},t.prototype.isArray=function(){return this.bareLiteral(i)},t.prototype.isRange=function(){return this.bareLiteral(q)},t.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()},t.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()},t.prototype.isSimpleNumber=function(){return this.bareLiteral(O)&&U.test(this.base.value)},t.prototype.isString=function(){return this.bareLiteral(O)&&w.test(this.base.value)},t.prototype.isRegex=function(){return this.bareLiteral(O)&&b.test(this.base.value)},t.prototype.isAtomic=function(){var e,t,n,r;r=this.properties.concat(this.base);for(t=0,n=r.length;t<n;t++){e=r[t];if(e.soak||e instanceof a)return!1}return!0},t.prototype.isNotCallable=function(){return this.isSimpleNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()},t.prototype.isStatement=function(e){return!this.properties.length&&this.base.isStatement(e)},t.prototype.assigns=function(e){return!this.properties.length&&this.base.assigns(e)},t.prototype.jumps=function(e){return!this.properties.length&&this.base.jumps(e)},t.prototype.isObject=function(e){return this.properties.length?!1:this.base instanceof H&&(!e||this.base.generated)},t.prototype.isSplice=function(){return ct(this.properties)instanceof X},t.prototype.looksStatic=function(e){var t;return this.base.value===e&&this.properties.length&&((t=this.properties[0].name)!=null?t.value:void 0)!=="prototype"},t.prototype.unwrap=function(){return this.properties.length?this:this.base},t.prototype.cacheReference=function(e){var n,r,i,o;return i=ct(this.properties),this.properties.length<2&&!this.base.isComplex()&&(i!=null?!i.isComplex():!void 0)?[this,this]:(n=new t(this.base,this.properties.slice(0,-1)),n.isComplex()&&(r=new O(e.scope.freeVariable("base")),n=new t(new F(new s(r,n)))),i?(i.isComplex()&&(o=new O(e.scope.freeVariable("name")),i=new x(new s(o,i.index)),o=new x(o)),[n.add(i),new t(r||n.base,[o||i])]):[n,r])},t.prototype.compileNode=function(e){var t,n,r,i,s;this.base.front=this.front,r=this.properties,t=this.base.compileToFragments(e,r.length?T:null),(this.base instanceof F||r.length)&&U.test(at(t))&&t.push(this.makeCode("."));for(i=0,s=r.length;i<s;i++)n=r[i],t.push.apply(t,n.compileToFragments(e));return t},t.prototype.unfoldSoak=function(e){return this.unfoldedSoak!=null?this.unfoldedSoak:this.unfoldedSoak=function(n){return function(){var r,i,o,u,a,f,l,c,h,d;if(o=n.base.unfoldSoak(e))return(h=o.body.properties).push.apply(h,n.properties),o;d=n.properties;for(i=l=0,c=d.length;l<c;i=++l){u=d[i];if(!u.soak)continue;return u.soak=!1,r=new t(n.base,n.properties.slice(0,i)),f=new t(n.base,n.properties.slice(i)),r.isComplex()&&(a=new O(e.scope.freeVariable("ref")),r=new F(new s(a,r)),f.base=a),new E(new p(r),f,{soak:!0})}return!1}}(this)()},t}(o),t.Comment=h=function(e){function t(e){this.comment=e}return Tt(t,e),t.prototype.isStatement=tt,t.prototype.makeReturn=K,t.prototype.compileNode=function(e,t){var n,r;return r=this.comment.replace(/^(\s*)#/gm,"$1 *"),n="/*"+dt(r,this.tab)+(Nt.call(r,"\n")>=0?"\n"+this.tab:"")+" */",(t||e.level)===A&&(n=e.indent+n),[this.makeCode("\n"),this.makeCode(n)]},t}(o),t.Call=a=function(e){function t(e,t,n){this.args=t!=null?t:[],this.soak=n,this.isNew=!1,this.isSuper=e==="super",this.variable=this.isSuper?null:e,e instanceof Z&&e.isNotCallable()&&e.error("literal is not a function")}return Tt(t,e),t.prototype.children=["variable","args"],t.prototype.newInstance=function(){var e,n;return e=((n=this.variable)!=null?n.base:void 0)||this.variable,e instanceof t&&!e.isNew?e.newInstance():this.isNew=!0,this},t.prototype.superReference=function(e){var t,n;return n=e.scope.namedMethod(),(n!=null?n.klass:void 0)?(t=[new r(new O("__super__"))],n["static"]&&t.push(new r(new O("constructor"))),t.push(new r(new O(n.name))),(new Z(new O(n.klass),t)).compile(e)):(n!=null?n.ctor:void 0)?""+n.name+".__super__.constructor":this.error("cannot call super outside of an instance method.")},t.prototype.superThis=function(e){var t;return t=e.scope.method,t&&!t.klass&&t.context||"this"},t.prototype.unfoldSoak=function(e){var n,r,i,s,o,u,a,f,l;if(this.soak){if(this.variable){if(r=bt(e,this,"variable"))return r;f=(new Z(this.variable)).cacheReference(e),i=f[0],o=f[1]}else i=new O(this.superReference(e)),o=new Z(i);return o=new t(o,this.args),o.isNew=this.isNew,i=new O("typeof "+i.compile(e)+' === "function"'),new E(i,new Z(o),{soak:!0})}n=this,s=[];for(;;){if(n.variable instanceof t){s.push(n),n=n.variable;continue}if(!(n.variable instanceof Z))break;s.push(n);if(!((n=n.variable.base)instanceof t))break}l=s.reverse();for(u=0,a=l.length;u<a;u++)n=l[u],r&&(n.variable instanceof t?n.variable=r:n.variable.base=r),r=bt(e,n,"variable");return r},t.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,l;(f=this.variable)!=null&&(f.front=this.front),i=V.compileSplattedArray(e,this.args,!0);if(i.length)return this.compileSplat(e,i);r=[],l=this.args;for(n=u=0,a=l.length;u<a;n=++u)t=l[n],n&&r.push(this.makeCode(", ")),r.push.apply(r,t.compileToFragments(e,C));return s=[],this.isSuper?(o=this.superReference(e)+(".call("+this.superThis(e)),r.length&&(o+=", "),s.push(this.makeCode(o))):(this.isNew&&s.push(this.makeCode("new ")),s.push.apply(s,this.variable.compileToFragments(e,T)),s.push(this.makeCode("("))),s.push.apply(s,r),s.push(this.makeCode(")")),s},t.prototype.compileSplat=function(e,t){var n,r,i,s,o,u;return this.isSuper?[].concat(this.makeCode(""+this.superReference(e)+".apply("+this.superThis(e)+", "),t,this.makeCode(")")):this.isNew?(s=this.tab+J,[].concat(this.makeCode("(function(func, args, ctor) {\n"+s+"ctor.prototype = func.prototype;\n"+s+"var child = new ctor, result = func.apply(child, args);\n"+s+"return Object(result) === result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(e,C),this.makeCode(", "),t,this.makeCode(", function(){})"))):(n=[],r=new Z(this.variable),(o=r.properties.pop())&&r.isComplex()?(u=e.scope.freeVariable("ref"),n=n.concat(this.makeCode("("+u+" = "),r.compileToFragments(e,C),this.makeCode(")"),o.compileToFragments(e))):(i=r.compileToFragments(e,T),U.test(at(i))&&(i=this.wrapInBraces(i)),o?(u=at(i),i.push.apply(i,o.compileToFragments(e))):u="null",n=n.concat(i)),n=n.concat(this.makeCode(".apply("+u+", "),t,this.makeCode(")")))},t}(o),t.Extends=d=function(e){function t(e,t){this.child=e,this.parent=t}return Tt(t,e),t.prototype.children=["child","parent"],t.prototype.compileToFragments=function(e){return(new a(new Z(new O(wt("extends"))),[this.child,this.parent])).compileToFragments(e)},t}(o),t.Access=r=function(e){function t(e,t){this.name=e,this.name.asKey=!0,this.soak=t==="soak"}return Tt(t,e),t.prototype.children=["name"],t.prototype.compileToFragments=function(e){var t;return t=this.name.compileToFragments(e),g.test(at(t))?t.unshift(this.makeCode(".")):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.isComplex=D,t}(o),t.Index=x=function(e){function t(e){this.index=e}return Tt(t,e),t.prototype.children=["index"],t.prototype.compileToFragments=function(e){return[].concat(this.makeCode("["),this.index.compileToFragments(e,L),this.makeCode("]"))},t.prototype.isComplex=function(){return this.index.isComplex()},t}(o),t.Range=q=function(e){function t(e,t,n){this.from=e,this.to=t,this.exclusive=n==="exclusive",this.equals=this.exclusive?"":"="}return Tt(t,e),t.prototype.children=["from","to"],t.prototype.compileVariables=function(e){var t,n,r,i,s;e=pt(e,{top:!0}),n=this.cacheToCodeFragments(this.from.cache(e,C)),this.fromC=n[0],this.fromVar=n[1],r=this.cacheToCodeFragments(this.to.cache(e,C)),this.toC=r[0],this.toVar=r[1];if(t=it(e,"step"))i=this.cacheToCodeFragments(t.cache(e,C)),this.step=i[0],this.stepVar=i[1];s=[this.fromVar.match(P),this.toVar.match(P)],this.fromNum=s[0],this.toNum=s[1];if(this.stepVar)return this.stepNum=this.stepVar.match(P)},t.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d;return this.fromVar||this.compileVariables(e),e.index?(u=this.fromNum&&this.toNum,s=it(e,"index"),o=it(e,"name"),f=o&&o!==s,h=""+s+" = "+this.fromC,this.toC!==this.toVar&&(h+=", "+this.toC),this.step!==this.stepVar&&(h+=", "+this.step),p=[""+s+" <"+this.equals,""+s+" >"+this.equals],a=p[0],i=p[1],n=this.stepNum?vt(this.stepNum[0])>0?""+a+" "+this.toVar:""+i+" "+this.toVar:u?(d=[vt(this.fromNum[0]),vt(this.toNum[0])],r=d[0],c=d[1],d,r<=c?""+a+" "+c:""+i+" "+c):(t=this.stepVar?""+this.stepVar+" > 0":""+this.fromVar+" <= "+this.toVar,""+t+" ? "+a+" "+this.toVar+" : "+i+" "+this.toVar),l=this.stepVar?""+s+" += "+this.stepVar:u?f?r<=c?"++"+s:"--"+s:r<=c?""+s+"++":""+s+"--":f?""+t+" ? ++"+s+" : --"+s:""+t+" ? "+s+"++ : "+s+"--",f&&(h=""+o+" = "+h),f&&(l=""+o+" = "+l),[this.makeCode(""+h+"; "+n+"; "+l)]):this.compileArray(e)},t.prototype.compileArray=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v;if(this.fromNum&&this.toNum&&Math.abs(this.fromNum-this.toNum)<=20)return f=function(){v=[];for(var e=p=+this.fromNum,t=+this.toNum;p<=t?e<=t:e>=t;p<=t?e++:e--)v.push(e);return v}.apply(this),this.exclusive&&f.pop(),[this.makeCode("["+f.join(", ")+"]")];o=this.tab+J,s=e.scope.freeVariable("i"),l=e.scope.freeVariable("results"),a="\n"+o+l+" = [];",this.fromNum&&this.toNum?(e.index=s,n=at(this.compileNode(e))):(c=""+s+" = "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),r=""+this.fromVar+" <= "+this.toVar,n="var "+c+"; "+r+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+r+" ? "+s+"++ : "+s+"--"),u="{ "+l+".push("+s+"); }\n"+o+"return "+l+";\n"+e.indent,i=function(e){return e!=null?e.contains(ft):void 0};if(i(this.from)||i(this.to))t=", arguments";return[this.makeCode("(function() {"+a+"\n"+o+"for ("+n+")"+u+"}).apply(this"+(t!=null?t:"")+")")]},t}(o),t.Slice=X=function(e){function t(e){this.range=e,t.__super__.constructor.call(this)}return Tt(t,e),t.prototype.children=["range"],t.prototype.compileNode=function(e){var t,n,r,i,s,o,u;u=this.range,s=u.to,r=u.from,i=r&&r.compileToFragments(e,L)||[this.makeCode("0")];if(s){t=s.compileToFragments(e,L),n=at(t);if(!!this.range.exclusive||+n!==-1)o=", "+(this.range.exclusive?n:U.test(n)?""+(+n+1):(t=s.compileToFragments(e,T),"+"+at(t)+" + 1 || 9e9"))}return[this.makeCode(".slice("+at(i)+(o||"")+")")]},t}(o),t.Obj=H=function(e){function t(e,t){this.generated=t!=null?t:!1,this.objects=this.properties=e||[]}return Tt(t,e),t.prototype.children=["properties"],t.prototype.compileNode=function(e){var t,n,r,i,o,u,a,f,l,c,p,d,v;l=this.properties;if(!l.length)return[this.makeCode(this.front?"({})":"{}")];if(this.generated)for(c=0,d=l.length;c<d;c++)a=l[c],a instanceof Z&&a.error("cannot have an implicit value in an implicit object");r=e.indent+=J,u=this.lastNonComment(this.properties),t=[];for(n=p=0,v=l.length;p<v;n=++p)f=l[n],o=n===l.length-1?"":f===u||f instanceof h?"\n":",\n",i=f instanceof h?"":r,f instanceof s&&f.variable instanceof Z&&f.variable.hasProperties()&&f.variable.error("Invalid object key"),f instanceof Z&&f["this"]&&(f=new s(f.properties[0].name,f,"object")),f instanceof h||(f instanceof s||(f=new s(f,f,"object")),(f.variable.base||f.variable).asKey=!0),i&&t.push(this.makeCode(i)),t.push.apply(t,f.compileToFragments(e,A)),o&&t.push(this.makeCode(o));return t.unshift(this.makeCode("{"+(l.length&&"\n"))),t.push(this.makeCode(""+(l.length&&"\n"+this.tab)+"}")),this.front?this.wrapInBraces(t):t},t.prototype.assigns=function(e){var t,n,r,i;i=this.properties;for(n=0,r=i.length;n<r;n++){t=i[n];if(t.assigns(e))return!0}return!1},t}(o),t.Arr=i=function(e){function t(e){this.objects=e||[]}return Tt(t,e),t.prototype.children=["objects"],t.prototype.compileNode=function(e){var t,n,r,i,s,o,u;if(!this.objects.length)return[this.makeCode("[]")];e.indent+=J,t=V.compileSplattedArray(e,this.objects);if(t.length)return t;t=[],n=function(){var t,n,r,i;r=this.objects,i=[];for(t=0,n=r.length;t<n;t++)s=r[t],i.push(s.compileToFragments(e,C));return i}.call(this);for(i=o=0,u=n.length;o<u;i=++o)r=n[i],i&&t.push(this.makeCode(", ")),t.push.apply(t,r);return at(t).indexOf("\n")>=0?(t.unshift(this.makeCode("[\n"+e.indent)),t.push(this.makeCode("\n"+this.tab+"]"))):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.assigns=function(e){var t,n,r,i;i=this.objects;for(n=0,r=i.length;n<r;n++){t=i[n];if(t.assigns(e))return!0}return!1},t}(o),t.Class=f=function(e){function t(e,t,n){this.variable=e,this.parent=t,this.body=n!=null?n:new u,this.boundFuncs=[],this.body.classBody=!0}return Tt(t,e),t.prototype.children=["variable","parent","body"],t.prototype.determineName=function(){var e,t;return this.variable?(e=(t=ct(this.variable.properties))?t instanceof r&&t.name.value:this.variable.base.value,Nt.call(z,e)>=0&&this.variable.error("class variable name may not be "+e),e&&(e=g.test(e)&&e)):null},t.prototype.setContext=function(e){return this.body.traverseChildren(!1,function(t){if(t.classBody)return!1;if(t instanceof O&&t.value==="this")return t.value=e;if(t instanceof l){t.klass=e;if(t.bound)return t.context=e}})},t.prototype.addBoundFunctions=function(e){var t,n,i,s,o;o=this.boundFuncs;for(i=0,s=o.length;i<s;i++)t=o[i],n=(new Z(new O("this"),[new r(t)])).compile(e),this.ctor.body.unshift(new O(""+n+" = "+wt("bind")+"("+n+", this)"))},t.prototype.addProperties=function(e,t,n){var i,o,u,a,f;return f=e.base.properties.slice(0),u=function(){var e;e=[];while(i=f.shift())i instanceof s&&(o=i.variable.base,delete i.context,a=i.value,o.value==="constructor"?(this.ctor&&i.error("cannot define more than one constructor in a class"),a.bound&&i.error("cannot define a constructor as a bound function"),a instanceof l?i=this.ctor=a:(this.externalCtor=n.classScope.freeVariable("class"),i=new s(new O(this.externalCtor),a))):i.variable["this"]?a["static"]=!0:(i.variable=new Z(new O(t),[new r(new O("prototype")),new r(o)]),a instanceof l&&a.bound&&(this.boundFuncs.push(o),a.bound=!1))),e.push(i);return e}.call(this),rt(u)},t.prototype.walkBody=function(e,n){return this.traverseChildren(!1,function(r){return function(i){var o,a,f,l,c,h,p;o=!0;if(i instanceof t)return!1;if(i instanceof u){p=a=i.expressions;for(f=c=0,h=p.length;c<h;f=++c)l=p[f],l instanceof s&&l.variable.looksStatic(e)?l.value["static"]=!0:l instanceof Z&&l.isObject(!0)&&(o=!1,a[f]=r.addProperties(l,e,n));i.expressions=a=ut(a)}return o&&!(i instanceof t)}}(this))},t.prototype.hoistDirectivePrologue=function(){var e,t,n;t=0,e=this.body.expressions;while((n=e[t])&&n instanceof h||n instanceof Z&&n.isString())++t;return this.directives=e.splice(0,t)},t.prototype.ensureConstructor=function(e){return this.ctor||(this.ctor=new l,this.externalCtor?this.ctor.body.push(new O(""+this.externalCtor+".apply(this, arguments)")):this.parent&&this.ctor.body.push(new O(""+e+".__super__.constructor.apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor)),this.ctor.ctor=this.ctor.name=e,this.ctor.klass=null,this.ctor.noReturn=!0},t.prototype.compileNode=function(e){var t,n,r,i,o,f,c,h,p;return(i=this.body.jumps())&&i.error("Class bodies cannot contain pure statements"),(n=this.body.contains(ft))&&n.error("Class bodies shouldn't reference arguments"),c=this.determineName()||"_Class",c.reserved&&(c="_"+c),f=new O(c),r=new l([],u.wrap([this.body])),t=[],e.classScope=r.makeScope(e.scope),this.hoistDirectivePrologue(),this.setContext(c),this.walkBody(c,e),this.ensureConstructor(c),this.addBoundFunctions(e),this.body.spaced=!0,this.body.expressions.push(f),this.parent&&(h=new O(e.classScope.freeVariable("super",!1)),this.body.expressions.unshift(new d(f,h)),r.params.push(new j(h)),t.push(this.parent)),(p=this.body.expressions).unshift.apply(p,this.directives),o=new F(new a(r,t)),this.variable&&(o=new s(this.variable,o)),o.compileToFragments(e)},t}(o),t.Assign=s=function(e){function t(e,t,n,r){var i,s,o;this.variable=e,this.value=t,this.context=n,this.param=r&&r.param,this.subpattern=r&&r.subpattern,i=(o=s=this.variable.unwrapAll().value,Nt.call(z,o)>=0),i&&this.context!=="object"&&this.variable.error('variable name may not be "'+s+'"')}return Tt(t,e),t.prototype.children=["variable","value"],t.prototype.isStatement=function(e){return(e!=null?e.level:void 0)===A&&this.context!=null&&Nt.call(this.context,"?")>=0},t.prototype.assigns=function(e){return this[this.context==="object"?"value":"variable"].assigns(e)},t.prototype.unfoldSoak=function(e){return bt(e,this,"variable")},t.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,c;if(r=this.variable instanceof Z){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(e);if(this.variable.isSplice())return this.compileSplice(e);if((a=this.context)==="||="||a==="&&="||a==="?=")return this.compileConditional(e)}n=this.variable.compileToFragments(e,C),s=at(n);if(!this.context){u=this.variable.unwrapAll(),u.isAssignable()||this.variable.error('"'+this.variable.compile(e)+'" cannot be assigned');if(typeof u.hasProperties=="function"?!u.hasProperties():!void 0)this.param?e.scope.add(s,"var"):e.scope.find(s)}return this.value instanceof l&&(i=M.exec(s))&&(i[2]&&(this.value.klass=i[1]),this.value.name=(f=(c=i[3])!=null?c:i[4])!=null?f:i[5]),o=this.value.compileToFragments(e,C),this.context==="object"?n.concat(this.makeCode(": "),o):(t=n.concat(this.makeCode(" "+(this.context||"=")+" "),o),e.level<=C?t:this.wrapInBraces(t))},t.prototype.compilePatternMatch=function(e){var n,i,s,o,u,a,f,l,c,h,p,d,v,m,y,b,w,E,S,T,N,L,M,_,D,P,H,B;b=e.level===A,E=this.value,p=this.variable.base.objects;if(!(d=p.length))return s=E.compileToFragments(e),e.level>=k?this.wrapInBraces(s):s;f=this.variable.isObject();if(!b||d!==1||(h=p[0])instanceof V){S=E.compileToFragments(e,C),T=at(S),i=[],y=!1;if(!g.test(T)||this.variable.assigns(T))i.push([this.makeCode(""+(v=e.scope.freeVariable("ref"))+" = ")].concat(Ct.call(S))),S=[this.makeCode(v)],T=v;for(u=N=0,L=p.length;N<L;u=++N)h=p[u],a=u,f&&(h instanceof t?(P=h,H=P.variable,a=H.base,h=P.value):h.base instanceof F?(B=(new Z(h.unwrapAll())).cacheReference(e),h=B[0],a=B[1]):a=h["this"]?h.properties[0].name:h),!y&&h instanceof V?(c=h.name.unwrap().value,h=h.unwrap(),w=""+d+" <= "+T+".length ? "+wt("slice")+".call("+T+", "+u,(m=d-u-1)?(l=e.scope.freeVariable("i"),w+=", "+l+" = "+T+".length - "+m+") : ("+l+" = "+u+", [])"):w+=") : []",w=new O(w),y=""+l+"++"):(c=h.unwrap().value,h instanceof V&&h.error("multiple splats are disallowed in an assignment"),typeof a=="number"?(a=new O(y||a),n=!1):n=f&&g.test(a.unwrap().value||0),w=new Z(new O(T),[new(n?r:x)(a)])),c!=null&&Nt.call(I,c)>=0&&h.error("assignment to a reserved word: "+h.compile(e)),i.push((new t(h,w,null,{param:this.param,subpattern:!0})).compileToFragments(e,C));return!b&&!this.subpattern&&i.push(S),o=this.joinFragmentArrays(i,", "),e.level<C?o:this.wrapInBraces(o)}return h instanceof t?(M=h,_=M.variable,a=_.base,h=M.value):a=f?h["this"]?h.properties[0].name:h:new O(0),n=g.test(a.unwrap().value||0),E=new Z(E),E.properties.push(new(n?r:x)(a)),(D=h.unwrap().value,Nt.call(I,D)>=0)&&h.error("assignment to a reserved word: "+h.compile(e)),(new t(h,E,null,{param:this.param})).compileToFragments(e,A)},t.prototype.compileConditional=function(e){var n,r,i,s;return s=this.variable.cacheReference(e),r=s[0],i=s[1],!r.properties.length&&r.base instanceof O&&r.base.value!=="this"&&!e.scope.check(r.base.value)&&this.variable.error('the variable "'+r.base.value+"\" can't be assigned with "+this.context+" because it has not been declared before"),Nt.call(this.context,"?")>=0?(e.isExistentialEquals=!0,(new E(new p(r),i,{type:"if"})).addElse(new t(i,this.value,"=")).compileToFragments(e)):(n=(new B(this.context.slice(0,-1),r,new t(i,this.value,"="))).compileToFragments(e),e.level<=C?n:this.wrapInBraces(n))},t.prototype.compileSplice=function(e){var t,n,r,i,s,o,u,a,f,l,c,h;return l=this.variable.properties.pop().range,r=l.from,u=l.to,n=l.exclusive,o=this.variable.compile(e),r?(c=this.cacheToCodeFragments(r.cache(e,k)),i=c[0],s=c[1]):i=s="0",u?r instanceof Z&&r.isSimpleNumber()&&u instanceof Z&&u.isSimpleNumber()?(u=u.compile(e)-s,n||(u+=1)):(u=u.compile(e,T)+" - "+s,n||(u+=" + 1")):u="9e9",h=this.value.cache(e,C),a=h[0],f=h[1],t=[].concat(this.makeCode("[].splice.apply("+o+", ["+i+", "+u+"].concat("),a,this.makeCode(")), "),f),e.level>A?this.wrapInBraces(t):t},t}(o),t.Code=l=function(e){function t(e,t,n){this.params=e||[],this.body=t||new u,this.bound=n==="boundfunc"}return Tt(t,e),t.prototype.children=["params","body"],t.prototype.isStatement=function(){return!!this.ctor},t.prototype.jumps=D,t.prototype.makeScope=function(e){return new W(e,this.body,this)},t.prototype.compileNode=function(e){var n,r,o,f,l,c,h,p,d,v,m,g,y,b,w,S,x,N,C,k,L,A,M,_,D,P,H,F,I,q,R,U,z;this.bound&&((F=e.scope.method)!=null?F.bound:void 0)&&(this.context=e.scope.method.context);if(this.bound&&!this.context)return this.context="_this",w=new t([new j(new O(this.context))],new u([this])),r=new a(w,[new O("this")]),r.updateLocationDataIfMissing(this.locationData),r.compileNode(e);e.scope=it(e,"classScope")||this.makeScope(e.scope),e.scope.shared=it(e,"sharedScope"),e.indent+=J,delete e.bare,delete e.isExistentialEquals,d=[],f=[],I=this.params;for(S=0,k=I.length;S<k;S++)p=I[S],e.scope.parameter(p.asReference(e));q=this.params;for(x=0,L=q.length;x<L;x++){p=q[x];if(!p.splat)continue;R=this.params;for(N=0,A=R.length;N<A;N++)h=R[N].name,h["this"]&&(h=h.properties[0].name),h.value&&e.scope.add(h.value,"var",!0);m=new s(new Z(new i(function(){var t,n,r,i;r=this.params,i=[];for(t=0,n=r.length;t<n;t++)h=r[t],i.push(h.asReference(e));return i}.call(this))),new Z(new O("arguments")));break}U=this.params;for(C=0,M=U.length;C<M;C++)p=U[C],p.isComplex()?(y=v=p.asReference(e),p.value&&(y=new B("?",v,p.value)),f.push(new s(new Z(p.name),y,"=",{param:!0}))):(v=p,p.value&&(c=new O(v.name.value+" == null"),y=new s(new Z(p.name),p.value,"="),f.push(new E(c,y)))),m||d.push(v);b=this.body.isEmpty(),m&&f.unshift(m),f.length&&(z=this.body.expressions).unshift.apply(z,f);for(l=P=0,_=d.length;P<_;l=++P)h=d[l],d[l]=h.compileToFragments(e),e.scope.parameter(at(d[l]));g=[],this.eachParamName(function(e,t){return Nt.call(g,e)>=0&&t.error("multiple parameters named '"+e+"'"),g.push(e)}),!b&&!this.noReturn&&this.body.makeReturn(),o="function",this.ctor&&(o+=" "+this.name),o+="(",n=[this.makeCode(o)];for(l=H=0,D=d.length;H<D;l=++H)h=d[l],l&&n.push(this.makeCode(", ")),n.push.apply(n,h);return n.push(this.makeCode(") {")),this.body.isEmpty()||(n=n.concat(this.makeCode("\n"),this.body.compileWithDeclarations(e),this.makeCode("\n"+this.tab))),n.push(this.makeCode("}")),this.ctor?[this.makeCode(this.tab)].concat(Ct.call(n)):this.front||e.level>=T?this.wrapInBraces(n):n},t.prototype.eachParamName=function(e){var t,n,r,i,s;i=this.params,s=[];for(n=0,r=i.length;n<r;n++)t=i[n],s.push(t.eachName(e));return s},t.prototype.traverseChildren=function(e,n){if(e)return t.__super__.traverseChildren.call(this,e,n)},t}(o),t.Param=j=function(e){function t(e,t,n){var r;this.name=e,this.value=t,this.splat=n,(r=e=this.name.unwrapAll().value,Nt.call(z,r)>=0)&&this.name.error('parameter name "'+e+'" is not allowed')}return Tt(t,e),t.prototype.children=["name","value"],t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e,C)},t.prototype.asReference=function(e){var t;return this.reference?this.reference:(t=this.name,t["this"]?(t=t.properties[0].name,t.value.reserved&&(t=new O(e.scope.freeVariable(t.value)))):t.isComplex()&&(t=new O(e.scope.freeVariable("arg"))),t=new Z(t),this.splat&&(t=new V(t)),t.updateLocationDataIfMissing(this.locationData),this.reference=t)},t.prototype.isComplex=function(){return this.name.isComplex()},t.prototype.eachName=function(e,t){var n,r,i,o,u,a;t==null&&(t=this.name),n=function(t){var n;n=t.properties[0].name;if(!n.value.reserved)return e(n.value,n)};if(t instanceof O)return e(t.value,t);if(t instanceof Z)return n(t);a=t.objects;for(o=0,u=a.length;o<u;o++)i=a[o],i instanceof s?this.eachName(e,i.value.unwrap()):i instanceof V?(r=i.name.unwrap(),e(r.value,r)):i instanceof Z?i.isArray()||i.isObject()?this.eachName(e,i.base):i["this"]?n(i):e(i.base.value,i.base):i.error("illegal parameter "+i.compile())},t}(o),t.Splat=V=function(e){function t(e){this.name=e.compile?e:new O(e)}return Tt(t,e),t.prototype.children=["name"],t.prototype.isAssignable=tt,t.prototype.assigns=function(e){return this.name.assigns(e)},t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e)},t.prototype.unwrap=function(){return this.name},t.compileSplattedArray=function(e,n,r){var i,s,o,u,a,f,l,c,h,p;l=-1;while((c=n[++l])&&!(c instanceof t))continue;if(l>=n.length)return[];if(n.length===1)return c=n[0],a=c.compileToFragments(e,C),r?a:[].concat(c.makeCode(""+wt("slice")+".call("),a,c.makeCode(")"));i=n.slice(l);for(f=h=0,p=i.length;h<p;f=++h)c=i[f],o=c.compileToFragments(e,C),i[f]=c instanceof t?[].concat(c.makeCode(""+wt("slice")+".call("),o,c.makeCode(")")):[].concat(c.makeCode("["),o,c.makeCode("]"));return l===0?(c=n[0],u=c.joinFragmentArrays(i.slice(1),", "),i[0].concat(c.makeCode(".concat("),u,c.makeCode(")"))):(s=function(){var t,r,i,s;i=n.slice(0,l),s=[];for(t=0,r=i.length;t<r;t++)c=i[t],s.push(c.compileToFragments(e,C));return s}(),s=n[0].joinFragmentArrays(s,", "),u=n[l].joinFragmentArrays(i,", "),[].concat(n[0].makeCode("["),s,n[l].makeCode("].concat("),u,ct(n).makeCode(")")))},t}(o),t.While=et=function(e){function t(e,t){this.condition=(t!=null?t.invert:void 0)?e.invert():e,this.guard=t!=null?t.guard:void 0}return Tt(t,e),t.prototype.children=["condition","guard","body"],t.prototype.isStatement=tt,t.prototype.makeReturn=function(e){return e?t.__super__.makeReturn.apply(this,arguments):(this.returns=!this.jumps({loop:!0}),this)},t.prototype.addBody=function(e){return this.body=e,this},t.prototype.jumps=function(){var e,t,n,r,i;e=this.body.expressions;if(!e.length)return!1;for(r=0,i=e.length;r<i;r++){n=e[r];if(t=n.jumps({loop:!0}))return t}return!1},t.prototype.compileNode=function(e){var t,n,r,i;return e.indent+=J,i="",n=this.body,n.isEmpty()?n=this.makeCode(""):(this.returns&&(n.makeReturn(r=e.scope.freeVariable("results")),i=""+this.tab+r+" = [];\n"),this.guard&&(n.expressions.length>1?n.expressions.unshift(new E((new F(this.guard)).invert(),new O("continue"))):this.guard&&(n=u.wrap([new E(this.guard,n)]))),n=[].concat(this.makeCode("\n"),n.compileToFragments(e,A),this.makeCode("\n"+this.tab))),t=[].concat(this.makeCode(i+this.tab+"while ("),this.condition.compileToFragments(e,L),this.makeCode(") {"),n,this.makeCode("}")),this.returns&&t.push(this.makeCode("\n"+this.tab+"return "+r+";")),t},t}(o),t.Op=B=function(e){function r(e,n,r,i){if(e==="in")return new S(n,r);if(e==="do")return this.generateDo(n);if(e==="new"){if(n instanceof a&&!n["do"]&&!n.isNew)return n.newInstance();if(n instanceof l&&n.bound||n["do"])n=new F(n)}return this.operator=t[e]||e,this.first=n,this.second=r,this.flip=!!i,this}var t,n;return Tt(r,e),t={"==":"===","!=":"!==",of:"in"},n={"!==":"===","===":"!=="},r.prototype.children=["first","second"],r.prototype.isSimpleNumber=D,r.prototype.isUnary=function(){return!this.second},r.prototype.isComplex=function(){var e;return!this.isUnary()||(e=this.operator)!=="+"&&e!=="-"||this.first.isComplex()},r.prototype.isChainable=function(){var e;return(e=this.operator)==="<"||e===">"||e===">="||e==="<="||e==="==="||e==="!=="},r.prototype.invert=function(){var e,t,i,s,o;if(this.isChainable()&&this.first.isChainable()){e=!0,t=this;while(t&&t.operator)e&&(e=t.operator in n),t=t.first;if(!e)return(new F(this)).invert();t=this;while(t&&t.operator)t.invert=!t.invert,t.operator=n[t.operator],t=t.first;return this}return(s=n[this.operator])?(this.operator=s,this.first.unwrap()instanceof r&&this.first.invert(),this):this.second?(new F(this)).invert():this.operator==="!"&&(i=this.first.unwrap())instanceof r&&((o=i.operator)==="!"||o==="in"||o==="instanceof")?i:new r("!",this)},r.prototype.unfoldSoak=function(e){var t;return((t=this.operator)==="++"||t==="--"||t==="delete")&&bt(e,this,"first")},r.prototype.generateDo=function(e){var t,n,r,i,o,u,f,c;i=[],n=e instanceof s&&(o=e.value.unwrap())instanceof l?o:e,c=n.params||[];for(u=0,f=c.length;u<f;u++)r=c[u],r.value?(i.push(r.value),delete r.value):i.push(r);return t=new a(e,i),t["do"]=!0,t},r.prototype.compileNode=function(e){var t,n,r,i;return n=this.isChainable()&&this.first.isChainable(),n||(this.first.front=this.front),this.operator==="delete"&&e.scope.check(this.first.unwrapAll().value)&&this.error("delete operand may not be argument or var"),((r=this.operator)==="--"||r==="++")&&(i=this.first.unwrapAll().value,Nt.call(z,i)>=0)&&this.error('cannot increment/decrement "'+this.first.unwrapAll().value+'"'),this.isUnary()?this.compileUnary(e):n?this.compileChain(e):this.operator==="?"?this.compileExistence(e):(t=[].concat(this.first.compileToFragments(e,k),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,k)),e.level<=k?t:this.wrapInBraces(t))},r.prototype.compileChain=function(e){var t,n,r,i;return i=this.first.second.cache(e),this.first.second=i[0],r=i[1],n=this.first.compileToFragments(e,k),t=n.concat(this.makeCode(" "+(this.invert?"&&":"||")+" "),r.compileToFragments(e),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,k)),this.wrapInBraces(t)},r.prototype.compileExistence=function(e){var t,n;return this.first.isComplex()?(n=new O(e.scope.freeVariable("ref")),t=new F(new s(n,this.first))):(t=this.first,n=t),(new E(new p(t),n,{type:"if"})).addElse(this.second).compileToFragments(e)},r.prototype.compileUnary=function(e){var t,n,i;n=[],t=this.operator,n.push([this.makeCode(t)]);if(t==="!"&&this.first instanceof p)return this.first.negated=!this.first.negated,this.first.compileToFragments(e);if(e.level>=T)return(new F(this)).compileToFragments(e);i=t==="+"||t==="-",(t==="new"||t==="typeof"||t==="delete"||i&&this.first instanceof r&&this.first.operator===t)&&n.push([this.makeCode(" ")]);if(i&&this.first instanceof r||t==="new"&&this.first.isStatement(e))this.first=new F(this.first);return n.push(this.first.compileToFragments(e,k)),this.flip&&n.reverse(),this.joinFragmentArrays(n,"")},r.prototype.toString=function(e){return r.__super__.toString.call(this,e,this.constructor.name+" "+this.operator)},r}(o),t.In=S=function(e){function t(e,t){this.object=e,this.array=t}return Tt(t,e),t.prototype.children=["object","array"],t.prototype.invert=_,t.prototype.compileNode=function(e){var t,n,r,i,s;if(this.array instanceof Z&&this.array.isArray()){s=this.array.base.objects;for(r=0,i=s.length;r<i;r++){n=s[r];if(n instanceof V){t=!0;break}continue}if(!t)return this.compileOrTest(e)}return this.compileLoopTest(e)},t.prototype.compileOrTest=function(e){var t,n,r,i,s,o,u,a,f,l,c,h;if(this.array.base.objects.length===0)return[this.makeCode(""+!!this.negated)];l=this.object.cache(e,k),o=l[0],s=l[1],c=this.negated?[" !== "," && "]:[" === "," || "],t=c[0],n=c[1],u=[],h=this.array.base.objects;for(r=a=0,f=h.length;a<f;r=++a)i=h[r],r&&u.push(this.makeCode(n)),u=u.concat(r?s:o,this.makeCode(t),i.compileToFragments(e,T));return e.level<k?u:this.wrapInBraces(u)},t.prototype.compileLoopTest=function(e){var t,n,r,i;return i=this.object.cache(e,C),r=i[0],n=i[1],t=[].concat(this.makeCode(wt("indexOf")+".call("),this.array.compileToFragments(e,C),this.makeCode(", "),n,this.makeCode(") "+(this.negated?"< 0":">= 0"))),at(r)===at(n)?t:(t=r.concat(this.makeCode(", "),t),e.level<C?t:this.wrapInBraces(t))},t.prototype.toString=function(e){return t.__super__.toString.call(this,e,this.constructor.name+(this.negated?"!":""))},t}(o),t.Try=G=function(e){function t(e,t,n,r){this.attempt=e,this.errorVariable=t,this.recovery=n,this.ensure=r}return Tt(t,e),t.prototype.children=["attempt","recovery","ensure"],t.prototype.isStatement=tt,t.prototype.jumps=function(e){var t;return this.attempt.jumps(e)||((t=this.recovery)!=null?t.jumps(e):void 0)},t.prototype.makeReturn=function(e){return this.attempt&&(this.attempt=this.attempt.makeReturn(e)),this.recovery&&(this.recovery=this.recovery.makeReturn(e)),this},t.prototype.compileNode=function(e){var t,n,r,i;return e.indent+=J,i=this.attempt.compileToFragments(e,A),t=this.recovery?(r=new O("_error"),this.errorVariable?this.recovery.unshift(new s(this.errorVariable,r)):void 0,[].concat(this.makeCode(" catch ("),r.compileToFragments(e),this.makeCode(") {\n"),this.recovery.compileToFragments(e,A),this.makeCode("\n"+this.tab+"}"))):!this.ensure&&!this.recovery?[this.makeCode(" catch (_error) {}")]:[],n=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(e,A),this.makeCode("\n"+this.tab+"}")):[],[].concat(this.makeCode(""+this.tab+"try {\n"),i,this.makeCode("\n"+this.tab+"}"),t,n)},t}(o),t.Throw=Q=function(e){function t(e){this.expression=e}return Tt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=tt,t.prototype.jumps=D,t.prototype.makeReturn=K,t.prototype.compileNode=function(e){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(e),this.makeCode(";"))},t}(o),t.Existence=p=function(e){function t(e){this.expression=e}return Tt(t,e),t.prototype.children=["expression"],t.prototype.invert=_,t.prototype.compileNode=function(e){var t,n,r,i;return this.expression.front=this.front,r=this.expression.compile(e,k),g.test(r)&&!e.scope.check(r)?(i=this.negated?["===","||"]:["!==","&&"],t=i[0],n=i[1],r="typeof "+r+" "+t+' "undefined" '+n+" "+r+" "+t+" null"):r=""+r+" "+(this.negated?"==":"!=")+" null",[this.makeCode(e.level<=N?r:"("+r+")")]},t}(o),t.Parens=F=function(e){function t(e){this.body=e}return Tt(t,e),t.prototype.children=["body"],t.prototype.unwrap=function(){return this.body},t.prototype.isComplex=function(){return this.body.isComplex()},t.prototype.compileNode=function(e){var t,n,r;return n=this.body.unwrap(),n instanceof Z&&n.isAtomic()?(n.front=this.front,n.compileToFragments(e)):(r=n.compileToFragments(e,L),t=e.level<k&&(n instanceof B||n instanceof a||n instanceof v&&n.returns),t?r:this.wrapInBraces(r))},t}(o),t.For=v=function(e){function t(e,t){var n;this.source=t.source,this.guard=t.guard,this.step=t.step,this.name=t.name,this.index=t.index,this.body=u.wrap([e]),this.own=!!t.own,this.object=!!t.object,this.object&&(n=[this.index,this.name],this.name=n[0],this.index=n[1]),this.index instanceof Z&&this.index.error("index cannot be a pattern matching expression"),this.range=this.source instanceof Z&&this.source.base instanceof q&&!this.source.properties.length,this.pattern=this.name instanceof Z,this.range&&this.index&&this.index.error("indexes do not apply to range loops"),this.range&&this.pattern&&this.name.error("cannot pattern match over range loops"),this.own&&!this.object&&this.name.error("cannot use own with for-in"),this.returns=!1}return Tt(t,e),t.prototype.children=["body","source","guard","step"],t.prototype.compileNode=function(e){var t,n,r,i,o,a,f,l,c,h,p,d,v,m,y,b,w,S,x,T,N,k,L,M,_,D,H,B,j,I,q,U,z,W;return t=u.wrap([this.body]),S=(z=ct(t.expressions))!=null?z.jumps():void 0,S&&S instanceof R&&(this.returns=!1),H=this.range?this.source.base:this.source,D=e.scope,T=this.name&&this.name.compile(e,C),m=this.index&&this.index.compile(e,C),T&&!this.pattern&&D.find(T),m&&D.find(m),this.returns&&(_=D.freeVariable("results")),y=this.object&&m||D.freeVariable("i"),b=this.range&&T||m||y,w=b!==y?""+b+" = ":"",this.step&&!this.range&&(W=this.cacheToCodeFragments(this.step.cache(e,C)),B=W[0],I=W[1],j=I.match(P)),this.pattern&&(T=y),U="",p="",f="",d=this.tab+J,this.range?h=H.compileToFragments(pt(e,{index:y,name:T,step:this.step})):(q=this.source.compile(e,C),(T||this.own)&&!g.test(q)&&(f+=""+this.tab+(k=D.freeVariable("ref"))+" = "+q+";\n",q=k),T&&!this.pattern&&(N=""+T+" = "+q+"["+b+"]"),this.object||(B!==I&&(f+=""+this.tab+B+";\n"),this.step&&j&&(c=vt(j[0])<0)||(x=D.freeVariable("len")),o=""+w+y+" = 0, "+x+" = "+q+".length",a=""+w+y+" = "+q+".length - 1",r=""+y+" < "+x,i=""+y+" >= 0",this.step?(j?c&&(r=i,o=a):(r=""+I+" > 0 ? "+r+" : "+i,o="("+I+" > 0 ? ("+o+") : "+a+")"),v=""+y+" += "+I):v=""+(b!==y?"++"+y:""+y+"++"),h=[this.makeCode(""+o+"; "+r+"; "+w+v)])),this.returns&&(L=""+this.tab+_+" = [];\n",M="\n"+this.tab+"return "+_+";",t.makeReturn(_)),this.guard&&(t.expressions.length>1?t.expressions.unshift(new E((new F(this.guard)).invert(),new O("continue"))):this.guard&&(t=u.wrap([new E(this.guard,t)]))),this.pattern&&t.expressions.unshift(new s(this.name,new O(""+q+"["+b+"]"))),l=[].concat(this.makeCode(f),this.pluckDirectCall(e,t)),N&&(U="\n"+d+N+";"),this.object&&(h=[this.makeCode(""+b+" in "+q)],this.own&&(p="\n"+d+"if (!"+wt("hasProp")+".call("+q+", "+b+")) continue;")),n=t.compileToFragments(pt(e,{indent:d}),A),n&&n.length>0&&(n=[].concat(this.makeCode("\n"),n,this.makeCode("\n"))),[].concat(l,this.makeCode(""+(L||"")+this.tab+"for ("),h,this.makeCode(") {"+p+U),n,this.makeCode(""+this.tab+"}"+(M||"")))},t.prototype.pluckDirectCall=function(e,t){var n,r,i,o,u,f,c,h,p,d,v,m,g,y,b,w;r=[],d=t.expressions;for(u=h=0,p=d.length;h<p;u=++h){i=d[u],i=i.unwrapAll();if(!(i instanceof a))continue;c=(v=i.variable)!=null?v.unwrapAll():void 0;if(!(c instanceof l||c instanceof Z&&((m=c.base)!=null?m.unwrapAll():void 0)instanceof l&&c.properties.length===1&&((g=(y=c.properties[0].name)!=null?y.value:void 0)==="call"||g==="apply")))continue;o=((b=c.base)!=null?b.unwrapAll():void 0)||c,f=new O(e.scope.freeVariable("fn")),n=new Z(f),c.base&&(w=[n,c],c.base=w[0],n=w[1]),t.expressions[u]=new a(n,i.args),r=r.concat(this.makeCode(this.tab),(new s(f,o)).compileToFragments(e,A),this.makeCode(";\n"))}return r},t}(et),t.Switch=$=function(e){function t(e,t,n){this.subject=e,this.cases=t,this.otherwise=n}return Tt(t,e),t.prototype.children=["subject","cases","otherwise"],t.prototype.isStatement=tt,t.prototype.jumps=function(e){var t,n,r,i,s,o,u,a;e==null&&(e={block:!0}),o=this.cases;for(i=0,s=o.length;i<s;i++){u=o[i],n=u[0],t=u[1];if(r=t.jumps(e))return r}return(a=this.otherwise)!=null?a.jumps(e):void 0},t.prototype.makeReturn=function(e){var t,n,r,i,s;i=this.cases;for(n=0,r=i.length;n<r;n++)t=i[n],t[1].makeReturn(e);return e&&(this.otherwise||(this.otherwise=new u([new O("void 0")]))),(s=this.otherwise)!=null&&s.makeReturn(e),this},t.prototype.compileNode=function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m;a=e.indent+J,f=e.indent=a+J,o=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(e,L):this.makeCode("false"),this.makeCode(") {\n")),d=this.cases;for(u=l=0,h=d.length;l<h;u=++l){v=d[u],i=v[0],t=v[1],m=ut([i]);for(c=0,p=m.length;c<p;c++)r=m[c],this.subject||(r=r.invert()),o=o.concat(this.makeCode(a+"case "),r.compileToFragments(e,L),this.makeCode(":\n"));(n=t.compileToFragments(e,A)).length>0&&(o=o.concat(n,this.makeCode("\n")));if(u===this.cases.length-1&&!this.otherwise)break;s=this.lastNonComment(t.expressions);if(s instanceof R||s instanceof O&&s.jumps()&&s.value!=="debugger")continue;o.push(r.makeCode(f+"break;\n"))}return this.otherwise&&this.otherwise.expressions.length&&o.push.apply(o,[this.makeCode(a+"default:\n")].concat(Ct.call(this.otherwise.compileToFragments(e,A)),[this.makeCode("\n")])),o.push(this.makeCode(this.tab+"}")),o},t}(o),t.If=E=function(e){function t(e,t,n){this.body=t,n==null&&(n={}),this.condition=n.type==="unless"?e.invert():e,this.elseBody=null,this.isChain=!1,this.soak=n.soak}return Tt(t,e),t.prototype.children=["condition","body","elseBody"],t.prototype.bodyNode=function(){var e;return(e=this.body)!=null?e.unwrap():void 0},t.prototype.elseBodyNode=function(){var e;return(e=this.elseBody)!=null?e.unwrap():void 0},t.prototype.addElse=function(e){return this.isChain?this.elseBodyNode().addElse(e):(this.isChain=e instanceof t,this.elseBody=this.ensureBlock(e),this.elseBody.updateLocationDataIfMissing(e.locationData)),this},t.prototype.isStatement=function(e){var t;return(e!=null?e.level:void 0)===A||this.bodyNode().isStatement(e)||((t=this.elseBodyNode())!=null?t.isStatement(e):void 0)},t.prototype.jumps=function(e){var t;return this.body.jumps(e)||((t=this.elseBody)!=null?t.jumps(e):void 0)},t.prototype.compileNode=function(e){return this.isStatement(e)?this.compileStatement(e):this.compileExpression(e)},t.prototype.makeReturn=function(e){return e&&(this.elseBody||(this.elseBody=new u([new O("void 0")]))),this.body&&(this.body=new u([this.body.makeReturn(e)])),this.elseBody&&(this.elseBody=new u([this.elseBody.makeReturn(e)])),this},t.prototype.ensureBlock=function(e){return e instanceof u?e:new u([e])},t.prototype.compileStatement=function(e){var n,r,i,s,o,u,a;return i=it(e,"chainChild"),o=it(e,"isExistentialEquals"),o?(new t(this.condition.invert(),this.elseBodyNode(),{type:"if"})).compileToFragments(e):(a=e.indent+J,s=this.condition.compileToFragments(e,L),r=this.ensureBlock(this.body).compileToFragments(pt(e,{indent:a})),u=[].concat(this.makeCode("if ("),s,this.makeCode(") {\n"),r,this.makeCode("\n"+this.tab+"}")),i||u.unshift(this.makeCode(this.tab)),this.elseBody?(n=u.concat(this.makeCode(" else ")),this.isChain?(e.chainChild=!0,n=n.concat(this.elseBody.unwrap().compileToFragments(e,A))):n=n.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(pt(e,{indent:a}),A),this.makeCode("\n"+this.tab+"}")),n):u)},t.prototype.compileExpression=function(e){var t,n,r,i;return r=this.condition.compileToFragments(e,N),n=this.bodyNode().compileToFragments(e,C),t=this.elseBodyNode()?this.elseBodyNode().compileToFragments(e,C):[this.makeCode("void 0")],i=r.concat(this.makeCode(" ? "),n,this.makeCode(" : "),t),e.level>=N?this.wrapInBraces(i):i},t.prototype.unfoldSoak=function(){return this.soak&&this},t}(o),Y={"extends":function(){return"function(child, parent) { for (var key in parent) { if ("+wt("hasProp")+".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"},bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}},A=1,L=2,C=3,N=4,k=5,T=6,J="  ",y="[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*",g=RegExp("^"+y+"$"),U=/^[+-]?\d+$/,m=/^[+-]?0x[\da-f]+/i,P=/^[+-]?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)$/i,M=RegExp("^("+y+")(\\.prototype)?(?:\\.("+y+")|\\[(\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*')\\]|\\[(0x[\\da-fA-F]+|\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\])$"),w=/^['"]/,b=/^\//,wt=function(e){var t;return t="__"+e,W.root.assign(t,Y[e]()),t},dt=function(e,t){return e=e.replace(/\n/g,"$&"+t),e.replace(/\s+$/,"")},vt=function(e){return e==null?0:e.match(m)?parseInt(e,16):parseFloat(e)},ft=function(e){return e instanceof O&&e.value==="arguments"&&!e.asKey},lt=function(e){return e instanceof O&&e.value==="this"&&!e.asKey||e instanceof l&&e.bound||e instanceof a&&e.isSuper},bt=function(e,t,n){var r;if(!(r=t[n].unfoldSoak(e)))return;return t[n]=r.body,r.body=new Z(t),r}}),ace.define("ace/mode/coffee/coffee-script",["require","exports","module","ace/mode/coffee/lexer","ace/mode/coffee/parser","ace/mode/coffee/nodes"],function(e,t,n){var r=e("./lexer").Lexer,i=e("./parser"),s=new r;i.lexer={lex:function(){var e,t;return t=this.tokens[this.pos++],t?(e=t[0],this.yytext=t[1],this.yylloc=t[2],this.yylineno=this.yylloc.first_line):e="",e},setInput:function(e){return this.tokens=e,this.pos=0},upcomingInput:function(){return""}},i.yy=e("./nodes"),t.parse=function(e){return i.parse(s.tokenize(e))}}),ace.define("ace/mode/coffee_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/coffee/coffee-script"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("../mode/coffee/coffee-script");window.addEventListener=function(){};var o=t.Worker=function(e){i.call(this,e),this.setTimeout(250)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{s.parse(e).compile()}catch(n){var r=n.location;r&&t.push({row:r.first_line,column:r.first_column,endRow:r.last_line,endColumn:r.last_column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-css.js b/js/ace/worker-css.js
new file mode 100644
index 0000000..87516a1
--- /dev/null
+++ b/js/ace/worker-css.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/css/csslint",["require","exports","module"],function(require,exports,module){function objectToString(e){return Object.prototype.toString.call(e)}function clone(e,t,n,r){function u(e,n){if(e===null)return null;if(n==0)return e;var a;if(typeof e!="object")return e;if(util.isArray(e))a=[];else if(util.isRegExp(e))a=new RegExp(e.source,util.getRegExpFlags(e)),e.lastIndex&&(a.lastIndex=e.lastIndex);else if(util.isDate(e))a=new Date(e.getTime());else{if(o&&Buffer.isBuffer(e))return a=new Buffer(e.length),e.copy(a),a;typeof r=="undefined"?a=Object.create(Object.getPrototypeOf(e)):a=Object.create(r)}if(t){var f=i.indexOf(e);if(f!=-1)return s[f];i.push(e),s.push(a)}for(var l in e)a[l]=u(e[l],n-1);return a}var i=[],s=[],o=typeof Buffer!="undefined";return typeof t=="undefined"&&(t=!0),typeof n=="undefined"&&(n=Infinity),u(e,n)}function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this.ruleset=t}var parserlib={};(function(){function e(){this._listeners={}}function t(e){this._input=e.replace(/\n\r?/g,"\n"),this._line=1,this._col=1,this._cursor=0}function n(e,t,n){this.col=n,this.line=t,this.message=e}function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null,this._tokenData=n,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}e.prototype={constructor:e,addListener:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)},fire:function(e){typeof e=="string"&&(e={type:e}),typeof e.target!="undefined"&&(e.target=this);if(typeof e.type=="undefined")throw new Error("Event object missing 'type' property.");if(this._listeners[e.type]){var t=this._listeners[e.type].concat();for(var n=0,r=t.length;n<r;n++)t[n].call(this,e)}},removeListener:function(e,t){if(this._listeners[e]){var n=this._listeners[e];for(var r=0,i=n.length;r<i;r++)if(n[r]===t){n.splice(r,1);break}}}},t.prototype={constructor:t,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(e){var t=null;return e=typeof e=="undefined"?1:e,this._cursor<this._input.length&&(t=this._input.charAt(this._cursor+e-1)),t},read:function(){var e=null;return this._cursor<this._input.length&&(this._input.charAt(this._cursor)=="\n"?(this._line++,this._col=1):this._col++,e=this._input.charAt(this._cursor++)),e},mark:function(){this._bookmark={cursor:this._cursor,line:this._line,col:this._col}},reset:function(){this._bookmark&&(this._cursor=this._bookmark.cursor,this._line=this._bookmark.line,this._col=this._bookmark.col,delete this._bookmark)},readTo:function(e){var t="",n;while(t.length<e.length||t.lastIndexOf(e)!=t.length-e.length){n=this.read();if(!n)throw new Error('Expected "'+e+'" at line '+this._line+", col "+this._col+".");t+=n}return t},readWhile:function(e){var t="",n=this.read();while(n!==null&&e(n))t+=n,n=this.read();return t},readMatch:function(e){var t=this._input.substring(this._cursor),n=null;return typeof e=="string"?t.indexOf(e)===0&&(n=this.readCount(e.length)):e instanceof RegExp&&e.test(t)&&(n=this.readCount(RegExp.lastMatch.length)),n},readCount:function(e){var t="";while(e--)t+=this.read();return t}},n.prototype=new Error,r.fromToken=function(e){return new r(e.value,e.startLine,e.startCol)},r.prototype={constructor:r,valueOf:function(){return this.text},toString:function(){return this.text}},i.createTokenData=function(e){var t=[],n={},r=e.concat([]),i=0,s=r.length+1;r.UNKNOWN=-1,r.unshift({name:"EOF"});for(;i<s;i++)t.push(r[i].name),r[r[i].name]=i,r[i].text&&(n[r[i].text]=i);return r.name=function(e){return t[e]},r.type=function(e){return n[e]},r},i.prototype={constructor:i,match:function(e,t){e instanceof Array||(e=[e]);var n=this.get(t),r=0,i=e.length;while(r<i)if(n==e[r++])return!0;return this.unget(),!1},mustMatch:function(e,t){var r;e instanceof Array||(e=[e]);if(!this.match.apply(this,arguments))throw r=this.LT(1),new n("Expected "+this._tokenData[e[0]].name+" at line "+r.startLine+", col "+r.startCol+".",r.startLine,r.startCol)},advance:function(e,t){while(this.LA(0)!==0&&!this.match(e,t))this.get();return this.LA(0)},get:function(e){var t=this._tokenData,n=this._reader,r,i=0,s=t.length,o=!1,u,a;if(this._lt.length&&this._ltIndex>=0&&this._ltIndex<this._lt.length){i++,this._token=this._lt[this._ltIndex++],a=t[this._token.type];while(a.channel!==undefined&&e!==a.channel&&this._ltIndex<this._lt.length)this._token=this._lt[this._ltIndex++],a=t[this._token.type],i++;if((a.channel===undefined||e===a.channel)&&this._ltIndex<=this._lt.length)return this._ltIndexCache.push(i),this._token.type}return u=this._getToken(),u.type>-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error("Too much lookahead.");while(t)n=this.get(),t--;while(t<e)this.unget(),t++}else if(e<0){if(!this._lt[this._ltIndex+e])throw new Error("Too much lookbehind.");n=this._lt[this._ltIndex+e].type}else n=this._token.type;return n},LT:function(e){return this.LA(e),this._lt[this._ltIndex+e-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(e){return e<0||e>this._tokenData.length?"UNKNOWN_TOKEN":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error("Too much lookahead.");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type="unknown",/^\s+$/.test(e)?this.type="descendant":e==">"?this.type="child":e=="+"?this.type="adjacent-sibling":e=="~"&&(this.type="sibling")}function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:"")+")",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:"")+(t&&n.length>0?" and ":"")+n.join(" and "),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type="unknown";var temp;if(/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){this.type="dimension",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case"em":case"rem":case"ex":case"px":case"cm":case"mm":case"in":case"pt":case"pc":case"ch":case"vh":case"vw":case"vmax":case"vmin":this.type="length";break;case"deg":case"rad":case"grad":this.type="angle";break;case"ms":case"s":this.type="time";break;case"hz":case"khz":this.type="frequency";break;case"dpi":case"dpcm":this.type="resolution"}}else/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?\d+)$/i.test(text)?(this.type="integer",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)$/i.test(text)?(this.type="number",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type="color",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\(["']?([^\)"']+)["']?\)/i.test(text)?(this.type="uri",this.uri=RegExp.$1):/^([^\(]+)\(/i.test(text)?(this.type="function",this.name=RegExp.$1,this.value=text):/^["'][^"']*["']/.test(text)?(this.type="string",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type="color",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\,\/]$/.test(text)?(this.type="operator",this.value=text):/^[a-z\-_\u0080-\uFFFF][a-z0-9\-_\u0080-\uFFFF]*$/i.test(text)&&(this.type="identifier",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\d/.test(e)}function isWhitespace(e){return e!==null&&/\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",activeBorder:"Active window border.",activecaption:"Active window caption.",appworkspace:"Background color of multiple document interface.",background:"Desktop background.",buttonface:"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonhighlight:"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonshadow:"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttontext:"Text on push buttons.",captiontext:"Text in caption, size box, and scrollbar arrow box.",graytext:"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",greytext:"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.",highlight:"Item(s) selected in a control.",highlighttext:"Text of item(s) selected in a control.",inactiveborder:"Inactive window border.",inactivecaption:"Inactive window caption.",inactivecaptiontext:"Color of text in an inactive caption.",infobackground:"Background color for tooltip controls.",infotext:"Text color for tooltip controls.",menu:"Menu background.",menutext:"Text in menus.",scrollbar:"Scroll bar gray area.",threeddarkshadow:"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedface:"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedhighlight:"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedlightshadow:"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedshadow:"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",window:"Window background.",windowframe:"Window frame.",windowtext:"Text in windows."};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire("startstylesheet"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError("Unknown @ rule.",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:"error",error:null,message:"Unknown @ rule: "+e.LT(0).value+".",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError("@charset not allowed here.",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError("@import not allowed here.",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError("@namespace not allowed here.",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:"error",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire("endstylesheet")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:"charset",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/^(?:url\()?["']?([^"']+?)["']?\)?$/,"$1"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"import",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"namespace",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:"startmedia",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(e.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(e.peek()==Tokens.VIEWPORT_SYM)this._viewport();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:"endmedia",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!="only"&&n!="not"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!="and"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()==="auto"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:"startpage",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:"endpage",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:"startpagemargin",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endpagemargin",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startfontface",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endfontface",line:t,col:n})},_viewport:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.VIEWPORT_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startviewport",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endviewport",line:t,col:n})},_operator:function(e){var t=this._tokenStream,n=null;if(t.match([Tokens.SLASH,Tokens.COMMA])||e&&t.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))n=t.token(),this._readWhitespace();return n?PropertyValuePart.fromToken(n):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)=="_"&&this.options.underscoreHack&&(n="_",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:"error",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:"startrule",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endrule",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r="",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s<o&&u===null)u=i[s++].call(this);if(u===null){if(r==="")return null;break}s=0,n.push(u),r+=u.toString(),u=null}return r!==""?new SelectorPart(t,n,r,f,l):null},_type_selector:function(){var e=this._tokenStream,t=this._namespace_prefix(),n=this._element_name();return n?(t&&(n.text=t+n.text,n.col-=t.length),n):(t&&(e.unget(),t.length>1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart("."+t.value,"class",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,"elementName",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t="";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+="|";return t.length?t:null},_universal:function(){var e=this._tokenStream,t="",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+="*"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+"]","attribute",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=":",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=":"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,"pseudo",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=")"),t},_expression:function(){var e=this._tokenStream,t="";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r="",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,"not",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r<i&&n===null)n=t[r].call(this),r++;return n===null&&this._unexpectedToken(e.LT(1)),n.type=="elementName"?a=new SelectorPart(n,[],n.toString(),o,u):a=new SelectorPart(null,[n],n.toString(),o,u),a},_declaration:function(){var e=this._tokenStream,t=null,n=null,r=null,i=null,s=null,o="";t=this._property();if(t!==null){e.mustMatch(Tokens.COLON),this._readWhitespace(),n=this._expr(),(!n||n.length===0)&&this._unexpectedToken(e.LT(1)),r=this._prio(),o=t.toString();if(this.options.starHack&&t.hack=="*"||this.options.underscoreHack&&t.hack=="_")o=t.text;try{this._validateProperty(o,n)}catch(u){s=u}return this.fire({type:"property",property:t,value:n,important:r,line:t.line,col:t.col,invalid:s}),!0}return!1},_prio:function(){var e=this._tokenStream,t=e.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),t},_expr:function(e){var t=this._tokenStream,n=[],r=null,i=null;r=this._term(e);if(r!==null){n.push(r);do{i=this._operator(e),i&&n.push(i),r=this._term(e);if(r===null)break;n.push(r)}while(!0)}return n.length>0?new PropertyValue(n,n[0].line,n[0].col):null},_term:function(e){var t=this._tokenStream,n=null,r=null,i=null,s,o,u;return n=this._unary_operator(),n!==null&&(o=t.token().startLine,u=t.token().startCol),t.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(r=this._ie_function(),n===null&&(o=t.token().startLine,u=t.token().startCol)):e&&t.match([Tokens.LPAREN,Tokens.LBRACE,Tokens.LBRACKET])?(s=t.token(),i=s.endChar,r=s.value+this._expr(e).text,n===null&&(o=t.token().startLine,u=t.token().startCol),t.mustMatch(Tokens.type(i)),r+=i,this._readWhitespace()):t.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(r=t.token().value,n===null&&(o=t.token().startLine,u=t.token().startCol),this._readWhitespace()):(s=this._hexcolor(),s===null?(n===null&&(o=t.LT(1).startLine,u=t.LT(1).startCol),r===null&&(t.LA(3)==Tokens.EQUALS&&this.options.ieFilters?r=this._ie_function():r=this._function())):(r=s.value,n===null&&(o=s.startLine,u=s.startCol))),r!==null?new PropertyValuePart(n!==null?n+r:r,o,u):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(!0),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError("Expected a hex color but found '"+n+"' at line "+t.startLine+", col "+t.startCol+".",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i="";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\-([^\-]+)\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:"startkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:"endkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:"startkeyframerule",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endkeyframerule",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:"error",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t="";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError("Unexpected token '"+e.value+"' at line "+e.startLine+", col "+e.startCol+".",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+="}",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={"align-items":"flex-start | flex-end | center | baseline | stretch","align-content":"flex-start | flex-end | center | space-between | space-around | stretch","align-self":"auto | flex-start | flex-end | center | baseline | stretch","-webkit-align-items":"flex-start | flex-end | center | baseline | stretch","-webkit-align-content":"flex-start | flex-end | center | space-between | space-around | stretch","-webkit-align-self":"auto | flex-start | flex-end | center | baseline | stretch","alignment-adjust":"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>","alignment-baseline":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",animation:1,"animation-delay":{multi:"<time>",comma:!0},"animation-direction":{multi:"normal | alternate",comma:!0},"animation-duration":{multi:"<time>",comma:!0},"animation-fill-mode":{multi:"none | forwards | backwards | both",comma:!0},"animation-iteration-count":{multi:"<number> | infinite",comma:!0},"animation-name":{multi:"none | <ident>",comma:!0},"animation-play-state":{multi:"running | paused",comma:!0},"animation-timing-function":1,"-moz-animation-delay":{multi:"<time>",comma:!0},"-moz-animation-direction":{multi:"normal | alternate",comma:!0},"-moz-animation-duration":{multi:"<time>",comma:!0},"-moz-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-moz-animation-name":{multi:"none | <ident>",comma:!0},"-moz-animation-play-state":{multi:"running | paused",comma:!0},"-ms-animation-delay":{multi:"<time>",comma:!0},"-ms-animation-direction":{multi:"normal | alternate",comma:!0},"-ms-animation-duration":{multi:"<time>",comma:!0},"-ms-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-ms-animation-name":{multi:"none | <ident>",comma:!0},"-ms-animation-play-state":{multi:"running | paused",comma:!0},"-webkit-animation-delay":{multi:"<time>",comma:!0},"-webkit-animation-direction":{multi:"normal | alternate",comma:!0},"-webkit-animation-duration":{multi:"<time>",comma:!0},"-webkit-animation-fill-mode":{multi:"none | forwards | backwards | both",comma:!0},"-webkit-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-webkit-animation-name":{multi:"none | <ident>",comma:!0},"-webkit-animation-play-state":{multi:"running | paused",comma:!0},"-o-animation-delay":{multi:"<time>",comma:!0},"-o-animation-direction":{multi:"normal | alternate",comma:!0},"-o-animation-duration":{multi:"<time>",comma:!0},"-o-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-o-animation-name":{multi:"none | <ident>",comma:!0},"-o-animation-play-state":{multi:"running | paused",comma:!0},appearance:"icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit",azimuth:function(e){var t="<angle> | leftwards | rightwards | inherit",n="left-side | far-left | left | center-left | center | center-right | right | far-right | right-side",r=!1,i=!1,s;ValidationTypes.isAny(e,t)||(ValidationTypes.isAny(e,"behind")&&(r=!0,i=!0),ValidationTypes.isAny(e,n)&&(i=!0,r||ValidationTypes.isAny(e,"behind")));if(e.hasNext())throw s=e.next(),i?new ValidationError("Expected end of value but found '"+s+"'.",s.line,s.col):new ValidationError("Expected (<'azimuth'>) but found '"+s+"'.",s.line,s.col)},"backface-visibility":"visible | hidden",background:1,"background-attachment":{multi:"<attachment>",comma:!0},"background-clip":{multi:"<box>",comma:!0},"background-color":"<color> | inherit","background-image":{multi:"<bg-image>",comma:!0},"background-origin":{multi:"<box>",comma:!0},"background-position":{multi:"<bg-position>",comma:!0},"background-repeat":{multi:"<repeat-style>"},"background-size":{multi:"<bg-size>",comma:!0},"baseline-shift":"baseline | sub | super | <percentage> | <length>",behavior:1,binding:1,bleed:"<length>","bookmark-label":"<content> | <attr> | <string>","bookmark-level":"none | <integer>","bookmark-state":"open | closed","bookmark-target":"none | <uri> | <attr>",border:"<border-width> || <border-style> || <color>","border-bottom":"<border-width> || <border-style> || <color>","border-bottom-color":"<color> | inherit","border-bottom-left-radius":"<x-one-radius>","border-bottom-right-radius":"<x-one-radius>","border-bottom-style":"<border-style>","border-bottom-width":"<border-width>","border-collapse":"collapse | separate | inherit","border-color":{multi:"<color> | inherit",max:4},"border-image":1,"border-image-outset":{multi:"<length> | <number>",max:4},"border-image-repeat":{multi:"stretch | repeat | round",max:2},"border-image-slice":function(e){var t=!1,n="<number> | <percentage>",r=!1,i=0,s=4,o;ValidationTypes.isAny(e,"fill")&&(r=!0,t=!0);while(e.hasNext()&&i<s){t=ValidationTypes.isAny(e,n);if(!t)break;i++}r?t=!0:ValidationTypes.isAny(e,"fill");if(e.hasNext())throw o=e.next(),t?new ValidationError("Expected end of value but found '"+o+"'.",o.line,o.col):new ValidationError("Expected ([<number> | <percentage>]{1,4} && fill?) but found '"+o+"'.",o.line,o.col)},"border-image-source":"<image> | none","border-image-width":{multi:"<length> | <percentage> | <number> | auto",max:4},"border-left":"<border-width> || <border-style> || <color>","border-left-color":"<color> | inherit","border-left-style":"<border-style>","border-left-width":"<border-width>","border-radius":function(e){var t=!1,n="<length> | <percentage> | inherit",r=!1,i=!1,s=0,o=8,u;while(e.hasNext()&&s<o){t=ValidationTypes.isAny(e,n);if(!t){if(!(e.peek()=="/"&&s>0&&!r))break;r=!0,o=s+5,e.next()}s++}if(e.hasNext())throw u=e.next(),t?new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col):new ValidationError("Expected (<'border-radius'>) but found '"+u+"'.",u.line,u.col)},"border-right":"<border-width> || <border-style> || <color>","border-right-color":"<color> | inherit","border-right-style":"<border-style>","border-right-width":"<border-width>","border-spacing":{multi:"<length> | inherit",max:2},"border-style":{multi:"<border-style>",max:4},"border-top":"<border-width> || <border-style> || <color>","border-top-color":"<color> | inherit","border-top-left-radius":"<x-one-radius>","border-top-right-radius":"<x-one-radius>","border-top-style":"<border-style>","border-top-width":"<border-width>","border-width":{multi:"<border-width>",max:4},bottom:"<margin-width> | inherit","-moz-box-align":"start | end | center | baseline | stretch","-moz-box-decoration-break":"slice |clone","-moz-box-direction":"normal | reverse | inherit","-moz-box-flex":"<number>","-moz-box-flex-group":"<integer>","-moz-box-lines":"single | multiple","-moz-box-ordinal-group":"<integer>","-moz-box-orient":"horizontal | vertical | inline-axis | block-axis | inherit","-moz-box-pack":"start | end | center | justify","-webkit-box-align":"start | end | center | baseline | stretch","-webkit-box-decoration-break":"slice |clone","-webkit-box-direction":"normal | reverse | inherit","-webkit-box-flex":"<number>","-webkit-box-flex-group":"<integer>","-webkit-box-lines":"single | multiple","-webkit-box-ordinal-group":"<integer>","-webkit-box-orient":"horizontal | vertical | inline-axis | block-axis | inherit","-webkit-box-pack":"start | end | center | justify","box-shadow":function(e){var t=!1,n;if(!ValidationTypes.isAny(e,"none"))Validation.multiProperty("<shadow>",e,!0,Infinity);else if(e.hasNext())throw n=e.next(),new ValidationError("Expected end of value but found '"+n+"'.",n.line,n.col)},"box-sizing":"content-box | border-box | inherit","break-after":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-before":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-inside":"auto | avoid | avoid-page | avoid-column","caption-side":"top | bottom | inherit",clear:"none | right | left | both | inherit",clip:1,color:"<color> | inherit","color-profile":1,"column-count":"<integer> | auto","column-fill":"auto | balance","column-gap":"<length> | normal","column-rule":"<border-width> || <border-style> || <color>","column-rule-color":"<color>","column-rule-style":"<border-style>","column-rule-width":"<border-width>","column-span":"none | all","column-width":"<length> | auto",columns:1,content:1,"counter-increment":1,"counter-reset":1,crop:"<shape> | auto",cue:"cue-after | cue-before | inherit","cue-after":1,"cue-before":1,cursor:1,direction:"ltr | rtl | inherit",display:"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | grid | inline-grid | none | inherit | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box | -ms-flexbox | -ms-inline-flexbox | flex | -webkit-flex | inline-flex | -webkit-inline-flex","dominant-baseline":1,"drop-initial-after-adjust":"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>","drop-initial-after-align":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-before-adjust":"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>","drop-initial-before-align":"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-size":"auto | line | <length> | <percentage>","drop-initial-value":"initial | <integer>",elevation:"<angle> | below | level | above | higher | lower | inherit","empty-cells":"show | hide | inherit",filter:1,fit:"fill | hidden | meet | slice","fit-position":1,flex:"<flex>","flex-basis":"<width>","flex-direction":"row | row-reverse | column | column-reverse","flex-flow":"<flex-direction> || <flex-wrap>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap | wrap | wrap-reverse","-webkit-flex":"<flex>","-webkit-flex-basis":"<width>","-webkit-flex-direction":"row | row-reverse | column | column-reverse","-webkit-flex-flow":"<flex-direction> || <flex-wrap>","-webkit-flex-grow":"<number>","-webkit-flex-shrink":"<number>","-webkit-flex-wrap":"nowrap | wrap | wrap-reverse","-ms-flex":"<flex>","-ms-flex-align":"start | end | center | stretch | baseline","-ms-flex-direction":"row | row-reverse | column | column-reverse | inherit","-ms-flex-order":"<number>","-ms-flex-pack":"start | end | center | justify","-ms-flex-wrap":"nowrap | wrap | wrap-reverse","float":"left | right | none | inherit","float-offset":1,font:1,"font-family":1,"font-size":"<absolute-size> | <relative-size> | <length> | <percentage> | inherit","font-size-adjust":"<number> | none | inherit","font-stretch":"normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit","font-style":"normal | italic | oblique | inherit","font-variant":"normal | small-caps | inherit","font-weight":"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit","grid-cell-stacking":"columns | rows | layer","grid-column":1,"grid-columns":1,"grid-column-align":"start | end | center | stretch","grid-column-sizing":1,"grid-column-span":"<integer>","grid-flow":"none | rows | columns","grid-layer":"<integer>","grid-row":1,"grid-rows":1,"grid-row-align":"start | end | center | stretch","grid-row-span":"<integer>","grid-row-sizing":1,"hanging-punctuation":1,height:"<margin-width> | <content-sizing> | inherit","hyphenate-after":"<integer> | auto","hyphenate-before":"<integer> | auto","hyphenate-character":"<string> | auto","hyphenate-lines":"no-limit | <integer>","hyphenate-resource":1,hyphens:"none | manual | auto",icon:1,"image-orientation":"angle | auto","image-rendering":1,"image-resolution":1,"inline-box-align":"initial | last | <integer>","justify-content":"flex-start | flex-end | center | space-between | space-around","-webkit-justify-content":"flex-start | flex-end | center | space-between | space-around",left:"<margin-width> | inherit","letter-spacing":"<length> | normal | inherit","line-height":"<number> | <length> | <percentage> | normal | inherit","line-break":"auto | loose | normal | strict","line-stacking":1,"line-stacking-ruby":"exclude-ruby | include-ruby","line-stacking-shift":"consider-shifts | disregard-shifts","line-stacking-strategy":"inline-line-height | block-line-height | max-height | grid-height","list-style":1,"list-style-image":"<uri> | none | inherit","list-style-position":"inside | outside | inherit","list-style-type":"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit",margin:{multi:"<margin-width> | inherit",max:4},"margin-bottom":"<margin-width> | inherit","margin-left":"<margin-width> | inherit","margin-right":"<margin-width> | inherit","margin-top":"<margin-width> | inherit",mark:1,"mark-after":1,"mark-before":1,marks:1,"marquee-direction":1,"marquee-play-count":1,"marquee-speed":1,"marquee-style":1,"max-height":"<length> | <percentage> | <content-sizing> | none | inherit","max-width":"<length> | <percentage> | <content-sizing> | none | inherit","min-height":"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit","min-width":"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats | inherit","move-to":1,"nav-down":1,"nav-index":1,"nav-left":1,"nav-right":1,"nav-up":1,opacity:"<number> | inherit",order:"<integer>","-webkit-order":"<integer>",orphans:"<integer> | inherit",outline:1,"outline-color":"<color> | invert | inherit","outline-offset":1,"outline-style":"<border-style> | inherit","outline-width":"<border-width> | inherit",overflow:"visible | hidden | scroll | auto | inherit","overflow-style":1,"overflow-wrap":"normal | break-word","overflow-x":1,"overflow-y":1,padding:{multi:"<padding-width> | inherit",max:4},"padding-bottom":"<padding-width> | inherit","padding-left":"<padding-width> | inherit","padding-right":"<padding-width> | inherit","padding-top":"<padding-width> | inherit",page:1,"page-break-after":"auto | always | avoid | left | right | inherit","page-break-before":"auto | always | avoid | left | right | inherit","page-break-inside":"auto | avoid | inherit","page-policy":1,pause:1,"pause-after":1,"pause-before":1,perspective:1,"perspective-origin":1,phonemes:1,pitch:1,"pitch-range":1,"play-during":1,"pointer-events":"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",position:"static | relative | absolute | fixed | inherit","presentation-level":1,"punctuation-trim":1,quotes:1,"rendering-intent":1,resize:1,rest:1,"rest-after":1,"rest-before":1,richness:1,right:"<margin-width> | inherit",rotation:1,"rotation-point":1,"ruby-align":1,"ruby-overhang":1,"ruby-position":1,"ruby-span":1,size:1,speak:"normal | none | spell-out | inherit","speak-header":"once | always | inherit","speak-numeral":"digits | continuous | inherit","speak-punctuation":"code | none | inherit","speech-rate":1,src:1,stress:1,"string-set":1,"table-layout":"auto | fixed | inherit","tab-size":"<integer> | <length>",target:1,"target-name":1,"target-new":1,"target-position":1,"text-align":"left | right | center | justify | inherit","text-align-last":1,"text-decoration":1,"text-emphasis":1,"text-height":1,"text-indent":"<length> | <percentage> | inherit","text-justify":"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida","text-outline":1,"text-overflow":1,"text-rendering":"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit","text-shadow":1,"text-transform":"capitalize | uppercase | lowercase | none | inherit","text-wrap":"normal | none | avoid",top:"<margin-width> | inherit","-ms-touch-action":"auto | none | pan-x | pan-y","touch-action":"auto | none | pan-x | pan-y",transform:1,"transform-origin":1,"transform-style":1,transition:1,"transition-delay":1,"transition-duration":1,"transition-property":1,"transition-timing-function":1,"unicode-bidi":"normal | embed | isolate | bidi-override | isolate-override | plaintext | inherit","user-modify":"read-only | read-write | write-only | inherit","user-select":"none | text | toggle | element | elements | all | inherit","vertical-align":"auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>",visibility:"visible | hidden | collapse | inherit","voice-balance":1,"voice-duration":1,"voice-family":1,"voice-pitch":1,"voice-pitch-range":1,"voice-rate":1,"voice-stress":1,"voice-volume":1,volume:1,"white-space":"normal | pre | nowrap | pre-wrap | pre-line | inherit | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap","white-space-collapse":1,widows:"<integer> | inherit",width:"<length> | <percentage> | <content-sizing> | auto | inherit","word-break":"normal | keep-all | break-all","word-spacing":"<length> | normal | inherit","word-wrap":"normal | break-word","writing-mode":"horizontal-tb | vertical-rl | vertical-lr | lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb | inherit","z-index":"<integer> | auto | inherit",zoom:"<number> | <percentage> | normal"};PropertyName.prototype=new SyntaxUnit,PropertyName.prototype.constructor=PropertyName,PropertyName.prototype.toString=function(){return(this.hack?this.hack:"")+this.text},PropertyValue.prototype=new SyntaxUnit,PropertyValue.prototype.constructor=PropertyValue,PropertyValueIterator.prototype.count=function(){return this._parts.length},PropertyValueIterator.prototype.isFirst=function(){return this._i===0},PropertyValueIterator.prototype.hasNext=function(){return this._i<this._parts.length},PropertyValueIterator.prototype.mark=function(){this._marks.push(this._i)},PropertyValueIterator.prototype.peek=function(e){return this.hasNext()?this._parts[this._i+(e||0)]:null},PropertyValueIterator.prototype.next=function(){return this.hasNext()?this._parts[this._i++]:null},PropertyValueIterator.prototype.previous=function(){return this._i>0?this._parts[--this._i]:null},PropertyValueIterator.prototype.restore=function(){this._marks.length&&(this._i=this._marks.pop())},PropertyValuePart.prototype=new SyntaxUnit,PropertyValuePart.prototype.constructor=PropertyValuePart,PropertyValuePart.fromToken=function(e){return new PropertyValuePart(e.value,e.startLine,e.startCol)};var Pseudos={":first-letter":1,":first-line":1,":before":1,":after":1};Pseudos.ELEMENT=1,Pseudos.CLASS=2,Pseudos.isElement=function(e){return e.indexOf("::")===0||Pseudos[e.toLowerCase()]==Pseudos.ELEMENT},Selector.prototype=new SyntaxUnit,Selector.prototype.constructor=Selector,SelectorPart.prototype=new SyntaxUnit,SelectorPart.prototype.constructor=SelectorPart,SelectorSubPart.prototype=new SyntaxUnit,SelectorSubPart.prototype.constructor=SelectorSubPart,Specificity.prototype={constructor:Specificity,compare:function(e){var t=["a","b","c","d"],n,r;for(n=0,r=t.length;n<r;n++){if(this[t[n]]<e[t[n]])return-1;if(this[t[n]]>e[t[n]])return 1}return 0},valueOf:function(){return this.a*1e3+this.b*100+this.c*10+this.d},toString:function(){return this.a+","+this.b+","+this.c+","+this.d}},Specificity.calculate=function(e){function u(e){var t,n,r,a,f=e.elementName?e.elementName.text:"",l;f&&f.charAt(f.length-1)!="*"&&o++;for(t=0,r=e.modifiers.length;t<r;t++){l=e.modifiers[t];switch(l.type){case"class":case"attribute":s++;break;case"id":i++;break;case"pseudo":Pseudos.isElement(l.text)?o++:s++;break;case"not":for(n=0,a=l.args.length;n<a;n++)u(l.args[n])}}}var t,n,r,i=0,s=0,o=0;for(t=0,n=e.parts.length;t<n;t++)r=e.parts[t],r instanceof SelectorPart&&u(r);return new Specificity(0,i,s,o)};var h=/^[0-9a-fA-F]$/,nonascii=/^[\u0080-\uFFFF]$/,nl=/\n|\r\n|\r|\f/;TokenStream.prototype=mix(new TokenStreamBase,{_getToken:function(e){var t,n=this._reader,r=null,i=n.getLine(),s=n.getCol();t=n.read();while(t){switch(t){case"/":n.peek()=="*"?r=this.commentToken(t,i,s):r=this.charToken(t,i,s);break;case"|":case"~":case"^":case"$":case"*":n.peek()=="="?r=this.comparisonToken(t,i,s):r=this.charToken(t,i,s);break;case'"':case"'":r=this.stringToken(t,i,s);break;case"#":isNameChar(n.peek())?r=this.hashToken(t,i,s):r=this.charToken(t,i,s);break;case".":isDigit(n.peek())?r=this.numberToken(t,i,s):r=this.charToken(t,i,s);break;case"-":n.peek()=="-"?r=this.htmlCommentEndToken(t,i,s):isNameStart(n.peek())?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s);break;case"!":r=this.importantToken(t,i,s);break;case"@":r=this.atRuleToken(t,i,s);break;case":":r=this.notToken(t,i,s);break;case"<":r=this.htmlCommentStartToken(t,i,s);break;case"U":case"u":if(n.peek()=="+"){r=this.unicodeRangeToken(t,i,s);break};default:isDigit(t)?r=this.numberToken(t,i,s):isWhitespace(t)?r=this.whitespaceToken(t,i,s):isIdentStart(t)?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s)}break}return!r&&t===null&&(r=this.createToken(Tokens.EOF,null,i,s)),r},createToken:function(e,t,n,r,i){var s=this._reader;return i=i||{},{value:t,type:e,channel:i.channel,endChar:i.endChar,hide:i.hide||!1,startLine:n,startCol:r,endLine:s.getLine(),endCol:s.getCol()}},atRuleToken:function(e,t,n){var r=e,i=this._reader,s=Tokens.CHAR,o=!1,u,a;i.mark(),u=this.readName(),r=e+u,s=Tokens.type(r.toLowerCase());if(s==Tokens.CHAR||s==Tokens.UNKNOWN)r.length>1?s=Tokens.UNKNOWN_SYM:(s=Tokens.CHAR,r=e,i.reset());return this.createToken(s,r,t,n)},charToken:function(e,t,n){var r=Tokens.type(e),i={};return r==-1?r=Tokens.CHAR:i.endChar=Tokens[r].endChar,this.createToken(r,e,t,n,i)},commentToken:function(e,t,n){var r=this._reader,i=this.readComment(e);return this.createToken(Tokens.COMMENT,i,t,n)},comparisonToken:function(e,t,n){var r=this._reader,i=e+r.read(),s=Tokens.type(i)||Tokens.CHAR;return this.createToken(s,i,t,n)},hashToken:function(e,t,n){var r=this._reader,i=this.readName(e);return this.createToken(Tokens.HASH,i,t,n)},htmlCommentStartToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(3),i=="<!--"?this.createToken(Tokens.CDO,i,t,n):(r.reset(),this.charToken(e,t,n))},htmlCommentEndToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(2),i=="-->"?this.createToken(Tokens.CDC,i,t,n):(r.reset(),this.charToken(e,t,n))},identOrFunctionToken:function(e,t,n){var r=this._reader,i=this.readName(e),s=Tokens.IDENT;return r.peek()=="("?(i+=r.read(),i.toLowerCase()=="url("?(s=Tokens.URI,i=this.readURI(i),i.toLowerCase()=="url("&&(s=Tokens.FUNCTION)):s=Tokens.FUNCTION):r.peek()==":"&&i.toLowerCase()=="progid"&&(i+=r.readTo("("),s=Tokens.IE_FUNCTION),this.createToken(s,i,t,n)},importantToken:function(e,t,n){var r=this._reader,i=e,s=Tokens.CHAR,o,u;r.mark(),u=r.read();while(u){if(u=="/"){if(r.peek()!="*")break;o=this.readComment(u);if(o==="")break}else{if(!isWhitespace(u)){if(/i/i.test(u)){o=r.readCount(8),/mportant/i.test(o)&&(i+=u+o,s=Tokens.IMPORTANT_SYM);break}break}i+=u+this.readWhitespace()}u=r.read()}return s==Tokens.CHAR?(r.reset(),this.charToken(e,t,n)):this.createToken(s,i,t,n)},notToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(4),i.toLowerCase()==":not("?this.createToken(Tokens.NOT,i,t,n):(r.reset(),this.charToken(e,t,n))},numberToken:function(e,t,n){var r=this._reader,i=this.readNumber(e),s,o=Tokens.NUMBER,u=r.peek();return isIdentStart(u)?(s=this.readName(r.read()),i+=s,/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vmax$|^vmin$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(s)?o=Tokens.LENGTH:/^deg|^rad$|^grad$/i.test(s)?o=Tokens.ANGLE:/^ms$|^s$/i.test(s)?o=Tokens.TIME:/^hz$|^khz$/i.test(s)?o=Tokens.FREQ:/^dpi$|^dpcm$/i.test(s)?o=Tokens.RESOLUTION:o=Tokens.DIMENSION):u=="%"&&(i+=r.read(),o=Tokens.PERCENTAGE),this.createToken(o,i,t,n)},stringToken:function(e,t,n){var r=e,i=e,s=this._reader,o=e,u=Tokens.STRING,a=s.read();while(a){i+=a;if(a==r&&o!="\\")break;if(isNewLine(s.peek())&&a!="\\"){u=Tokens.INVALID;break}o=a,a=s.read()}return a===null&&(u=Tokens.INVALID),this.createToken(u,i,t,n)},unicodeRangeToken:function(e,t,n){var r=this._reader,i=e,s,o=Tokens.CHAR;return r.peek()=="+"&&(r.mark(),i+=r.read(),i+=this.readUnicodeRangePart(!0),i.length==2?r.reset():(o=Tokens.UNICODE_RANGE,i.indexOf("?")==-1&&r.peek()=="-"&&(r.mark(),s=r.read(),s+=this.readUnicodeRangePart(!1),s.length==1?r.reset():i+=s))),this.createToken(o,i,t,n)},whitespaceToken:function(e,t,n){var r=this._reader,i=e+this.readWhitespace();return this.createToken(Tokens.S,i,t,n)},readUnicodeRangePart:function(e){var t=this._reader,n="",r=t.peek();while(isHexDigit(r)&&n.length<6)t.read(),n+=r,r=t.peek();if(e)while(r=="?"&&n.length<6)t.read(),n+=r,r=t.peek();return n},readWhitespace:function(){var e=this._reader,t="",n=e.peek();while(isWhitespace(n))e.read(),t+=n,n=e.peek();return t},readNumber:function(e){var t=this._reader,n=e,r=e==".",i=t.peek();while(i){if(isDigit(i))n+=t.read();else{if(i!=".")break;if(r)break;r=!0,n+=t.read()}i=t.peek()}return n},readString:function(){var e=this._reader,t=e.read(),n=t,r=t,i=e.peek();while(i){i=e.read(),n+=i;if(i==t&&r!="\\")break;if(isNewLine(e.peek())&&i!="\\"){n="";break}r=i,i=e.peek()}return i===null&&(n=""),n},readURI:function(e){var t=this._reader,n=e,r="",i=t.peek();t.mark();while(i&&isWhitespace(i))t.read(),i=t.peek();i=="'"||i=='"'?r=this.readString():r=this.readURL(),i=t.peek();while(i&&isWhitespace(i))t.read(),i=t.peek();return r===""||i!=")"?(n=e,t.reset()):n+=r+t.read(),n},readURL:function(){var e=this._reader,t="",n=e.peek();while(/^[!#$%&\\*-~]$/.test(n))t+=e.read(),n=e.peek();return t},readName:function(e){var t=this._reader,n=e||"",r=t.peek();for(;;)if(r=="\\")n+=this.readEscape(t.read()),r=t.peek();else{if(!r||!isNameChar(r))break;n+=t.read(),r=t.peek()}return n},readEscape:function(e){var t=this._reader,n=e||"",r=0,i=t.peek();if(isHexDigit(i))do n+=t.read(),i=t.peek();while(i&&isHexDigit(i)&&++r<6);return n.length==3&&/\s/.test(i)||n.length==7||n.length==1?t.read():i="",n+i},readComment:function(e){var t=this._reader,n=e||"",r=t.read();if(r=="*"){while(r){n+=r;if(n.length>2&&r=="*"&&t.peek()=="/"){n+=t.read();break}r=t.read()}return n}return""}});var Tokens=[{name:"CDO"},{name:"CDC"},{name:"S",whitespace:!0},{name:"COMMENT",comment:!0,hide:!0,channel:"comment"},{name:"INCLUDES",text:"~="},{name:"DASHMATCH",text:"|="},{name:"PREFIXMATCH",text:"^="},{name:"SUFFIXMATCH",text:"$="},{name:"SUBSTRINGMATCH",text:"*="},{name:"STRING"},{name:"IDENT"},{name:"HASH"},{name:"IMPORT_SYM",text:"@import"},{name:"PAGE_SYM",text:"@page"},{name:"MEDIA_SYM",text:"@media"},{name:"FONT_FACE_SYM",text:"@font-face"},{name:"CHARSET_SYM",text:"@charset"},{name:"NAMESPACE_SYM",text:"@namespace"},{name:"VIEWPORT_SYM",text:["@viewport","@-ms-viewport"]},{name:"UNKNOWN_SYM"},{name:"KEYFRAMES_SYM",text:["@keyframes","@-webkit-keyframes","@-moz-keyframes","@-o-keyframes"]},{name:"IMPORTANT_SYM"},{name:"LENGTH"},{name:"ANGLE"},{name:"TIME"},{name:"FREQ"},{name:"DIMENSION"},{name:"PERCENTAGE"},{name:"NUMBER"},{name:"URI"},{name:"FUNCTION"},{name:"UNICODE_RANGE"},{name:"INVALID"},{name:"PLUS",text:"+"},{name:"GREATER",text:">"},{name:"COMMA",text:","},{name:"TILDE",text:"~"},{name:"NOT"},{name:"TOPLEFTCORNER_SYM",text:"@top-left-corner"},{name:"TOPLEFT_SYM",text:"@top-left"},{name:"TOPCENTER_SYM",text:"@top-center"},{name:"TOPRIGHT_SYM",text:"@top-right"},{name:"TOPRIGHTCORNER_SYM",text:"@top-right-corner"},{name:"BOTTOMLEFTCORNER_SYM",text:"@bottom-left-corner"},{name:"BOTTOMLEFT_SYM",text:"@bottom-left"},{name:"BOTTOMCENTER_SYM",text:"@bottom-center"},{name:"BOTTOMRIGHT_SYM",text:"@bottom-right"},{name:"BOTTOMRIGHTCORNER_SYM",text:"@bottom-right-corner"},{name:"LEFTTOP_SYM",text:"@left-top"},{name:"LEFTMIDDLE_SYM",text:"@left-middle"},{name:"LEFTBOTTOM_SYM",text:"@left-bottom"},{name:"RIGHTTOP_SYM",text:"@right-top"},{name:"RIGHTMIDDLE_SYM",text:"@right-middle"},{name:"RIGHTBOTTOM_SYM",text:"@right-bottom"},{name:"RESOLUTION",state:"media"},{name:"IE_FUNCTION"},{name:"CHAR"},{name:"PIPE",text:"|"},{name:"SLASH",text:"/"},{name:"MINUS",text:"-"},{name:"STAR",text:"*"},{name:"LBRACE",endChar:"}",text:"{"},{name:"RBRACE",text:"}"},{name:"LBRACKET",endChar:"]",text:"["},{name:"RBRACKET",text:"]"},{name:"EQUALS",text:"="},{name:"COLON",text:":"},{name:"SEMICOLON",text:";"},{name:"LPAREN",endChar:")",text:"("},{name:"RPAREN",text:")"},{name:"DOT",text:"."}];(function(){var e=[],t={};Tokens.UNKNOWN=-1,Tokens.unshift({name:"EOF"});for(var n=0,r=Tokens.length;n<r;n++){e.push(Tokens[n].name),Tokens[Tokens[n].name]=n;if(Tokens[n].text)if(Tokens[n].text instanceof Array)for(var i=0;i<Tokens[n].text.length;i++)t[Tokens[n].text[i]]=n;else t[Tokens[n].text]=n}Tokens.name=function(t){return e[t]},Tokens.type=function(e){return t[e]||-1}})();var Validation={validate:function(e,t){var n=e.toString().toLowerCase(),r=t.parts,i=new PropertyValueIterator(t),s=Properties[n],o,u,a,f,l,c,h,p,d,v,m;if(!s){if(n.indexOf("-")!==0)throw new ValidationError("Unknown property '"+e+"'.",e.line,e.col)}else typeof s!="number"&&(typeof s=="string"?s.indexOf("||")>-1?this.groupProperty(s,i):this.singleProperty(s,i,1):s.multi?this.multiProperty(s.multi,i,s.comma,s.max||Infinity):typeof s=="function"&&s(i))},singleProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u;while(t.hasNext()&&o<n){i=ValidationTypes.isAny(t,e);if(!i)break;o++}if(!i)throw t.hasNext()&&!t.isFirst()?(u=t.peek(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col);if(t.hasNext())throw u=t.next(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)},multiProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u=!1,a;while(t.hasNext()&&!i&&o<r){if(!ValidationTypes.isAny(t,e))break;o++;if(!t.hasNext())i=!0;else if(n){if(t.peek()!=",")break;a=t.next()}}if(!i)throw t.hasNext()&&!t.isFirst()?(a=t.peek(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)):(a=t.previous(),n&&a==","?new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col));if(t.hasNext())throw a=t.next(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)},groupProperty:function(e,t,n){var r=!1,i=t.value,s=e.split("||").length,o={count:0},u=!1,a,f;while(t.hasNext()&&!r){a=ValidationTypes.isAnyOfGroup(t,e);if(!a)break;if(o[a])break;o[a]=1,o.count++,u=!0;if(o.count==s||!t.hasNext())r=!0}if(!r)throw u&&t.hasNext()?(f=t.peek(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)):new ValidationError("Expected ("+e+") but found '"+i+"'.",i.line,i.col);if(t.hasNext())throw f=t.next(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)}};ValidationError.prototype=new Error;var ValidationTypes={isLiteral:function(e,t){var n=e.text.toString().toLowerCase(),r=t.split(" | "),i,s,o=!1;for(i=0,s=r.length;i<s&&!o;i++)n==r[i].toLowerCase()&&(o=!0);return o},isSimple:function(e){return!!this.simple[e]},isComplex:function(e){return!!this.complex[e]},isAny:function(e,t){var n=t.split(" | "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s&&e.hasNext();r++)s=this.isType(e,n[r]);return s},isAnyOfGroup:function(e,t){var n=t.split(" || "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s;r++)s=this.isType(e,n[r]);return s?n[r-1]:!1},isType:function(e,t){var n=e.peek(),r=!1;return t.charAt(0)!="<"?(r=this.isLiteral(n,t),r&&e.next()):this.simple[t]?(r=this.simple[t](n),r&&e.next()):r=this.complex[t](e),r},simple:{"<absolute-size>":function(e){return ValidationTypes.isLiteral(e,"xx-small | x-small | small | medium | large | x-large | xx-large")},"<attachment>":function(e){return ValidationTypes.isLiteral(e,"scroll | fixed | local")},"<attr>":function(e){return e.type=="function"&&e.name=="attr"},"<bg-image>":function(e){return this["<image>"](e)||this["<gradient>"](e)||e=="none"},"<gradient>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial\-|linear\-)?gradient/i.test(e)},"<box>":function(e){return ValidationTypes.isLiteral(e,"padding-box | border-box | content-box")},"<content>":function(e){return e.type=="function"&&e.name=="content"},"<relative-size>":function(e){return ValidationTypes.isLiteral(e,"smaller | larger")},"<ident>":function(e){return e.type=="identifier"},"<length>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?calc/i.test(e)?!0:e.type=="length"||e.type=="number"||e.type=="integer"||e=="0"},"<color>":function(e){return e.type=="color"||e=="transparent"},"<number>":function(e){return e.type=="number"||this["<integer>"](e)},"<integer>":function(e){return e.type=="integer"},"<line>":function(e){return e.type=="integer"},"<angle>":function(e){return e.type=="angle"},"<uri>":function(e){return e.type=="uri"},"<image>":function(e){return this["<uri>"](e)},"<percentage>":function(e){return e.type=="percentage"||e=="0"},"<border-width>":function(e){return this["<length>"](e)||ValidationTypes.isLiteral(e,"thin | medium | thick")},"<border-style>":function(e){return ValidationTypes.isLiteral(e,"none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset")},"<content-sizing>":function(e){return ValidationTypes.isLiteral(e,"fill-available | -moz-available | -webkit-fill-available | max-content | -moz-max-content | -webkit-max-content | min-content | -moz-min-content | -webkit-min-content | fit-content | -moz-fit-content | -webkit-fit-content")},"<margin-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)||ValidationTypes.isLiteral(e,"auto")},"<padding-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)},"<shape>":function(e){return e.type=="function"&&(e.name=="rect"||e.name=="inset-rect")},"<time>":function(e){return e.type=="time"},"<flex-grow>":function(e){return this["<number>"](e)},"<flex-shrink>":function(e){return this["<number>"](e)},"<width>":function(e){return this["<margin-width>"](e)},"<flex-basis>":function(e){return this["<width>"](e)},"<flex-direction>":function(e){return ValidationTypes.isLiteral(e,"row | row-reverse | column | column-reverse")},"<flex-wrap>":function(e){return ValidationTypes.isLiteral(e,"nowrap | wrap | wrap-reverse")}},complex:{"<bg-position>":function(e){var t=this,n=!1,r="<percentage> | <length>",i="left | right",s="top | bottom",o=0,u=function(){return e.hasNext()&&e.peek()!=","};while(e.peek(o)&&e.peek(o)!=",")o++;return o<3?ValidationTypes.isAny(e,i+" | center | "+r)?(n=!0,ValidationTypes.isAny(e,s+" | center | "+r)):ValidationTypes.isAny(e,s)&&(n=!0,ValidationTypes.isAny(e,i+" | center")):ValidationTypes.isAny(e,i)?ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,s)?ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,"center")&&ValidationTypes.isAny(e,i+" | "+s)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<bg-size>":function(e){var t=this,n=!1,r="<percentage> | <length> | auto",i,s,o;return ValidationTypes.isAny(e,"cover | contain")?n=!0:ValidationTypes.isAny(e,r)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<repeat-style>":function(e){var t=!1,n="repeat | space | round | no-repeat",r;return e.hasNext()&&(r=e.next(),ValidationTypes.isLiteral(r,"repeat-x | repeat-y")?t=!0:ValidationTypes.isLiteral(r,n)&&(t=!0,e.hasNext()&&ValidationTypes.isLiteral(e.peek(),n)&&e.next())),t},"<shadow>":function(e){var t=!1,n=0,r=!1,i=!1,s;if(e.hasNext()){ValidationTypes.isAny(e,"inset")&&(r=!0),ValidationTypes.isAny(e,"<color>")&&(i=!0);while(ValidationTypes.isAny(e,"<length>")&&n<4)n++;e.hasNext()&&(i||ValidationTypes.isAny(e,"<color>"),r||ValidationTypes.isAny(e,"inset")),t=n>=2&&n<=4}return t},"<x-one-radius>":function(e){var t=!1,n="<length> | <percentage> | inherit";return ValidationTypes.isAny(e,n)&&(t=!0,ValidationTypes.isAny(e,n)),t},"<flex>":function(e){var t,n=!1;ValidationTypes.isAny(e,"none | inherit")?n=!0:ValidationTypes.isType(e,"<flex-grow>")?e.peek()?ValidationTypes.isType(e,"<flex-shrink>")?e.peek()?n=ValidationTypes.isType(e,"<flex-basis>"):n=!0:ValidationTypes.isType(e,"<flex-basis>")&&(n=e.peek()===null):n=!0:ValidationTypes.isType(e,"<flex-basis>")&&(n=!0);if(!n)throw t=e.peek(),new ValidationError("Expected (none | [ <flex-grow> <flex-shrink>? || <flex-basis> ]) but found '"+e.value.text+"'.",t.line,t.col);return n}}};parserlib.css={Colors:Colors,Combinator:Combinator,Parser:Parser,PropertyName:PropertyName,PropertyValue:PropertyValue,PropertyValuePart:PropertyValuePart,MediaFeature:MediaFeature,MediaQuery:MediaQuery,Selector:Selector,SelectorPart:SelectorPart,SelectorSubPart:SelectorSubPart,Specificity:Specificity,TokenStream:TokenStream,Tokens:Tokens,ValidationError:ValidationError}}(),function(){for(var e in parserlib)exports[e]=parserlib[e]}();var util={isArray:function(e){return Array.isArray(e)||typeof e=="object"&&objectToString(e)==="[object Array]"},isDate:function(e){return typeof e=="object"&&objectToString(e)==="[object Date]"},isRegExp:function(e){return typeof e=="object"&&objectToString(e)==="[object RegExp]"},getRegExpFlags:function(e){var t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),t}};typeof module=="object"&&(module.exports=clone),clone.clonePrototype=function(e){if(e===null)return null;var t=function(){};return t.prototype=e,new t};var CSSLint=function(){function i(e,t){var r,i=e&&e.match(n),s=i&&i[1];return s&&(r={"true":2,"":1,"false":0,2:2,1:1,0:0},s.toLowerCase().split(",").forEach(function(e){var n=e.split(":"),i=n[0]||"",s=n[1]||"";t[i.trim()]=r[s.trim()]})),t}var e=[],t=[],n=/\/\*csslint([^\*]*)\*\//,r=new parserlib.util.EventTarget;return r.version="@VERSION@",r.addRule=function(t){e.push(t),e[t.id]=t},r.clearRules=function(){e=[]},r.getRules=function(){return[].concat(e).sort(function(e,t){return e.id>t.id?1:0})},r.getRuleset=function(){var t={},n=0,r=e.length;while(n<r)t[e[n++].id]=1;return t},r.addFormatter=function(e){t[e.id]=e},r.getFormatter=function(e){return t[e]},r.format=function(e,t,n,r){var i=this.getFormatter(n),s=null;return i&&(s=i.startFormat(),s+=i.formatResults(e,t,r||{}),s+=i.endFormat()),s},r.hasFormat=function(e){return t.hasOwnProperty(e)},r.verify=function(t,r){var s=0,o,u,a,f=new parserlib.css.Parser({starHack:!0,ieFilters:!0,underscoreHack:!0,strict:!1});u=t.replace(/\n\r?/g,"$split$").split("$split$"),r||(r=this.getRuleset()),n.test(t)&&(r=clone(r),r=i(t,r)),o=new Reporter(u,r),r.errors=2;for(s in r)r.hasOwnProperty(s)&&r[s]&&e[s]&&e[s].init(f,o);try{f.parse(t)}catch(l){o.error("Fatal error, cannot continue: "+l.message,l.line,l.col,{})}return a={messages:o.messages,stats:o.stats,ruleset:o.ruleset},a.messages.sort(function(e,t){return e.rollup&&!t.rollup?1:!e.rollup&&t.rollup?-1:e.line-t.line}),a},r}();Reporter.prototype={constructor:Reporter,error:function(e,t,n,r){this.messages.push({type:"error",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r||{}})},warn:function(e,t,n,r){this.report(e,t,n,r)},report:function(e,t,n,r){this.messages.push({type:this.ruleset[r.id]===2?"error":"warning",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},info:function(e,t,n,r){this.messages.push({type:"info",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},rollupError:function(e,t){this.messages.push({type:"error",rollup:!0,message:e,rule:t})},rollupWarn:function(e,t){this.messages.push({type:"warning",rollup:!0,message:e,rule:t})},stat:function(e,t){this.stats[e]=t}},CSSLint._Reporter=Reporter,CSSLint.Util={mix:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return n},indexOf:function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t){if(e.forEach)return e.forEach(t);for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)}},CSSLint.addRule({id:"adjoining-classes",name:"Disallow adjoining classes",desc:"Don't use adjoining classes.",browsers:"IE6",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f];for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type===e.SELECTOR_PART_TYPE){a=0;for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type==="class"&&a++,a>1&&t.report("Don't use adjoining classes.",o.line,o.col,n)}}}})}}),CSSLint.addRule({id:"box-model",name:"Beware of broken box size",desc:"Don't use width or height when using padding or border.",browsers:"All",init:function(e,t){function u(){s={},o=!1}function a(){var e,u;if(!o){if(s.height)for(e in i)i.hasOwnProperty(e)&&s[e]&&(u=s[e].value,(e!=="padding"||u.parts.length!==2||u.parts[0].value!==0)&&t.report("Using height with "+e+" can sometimes make elements larger than you expect.",s[e].line,s[e].col,n));if(s.width)for(e in r)r.hasOwnProperty(e)&&s[e]&&(u=s[e].value,(e!=="padding"||u.parts.length!==2||u.parts[1].value!==0)&&t.report("Using width with "+e+" can sometimes make elements larger than you expect.",s[e].line,s[e].col,n))}}var n=this,r={border:1,"border-left":1,"border-right":1,padding:1,"padding-left":1,"padding-right":1},i={border:1,"border-bottom":1,"border-top":1,padding:1,"padding-bottom":1,"padding-top":1},s,o=!1;e.addListener("startrule",u),e.addListener("startfontface",u),e.addListener("startpage",u),e.addListener("startpagemargin",u),e.addListener("startkeyframerule",u),e.addListener("property",function(e){var t=e.property.text.toLowerCase();i[t]||r[t]?!/^0\S*$/.test(e.value)&&(t!=="border"||e.value.toString()!=="none")&&(s[t]={line:e.property.line,col:e.property.col,value:e.value}):/^(width|height)/i.test(t)&&/^(length|percentage)/.test(e.value.parts[0].type)?s[t]=1:t==="box-sizing"&&(o=!0)}),e.addListener("endrule",a),e.addListener("endfontface",a),e.addListener("endpage",a),e.addListener("endpagemargin",a),e.addListener("endkeyframerule",a)}}),CSSLint.addRule({id:"box-sizing",name:"Disallow use of box-sizing",desc:"The box-sizing properties isn't supported in IE6 and IE7.",browsers:"IE6, IE7",tags:["Compatibility"],init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property.text.toLowerCase();r==="box-sizing"&&t.report("The box-sizing property isn't supported in IE6 and IE7.",e.line,e.col,n)})}}),CSSLint.addRule({id:"bulletproof-font-face",name:"Use the bulletproof @font-face syntax",desc:"Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).",browsers:"All",init:function(e,t){var n=this,r=!1,i=!0,s=!1,o,u;e.addListener("startfontface",function(){r=!0}),e.addListener("property",function(e){if(!r)return;var t=e.property.toString().toLowerCase(),n=e.value.toString();o=e.line,u=e.col;if(t==="src"){var a=/^\s?url\(['"].+\.eot\?.*['"]\)\s*format\(['"]embedded-opentype['"]\).*$/i;!n.match(a)&&i?(s=!0,i=!1):n.match(a)&&!i&&(s=!1)}}),e.addListener("endfontface",function(){r=!1,s&&t.report("@font-face declaration doesn't follow the fontspring bulletproof syntax.",o,u,n)})}}),CSSLint.addRule({id:"compatible-vendor-prefixes",name:"Require compatible vendor prefixes",desc:"Include all compatible vendor prefixes to reach a wider range of users.",browsers:"All",init:function(e,t){var n=this,r,i,s,o,u,a,f,l=!1,c=Array.prototype.push,h=[];r={animation:"webkit moz","animation-delay":"webkit moz","animation-direction":"webkit moz","animation-duration":"webkit moz","animation-fill-mode":"webkit moz","animation-iteration-count":"webkit moz","animation-name":"webkit moz","animation-play-state":"webkit moz","animation-timing-function":"webkit moz",appearance:"webkit moz","border-end":"webkit moz","border-end-color":"webkit moz","border-end-style":"webkit moz","border-end-width":"webkit moz","border-image":"webkit moz o","border-radius":"webkit","border-start":"webkit moz","border-start-color":"webkit moz","border-start-style":"webkit moz","border-start-width":"webkit moz","box-align":"webkit moz ms","box-direction":"webkit moz ms","box-flex":"webkit moz ms","box-lines":"webkit ms","box-ordinal-group":"webkit moz ms","box-orient":"webkit moz ms","box-pack":"webkit moz ms","box-sizing":"webkit moz","box-shadow":"webkit moz","column-count":"webkit moz ms","column-gap":"webkit moz ms","column-rule":"webkit moz ms","column-rule-color":"webkit moz ms","column-rule-style":"webkit moz ms","column-rule-width":"webkit moz ms","column-width":"webkit moz ms",hyphens:"epub moz","line-break":"webkit ms","margin-end":"webkit moz","margin-start":"webkit moz","marquee-speed":"webkit wap","marquee-style":"webkit wap","padding-end":"webkit moz","padding-start":"webkit moz","tab-size":"moz o","text-size-adjust":"webkit ms",transform:"webkit moz ms o","transform-origin":"webkit moz ms o",transition:"webkit moz o","transition-delay":"webkit moz o","transition-duration":"webkit moz o","transition-property":"webkit moz o","transition-timing-function":"webkit moz o","user-modify":"webkit moz","user-select":"webkit moz ms","word-break":"epub ms","writing-mode":"epub ms"};for(s in r)if(r.hasOwnProperty(s)){o=[],u=r[s].split(" ");for(a=0,f=u.length;a<f;a++)o.push("-"+u[a]+"-"+s);r[s]=o,c.apply(h,o)}e.addListener("startrule",function(){i=[]}),e.addListener("startkeyframes",function(e){l=e.prefix||!0}),e.addListener("endkeyframes",function(){l=!1}),e.addListener("property",function(e){var t=e.property;CSSLint.Util.indexOf(h,t.text)>-1&&(!l||typeof l!="string"||t.text.indexOf("-"+l+"-")!==0)&&i.push(t)}),e.addListener("endrule",function(){if(!i.length)return;var e={},s,o,u,a,f,l,c,h,p,d;for(s=0,o=i.length;s<o;s++){u=i[s];for(a in r)r.hasOwnProperty(a)&&(f=r[a],CSSLint.Util.indexOf(f,u.text)>-1&&(e[a]||(e[a]={full:f.slice(0),actual:[],actualNodes:[]}),CSSLint.Util.indexOf(e[a].actual,u.text)===-1&&(e[a].actual.push(u.text),e[a].actualNodes.push(u))))}for(a in e)if(e.hasOwnProperty(a)){l=e[a],c=l.full,h=l.actual;if(c.length>h.length)for(s=0,o=c.length;s<o;s++)p=c[s],CSSLint.Util.indexOf(h,p)===-1&&(d=h.length===1?h[0]:h.length===2?h.join(" and "):h.join(", "),t.report("The property "+p+" is compatible with "+d+" and should be included as well.",l.actualNodes[0].line,l.actualNodes[0].col,n))}})}}),CSSLint.addRule({id:"display-property-grouping",name:"Require properties appropriate for display",desc:"Certain properties shouldn't be used with certain display property values.",browsers:"All",init:function(e,t){function s(e,s,o){i[e]&&(typeof r[e]!="string"||i[e].value.toLowerCase()!==r[e])&&t.report(o||e+" can't be used with display: "+s+".",i[e].line,i[e].col,n)}function o(){i={}}function u(){var e=i.display?i.display.value:null;if(e)switch(e){case"inline":s("height",e),s("width",e),s("margin",e),s("margin-top",e),s("margin-bottom",e),s("float",e,"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).");break;case"block":s("vertical-align",e);break;case"inline-block":s("float",e);break;default:e.indexOf("table-")===0&&(s("margin",e),s("margin-left",e),s("margin-right",e),s("margin-top",e),s("margin-bottom",e),s("float",e))}}var n=this,r={display:1,"float":"none",height:1,width:1,margin:1,"margin-left":1,"margin-right":1,"margin-bottom":1,"margin-top":1,padding:1,"padding-left":1,"padding-right":1,"padding-bottom":1,"padding-top":1,"vertical-align":1},i;e.addListener("startrule",o),e.addListener("startfontface",o),e.addListener("startkeyframerule",o),e.addListener("startpagemargin",o),e.addListener("startpage",o),e.addListener("property",function(e){var t=e.property.text.toLowerCase();r[t]&&(i[t]={value:e.value.text,line:e.property.line,col:e.property.col})}),e.addListener("endrule",u),e.addListener("endfontface",u),e.addListener("endkeyframerule",u),e.addListener("endpagemargin",u),e.addListener("endpage",u)}}),CSSLint.addRule({id:"duplicate-background-images",name:"Disallow duplicate background images",desc:"Every background-image should be unique. Use a common class for e.g. sprites.",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("property",function(e){var i=e.property.text,s=e.value,o,u;if(i.match(/background/i))for(o=0,u=s.parts.length;o<u;o++)s.parts[o].type==="uri"&&(typeof r[s.parts[o].uri]=="undefined"?r[s.parts[o].uri]=e:t.report("Background image '"+s.parts[o].uri+"' was used multiple times, first declared at line "+r[s.parts[o].uri].line+", col "+r[s.parts[o].uri].col+".",e.line,e.col,n))})}}),CSSLint.addRule({id:"duplicate-properties",name:"Disallow duplicate properties",desc:"Duplicate properties must appear one after the other.",browsers:"All",init:function(e,t){function s(){r={}}var n=this,r,i;e.addListener("startrule",s),e.addListener("startfontface",s),e.addListener("startpage",s),e.addListener("startpagemargin",s),e.addListener("startkeyframerule",s),e.addListener("property",function(e){var s=e.property,o=s.text.toLowerCase();r[o]&&(i!==o||r[o]===e.value.text)&&t.report("Duplicate property '"+e.property+"' found.",e.line,e.col,n),r[o]=e.value.text,i=o})}}),CSSLint.addRule({id:"empty-rules",name:"Disallow empty rules",desc:"Rules without any properties specified should be removed.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(){r=0}),e.addListener("property",function(){r++}),e.addListener("endrule",function(e){var i=e.selectors;r===0&&t.report("Rule is empty.",i[0].line,i[0].col,n)})}}),CSSLint.addRule({id:"errors",name:"Parsing Errors",desc:"This rule looks for recoverable syntax errors.",browsers:"All",init:function(e,t){var n=this;e.addListener("error",function(e){t.error(e.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"fallback-colors",name:"Require fallback colors",desc:"For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.",browsers:"IE6,IE7,IE8",init:function(e,t){function o(){s={},r=null}var n=this,r,i={color:1,background:1,"border-color":1,"border-top-color":1,"border-right-color":1,"border-bottom-color":1,"border-left-color":1,border:1,"border-top":1,"border-right":1,"border-bottom":1,"border-left":1,"background-color":1},s;e.addListener("startrule",o),e.addListener("startfontface",o),e.addListener("startpage",o),e.addListener("startpagemargin",o),e.addListener("startkeyframerule",o),e.addListener("property",function(e){var s=e.property,o=s.text.toLowerCase(),u=e.value.parts,a=0,f="",l=u.length;if(i[o])while(a<l)u[a].type==="color"&&("alpha"in u[a]||"hue"in u[a]?(/([^\)]+)\(/.test(u[a])&&(f=RegExp.$1.toUpperCase()),(!r||r.property.text.toLowerCase()!==o||r.colorType!=="compat")&&t.report("Fallback "+o+" (hex or RGB) should precede "+f+" "+o+".",e.line,e.col,n)):e.colorType="compat"),a++;r=e})}}),CSSLint.addRule({id:"floats",name:"Disallow too many floats",desc:"This rule tests if the float property is used too many times",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property.text.toLowerCase()==="float"&&e.value.text.toLowerCase()!=="none"&&r++}),e.addListener("endstylesheet",function(){t.stat("floats",r),r>=10&&t.rollupWarn("Too many floats ("+r+"), you're probably using them for layout. Consider using a grid system instead.",n)})}}),CSSLint.addRule({id:"font-faces",name:"Don't use too many web fonts",desc:"Too many different web fonts in the same stylesheet.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startfontface",function(){r++}),e.addListener("endstylesheet",function(){r>5&&t.rollupWarn("Too many @font-face declarations ("+r+").",n)})}}),CSSLint.addRule({id:"font-sizes",name:"Disallow too many font sizes",desc:"Checks the number of font-size declarations.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property.toString()==="font-size"&&r++}),e.addListener("endstylesheet",function(){t.stat("font-sizes",r),r>=10&&t.rollupWarn("Too many font-size declarations ("+r+"), abstraction needed.",n)})}}),CSSLint.addRule({id:"gradients",name:"Require all gradient definitions",desc:"When using a vendor-prefixed gradient, make sure to use them all.",browsers:"All",init:function(e,t){var n=this,r;e.addListener("startrule",function(){r={moz:0,webkit:0,oldWebkit:0,o:0}}),e.addListener("property",function(e){/\-(moz|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(e.value)?r[RegExp.$1]=1:/\-webkit\-gradient/i.test(e.value)&&(r.oldWebkit=1)}),e.addListener("endrule",function(e){var i=[];r.moz||i.push("Firefox 3.6+"),r.webkit||i.push("Webkit (Safari 5+, Chrome)"),r.oldWebkit||i.push("Old Webkit (Safari 4+, Chrome)"),r.o||i.push("Opera 11.1+"),i.length&&i.length<4&&t.report("Missing vendor-prefixed CSS gradients for "+i.join(", ")+".",e.selectors[0].line,e.selectors[0].col,n)})}}),CSSLint.addRule({id:"ids",name:"Disallow IDs in selectors",desc:"Selectors should not contain IDs.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f],a=0;for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type===e.SELECTOR_PART_TYPE)for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type==="id"&&a++}a===1?t.report("Don't use IDs in selectors.",s.line,s.col,n):a>1&&t.report(a+" IDs in the selector, really?",s.line,s.col,n)}})}}),CSSLint.addRule({id:"import",name:"Disallow @import",desc:"Don't use @import, use <link> instead.",browsers:"All",init:function(e,t){var n=this;e.addListener("import",function(e){t.report("@import prevents parallel downloads, use <link> instead.",e.line,e.col,n)})}}),CSSLint.addRule({id:"important",name:"Disallow !important",desc:"Be careful when using !important declaration",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.important===!0&&(r++,t.report("Use of !important",e.line,e.col,n))}),e.addListener("endstylesheet",function(){t.stat("important",r),r>=10&&t.rollupWarn("Too many !important declarations ("+r+"), try to use less than 10 to avoid specificity issues.",n)})}}),CSSLint.addRule({id:"known-properties",name:"Require use of known properties",desc:"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){e.invalid&&t.report(e.invalid.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"order-alphabetical",name:"Alphabetical order",desc:"Assure properties are in alphabetical order",browsers:"All",init:function(e,t){var n=this,r,i=function(){r=[]};e.addListener("startrule",i),e.addListener("startfontface",i),e.addListener("startpage",i),e.addListener("startpagemargin",i),e.addListener("startkeyframerule",i),e.addListener("property",function(e){var t=e.property.text,n=t.toLowerCase().replace(/^-.*?-/,"");r.push(n)}),e.addListener("endrule",function(e){var i=r.join(","),s=r.sort().join(",");i!==s&&t.report("Rule doesn't have all its properties in alphabetical ordered.",e.line,e.col,n)})}}),CSSLint.addRule({id:"outline-none",name:"Disallow outline: none",desc:"Use of outline: none or outline: 0 should be limited to :focus rules.",browsers:"All",tags:["Accessibility"],init:function(e,t){function i(e){e.selectors?r={line:e.line,col:e.col,selectors:e.selectors,propCount:0,outline:!1}:r=null}function s(){r&&r.outline&&(r.selectors.toString().toLowerCase().indexOf(":focus")===-1?t.report("Outlines should only be modified using :focus.",r.line,r.col,n):r.propCount===1&&t.report("Outlines shouldn't be hidden unless other visual changes are made.",r.line,r.col,n))}var n=this,r;e.addListener("startrule",i),e.addListener("startfontface",i),e.addListener("startpage",i),e.addListener("startpagemargin",i),e.addListener("startkeyframerule",i),e.addListener("property",function(e){var t=e.property.text.toLowerCase(),n=e.value;r&&(r.propCount++,t==="outline"&&(n.toString()==="none"||n.toString()==="0")&&(r.outline=!0))}),e.addListener("endrule",s),e.addListener("endfontface",s),e.addListener("endpage",s),e.addListener("endpagemargin",s),e.addListener("endkeyframerule",s)}}),CSSLint.addRule({id:"overqualified-elements",name:"Disallow overqualified elements",desc:"Don't use classes or IDs with elements (a.foo or a#foo).",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("startrule",function(i){var s=i.selectors,o,u,a,f,l,c;for(f=0;f<s.length;f++){o=s[f];for(l=0;l<o.parts.length;l++){u=o.parts[l];if(u.type===e.SELECTOR_PART_TYPE)for(c=0;c<u.modifiers.length;c++)a=u.modifiers[c],u.elementName&&a.type==="id"?t.report("Element ("+u+") is overqualified, just use "+a+" without element name.",u.line,u.col,n):a.type==="class"&&(r[a]||(r[a]=[]),r[a].push({modifier:a,part:u}))}}}),e.addListener("endstylesheet",function(){var e;for(e in r)r.hasOwnProperty(e)&&r[e].length===1&&r[e][0].part.elementName&&t.report("Element ("+r[e][0].part+") is overqualified, just use "+r[e][0].modifier+" without element name.",r[e][0].part.line,r[e][0].part.col,n)})}}),CSSLint.addRule({id:"qualified-headings",name:"Disallow qualified headings",desc:"Headings should not be qualified (namespaced).",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a;for(u=0;u<i.length;u++){s=i[u];for(a=0;a<s.parts.length;a++)o=s.parts[a],o.type===e.SELECTOR_PART_TYPE&&o.elementName&&/h[1-6]/.test(o.elementName.toString())&&a>0&&t.report("Heading ("+o.elementName+") should not be qualified.",o.line,o.col,n)}})}}),CSSLint.addRule({id:"regex-selectors",name:"Disallow selectors that look like regexs",desc:"Selectors that look like regular expressions are slow and should be avoided.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a];for(f=0;f<s.parts.length;f++){o=s.parts[f];if(o.type===e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type==="attribute"&&/([\~\|\^\$\*]=)/.test(u)&&t.report("Attribute selectors with "+RegExp.$1+" are slow!",u.line,u.col,n)}}})}}),CSSLint.addRule({id:"rules-count",name:"Rules Count",desc:"Track how many rules there are.",browsers:"All",init:function(e,t){var n=0;e.addListener("startrule",function(){n++}),e.addListener("endstylesheet",function(){t.stat("rule-count",n)})}}),CSSLint.addRule({id:"selector-max-approaching",name:"Warn when approaching the 4095 selector limit for IE",desc:"Will warn when selector count is >= 3800 selectors.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>=3800&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"selector-max",name:"Error when past the 4095 selector limit for IE",desc:"Will error when selector count is > 4095.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>4095&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"selector-newline",name:"Disallow new-line characters in selectors",desc:"New-line characters in selectors are usually a forgotten comma and not a descendant combinator.",browsers:"All",init:function(e,t){function r(e){var r,i,s,o,u,a,f,l,c,h,p,d=e.selectors;for(r=0,i=d.length;r<i;r++){s=d[r];for(o=0,a=s.parts.length;o<a;o++)for(u=o+1;u<a;u++)f=s.parts[o],l=s.parts[u],c=f.type,h=f.line,p=l.line,c==="descendant"&&p>h&&t.report("newline character found in selector (forgot a comma?)",h,d[r].parts[0].col,n)}}var n=this;e.addListener("startrule",r)}}),CSSLint.addRule({id:"shorthand",name:"Require shorthand properties",desc:"Use shorthand properties where possible.",browsers:"All",init:function(e,t){function f(){u={}}function l(e){var r,i,s,o;for(r in a)if(a.hasOwnProperty(r)){o=0;for(i=0,s=a[r].length;i<s;i++)o+=u[a[r][i]]?1:0;o===a[r].length&&t.report("The properties "+a[r].join(", ")+" can be replaced by "+r+".",e.line,e.col,n)}}var n=this,r,i,s,o={},u,a={margin:["margin-top","margin-bottom","margin-left","margin-right"],padding:["padding-top","padding-bottom","padding-left","padding-right"]};for(r in a)if(a.hasOwnProperty(r))for(i=0,s=a[r].length;i<s;i++)o[a[r][i]]=r;e.addListener("startrule",f),e.addListener("startfontface",f),e.addListener("property",function(e){var t=e.property.toString().toLowerCase();o[t]&&(u[t]=1)}),e.addListener("endrule",l),e.addListener("endfontface",l)}}),CSSLint.addRule({id:"star-property-hack",name:"Disallow properties with a star prefix",desc:"Checks for the star property hack (targets IE6/7)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack==="*"&&t.report("Property with star prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"text-indent",name:"Disallow negative text-indent",desc:"Checks for text indent less than -99px",browsers:"All",init:function(e,t){function s(){r=!1,i="inherit"}function o(){r&&i!=="ltr"&&t.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.",r.line,r.col,n)}var n=this,r,i;e.addListener("startrule",s),e.addListener("startfontface",s),e.addListener("property",function(e){var t=e.property.toString().toLowerCase(),n=e.value;t==="text-indent"&&n.parts[0].value<-99?r=e.property:t==="direction"&&n.toString()==="ltr"&&(i="ltr")}),e.addListener("endrule",o),e.addListener("endfontface",o)}}),CSSLint.addRule({id:"underscore-property-hack",name:"Disallow properties with an underscore prefix",desc:"Checks for the underscore property hack (targets IE6)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack==="_"&&t.report("Property with underscore prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"unique-headings",name:"Headings should only be defined once",desc:"Headings should be defined only once.",browsers:"All",init:function(e,t){var n=this,r={h1:0,h2:0,h3:0,h4:0,h5:0,h6:0};e.addListener("startrule",function(e){var i=e.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.elementName&&/(h[1-6])/i.test(o.elementName.toString())){for(f=0;f<o.modifiers.length;f++)if(o.modifiers[f].type==="pseudo"){u=!0;break}u||(r[RegExp.$1]++,r[RegExp.$1]>1&&t.report("Heading ("+o.elementName+") has already been defined.",o.line,o.col,n))}}}),e.addListener("endstylesheet",function(){var e,i=[];for(e in r)r.hasOwnProperty(e)&&r[e]>1&&i.push(r[e]+" "+e+"s");i.length&&t.rollupWarn("You have "+i.join(", ")+" defined in this stylesheet.",n)})}}),CSSLint.addRule({id:"universal-selector",name:"Disallow universal selector",desc:"The universal selector (*) is known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(e){var r=e.selectors,i,s,o;for(o=0;o<r.length;o++)i=r[o],s=i.parts[i.parts.length-1],s.elementName==="*"&&t.report(n.desc,s.line,s.col,n)})}}),CSSLint.addRule({id:"unqualified-attributes",name:"Disallow unqualified attribute selectors",desc:"Unqualified attribute selectors are known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.type===e.SELECTOR_PART_TYPE)for(f=0;f<o.modifiers.length;f++)u=o.modifiers[f],u.type==="attribute"&&(!o.elementName||o.elementName==="*")&&t.report(n.desc,o.line,o.col,n)}})}}),CSSLint.addRule({id:"vendor-prefix",name:"Require standard property with vendor prefix",desc:"When using a vendor-prefixed property, make sure to include the standard one.",browsers:"All",init:function(e,t){function o(){r={},i=1}function u(){var e,i,o,u,a,f=[];for(e in r)s[e]&&f.push({actual:e,needed:s[e]});for(i=0,o=f.length;i<o;i++)u=f[i].needed,a=f[i].actual,r[u]?r[u][0].pos<r[a][0].pos&&t.report("Standard property '"+u+"' should come after vendor-prefixed property '"+a+"'.",r[a][0].name.line,r[a][0].name.col,n):t.report("Missing standard property '"+u+"' to go along with '"+a+"'.",r[a][0].name.line,r[a][0].name.col,n)}var n=this,r,i,s={"-webkit-border-radius":"border-radius","-webkit-border-top-left-radius":"border-top-left-radius","-webkit-border-top-right-radius":"border-top-right-radius","-webkit-border-bottom-left-radius":"border-bottom-left-radius","-webkit-border-bottom-right-radius":"border-bottom-right-radius","-o-border-radius":"border-radius","-o-border-top-left-radius":"border-top-left-radius","-o-border-top-right-radius":"border-top-right-radius","-o-border-bottom-left-radius":"border-bottom-left-radius","-o-border-bottom-right-radius":"border-bottom-right-radius","-moz-border-radius":"border-radius","-moz-border-radius-topleft":"border-top-left-radius","-moz-border-radius-topright":"border-top-right-radius","-moz-border-radius-bottomleft":"border-bottom-left-radius","-moz-border-radius-bottomright":"border-bottom-right-radius","-moz-column-count":"column-count","-webkit-column-count":"column-count","-moz-column-gap":"column-gap","-webkit-column-gap":"column-gap","-moz-column-rule":"column-rule","-webkit-column-rule":"column-rule","-moz-column-rule-style":"column-rule-style","-webkit-column-rule-style":"column-rule-style","-moz-column-rule-color":"column-rule-color","-webkit-column-rule-color":"column-rule-color","-moz-column-rule-width":"column-rule-width","-webkit-column-rule-width":"column-rule-width","-moz-column-width":"column-width","-webkit-column-width":"column-width","-webkit-column-span":"column-span","-webkit-columns":"columns","-moz-box-shadow":"box-shadow","-webkit-box-shadow":"box-shadow","-moz-transform":"transform","-webkit-transform":"transform","-o-transform":"transform","-ms-transform":"transform","-moz-transform-origin":"transform-origin","-webkit-transform-origin":"transform-origin","-o-transform-origin":"transform-origin","-ms-transform-origin":"transform-origin","-moz-box-sizing":"box-sizing","-webkit-box-sizing":"box-sizing"};e.addListener("startrule",o),e.addListener("startfontface",o),e.addListener("startpage",o),e.addListener("startpagemargin",o),e.addListener("startkeyframerule",o),e.addListener("property",function(e){var t=e.property.text.toLowerCase();r[t]||(r[t]=[]),r[t].push({name:e.property,value:e.value,pos:i++})}),e.addListener("endrule",u),e.addListener("endfontface",u),e.addListener("endpage",u),e.addListener("endpagemargin",u),e.addListener("endkeyframerule",u)}}),CSSLint.addRule({id:"zero-units",name:"Disallow units for 0 values",desc:"You don't need to specify units when a value is 0.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.value.parts,i=0,s=r.length;while(i<s)(r[i].units||r[i].type==="percentage")&&r[i].value===0&&r[i].type!=="time"&&t.report("Values of 0 shouldn't have units specified.",r[i].line,r[i].col,n),i++})}}),function(){var e=function(e){return!e||e.constructor!==String?"":e.replace(/[\"&><]/g,function(e){switch(e){case'"':return"&quot;";case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;"}})};CSSLint.addFormatter({id:"checkstyle-xml",name:"Checkstyle XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><checkstyle>'},endFormat:function(){return"</checkstyle>"},readError:function(t,n){return'<file name="'+e(t)+'"><error line="0" column="0" severty="error" message="'+e(n)+'"></error></file>'},formatResults:function(t,n){var r=t.messages,i=[],s=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""};return r.length>0&&(i.push('<file name="'+n+'">'),CSSLint.Util.forEach(r,function(t){t.rollup||i.push('<error line="'+t.line+'" column="'+t.col+'" severity="'+t.type+'"'+' message="'+e(t.message)+'" source="'+s(t.rule)+'"/>')}),i.push("</file>")),i.join("")}})}(),CSSLint.addFormatter({id:"compact",name:"Compact, 'porcelain' format",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};var s=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};return r.length===0?n.quiet?"":t+": Lint Free!":(CSSLint.Util.forEach(r,function(e){e.rollup?i+=t+": "+s(e.type)+" - "+e.message+"\n":i+=t+": "+"line "+e.line+", col "+e.col+", "+s(e.type)+" - "+e.message+" ("+e.rule.id+")\n"}),i)}}),CSSLint.addFormatter({id:"csslint-xml",name:"CSSLint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><csslint>'},endFormat:function(){return"</csslint>"},formatResults:function(e,t){var n=e.messages,r=[],i=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return n.length>0&&(r.push('<file name="'+t+'">'),CSSLint.Util.forEach(n,function(e){e.rollup?r.push('<issue severity="'+e.type+'" reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>'):r.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>')}),r.push("</file>")),r.join("")}}),CSSLint.addFormatter({id:"junit-xml",name:"JUNIT XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><testsuites>'},endFormat:function(){return"</testsuites>"},formatResults:function(e,t){var n=e.messages,r=[],i={error:0,failure:0},s=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""},o=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return n.length>0&&(n.forEach(function(e){var t=e.type==="warning"?"error":e.type;e.rollup||(r.push('<testcase time="0" name="'+s(e.rule)+'">'),r.push("<"+t+' message="'+o(e.message)+'"><![CDATA['+e.line+":"+e.col+":"+o(e.evidence)+"]]></"+t+">"),r.push("</testcase>"),i[t]+=1)}),r.unshift('<testsuite time="0" tests="'+n.length+'" skipped="0" errors="'+i.error+'" failures="'+i.failure+'" package="net.csslint" name="'+t+'">'),r.push("</testsuite>")),r.join("")}}),CSSLint.addFormatter({id:"lint-xml",name:"Lint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><lint>'},endFormat:function(){return"</lint>"},formatResults:function(e,t){var n=e.messages,r=[],i=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")};return n.length>0&&(r.push('<file name="'+t+'">'),CSSLint.Util.forEach(n,function(e){e.rollup?r.push('<issue severity="'+e.type+'" reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>'):r.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+i(e.message)+'" evidence="'+i(e.evidence)+'"/>')}),r.push("</file>")),r.join("")}}),CSSLint.addFormatter({id:"text",name:"Plain Text",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};if(r.length===0)return n.quiet?"":"\n\ncsslint: No errors in "+t+".";i="\n\ncsslint: There ",r.length===1?i+="is 1 problem":i+="are "+r.length+" problems",i+=" in "+t+".";var s=t.lastIndexOf("/"),o=t;return s===-1&&(s=t.lastIndexOf("\\")),s>-1&&(o=t.substring(s+1)),CSSLint.Util.forEach(r,function(e,t){i=i+"\n\n"+o,e.rollup?(i+="\n"+(t+1)+": "+e.type,i+="\n"+e.message):(i+="\n"+(t+1)+": "+e.type+" at line "+e.line+", col "+e.col,i+="\n"+e.message,i+="\n"+e.evidence)}),i}}),module.exports.CSSLint=CSSLint}),ace.define("ace/mode/css_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/css/csslint"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./css/csslint").CSSLint,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.ruleset=null,this.setDisabledRules("ids|order-alphabetical"),this.setInfoRules("adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none|vendor-prefix")};r.inherits(u,s),function(){this.setInfoRules=function(e){typeof e=="string"&&(e=e.split("|")),this.infoRules=i.arrayToMap(e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.setDisabledRules=function(e){if(!e)this.ruleset=null;else{typeof e=="string"&&(e=e.split("|"));var t={};o.getRules().forEach(function(e){t[e.id]=!0}),e.forEach(function(e){delete t[e]}),this.ruleset=t}this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return this.sender.emit("annotate",[]);var t=this.infoRules,n=o.verify(e,this.ruleset);this.sender.emit("annotate",n.messages.map(function(e){return{row:e.line-1,column:e.col-1,text:e.message,type:t[e.rule.id]?"info":e.type,rule:e.rule.name}}))}}.call(u.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-html.js b/js/ace/worker-html.js
new file mode 100644
index 0000000..403af17
--- /dev/null
+++ b/js/ace/worker-html.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/html/saxparser",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){function r(e){if(e.namespaceURI==="http://www.w3.org/1999/xhtml")return e.localName==="applet"||e.localName==="caption"||e.localName==="marquee"||e.localName==="object"||e.localName==="table"||e.localName==="td"||e.localName==="th";if(e.namespaceURI==="http://www.w3.org/1998/Math/MathML")return e.localName==="mi"||e.localName==="mo"||e.localName==="mn"||e.localName==="ms"||e.localName==="mtext"||e.localName==="annotation-xml";if(e.namespaceURI==="http://www.w3.org/2000/svg")return e.localName==="foreignObject"||e.localName==="desc"||e.localName==="title"}function i(e){return r(e)||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="ol"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="ul"}function s(e){return e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="table"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="html"}function o(e){return e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="tbody"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="tfoot"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="thead"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="html"}function u(e){return e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="tr"||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="html"}function a(e){return r(e)||e.namespaceURI==="http://www.w3.org/1999/xhtml"&&e.localName==="button"}function f(e){return(e.namespaceURI!=="http://www.w3.org/1999/xhtml"||e.localName!=="optgroup")&&(e.namespaceURI!=="http://www.w3.org/1999/xhtml"||e.localName!=="option")}function l(){this.elements=[],this.rootNode=null,this.headElement=null,this.bodyElement=null}l.prototype._inScope=function(e,t){for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.localName===e)return!0;if(t(r))return!1}},l.prototype.push=function(e){this.elements.push(e)},l.prototype.pushHtmlElement=function(e){this.rootNode=e.node,this.push(e)},l.prototype.pushHeadElement=function(e){this.headElement=e.node,this.push(e)},l.prototype.pushBodyElement=function(e){this.bodyElement=e.node,this.push(e)},l.prototype.pop=function(){return this.elements.pop()},l.prototype.remove=function(e){this.elements.splice(this.elements.indexOf(e),1)},l.prototype.popUntilPopped=function(e){var t;do t=this.pop();while(t.localName!=e)},l.prototype.popUntilTableScopeMarker=function(){while(!s(this.top))this.pop()},l.prototype.popUntilTableBodyScopeMarker=function(){while(!o(this.top))this.pop()},l.prototype.popUntilTableRowScopeMarker=function(){while(!u(this.top))this.pop()},l.prototype.item=function(e){return this.elements[e]},l.prototype.contains=function(e){return this.elements.indexOf(e)!==-1},l.prototype.inScope=function(e){return this._inScope(e,r)},l.prototype.inListItemScope=function(e){return this._inScope(e,i)},l.prototype.inTableScope=function(e){return this._inScope(e,s)},l.prototype.inButtonScope=function(e){return this._inScope(e,a)},l.prototype.inSelectScope=function(e){return this._inScope(e,f)},l.prototype.hasNumberedHeaderElementInScope=function(){for(var e=this.elements.length-1;e>=0;e--){var t=this.elements[e];if(t.isNumberedHeader())return!0;if(r(t))return!1}},l.prototype.furthestBlockForFormattingElement=function(e){var t=null;for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.node===e)break;r.isSpecial()&&(t=r)}return t},l.prototype.findIndex=function(e){for(var t=this.elements.length-1;t>=0;t--)if(this.elements[t].localName==e)return t;return-1},l.prototype.remove_openElements_until=function(e){var t=!1,n;while(!t)n=this.elements.pop(),t=e(n);return n},Object.defineProperty(l.prototype,"top",{get:function(){return this.elements[this.elements.length-1]}}),Object.defineProperty(l.prototype,"length",{get:function(){return this.elements.length}}),n.ElementStack=l},{}],2:[function(e,t,n){function o(e){return e>="0"&&e<="9"||e>="a"&&e<="z"||e>="A"&&e<="Z"}function u(e){return e>="0"&&e<="9"||e>="a"&&e<="f"||e>="A"&&e<="F"}function a(e){return e>="0"&&e<="9"}var r=e("html5-entities"),i=e("./InputStream").InputStream,s={};Object.keys(r).forEach(function(e){for(var t=0;t<e.length;t++)s[e.substring(0,t+1)]=!0});var f={};f.consumeEntity=function(e,t,n){var f="",l="",c=e.char();if(c===i.EOF)return!1;l+=c;if(c=="	"||c=="\n"||c==""||c==" "||c=="<"||c=="&")return e.unget(l),!1;if(n===c)return e.unget(l),!1;if(c=="#"){c=e.shift(1);if(c===i.EOF)return t._parseError("expected-numeric-entity-but-got-eof"),e.unget(l),!1;l+=c;var h=10,p=a;if(c=="x"||c=="X"){h=16,p=u,c=e.shift(1);if(c===i.EOF)return t._parseError("expected-numeric-entity-but-got-eof"),e.unget(l),!1;l+=c}if(p(c)){var d="";while(c!==i.EOF&&p(c))d+=c,c=e.char();d=parseInt(d,h);var v=this.replaceEntityNumbers(d);v&&(t._parseError("invalid-numeric-entity-replaced"),d=v);if(d>65535&&d<=1114111){d-=65536;var m=((1047552&d)>>10)+55296,g=(1023&d)+56320;f=String.fromCharCode(m,g)}else f=String.fromCharCode(d);return c!==";"&&(t._parseError("numeric-entity-without-semicolon"),e.unget(c)),f}return e.unget(l),t._parseError("expected-numeric-entity"),!1}if(c>="a"&&c<="z"||c>="A"&&c<="Z"){var y="";while(s[l]){r[l]&&(y=l);if(c==";")break;c=e.char();if(c===i.EOF)break;l+=c}return y?(f=r[y],c===";"||!n||!o(c)&&c!=="="?(l.length>y.length&&e.unget(l.substring(y.length)),c!==";"&&t._parseError("named-entity-without-semicolon"),f):(e.unget(l),!1)):(t._parseError("expected-named-entity"),e.unget(l),!1)}},f.replaceEntityNumbers=function(e){switch(e){case 0:return 65533;case 19:return 16;case 128:return 8364;case 129:return 129;case 130:return 8218;case 131:return 402;case 132:return 8222;case 133:return 8230;case 134:return 8224;case 135:return 8225;case 136:return 710;case 137:return 8240;case 138:return 352;case 139:return 8249;case 140:return 338;case 141:return 141;case 142:return 381;case 143:return 143;case 144:return 144;case 145:return 8216;case 146:return 8217;case 147:return 8220;case 148:return 8221;case 149:return 8226;case 150:return 8211;case 151:return 8212;case 152:return 732;case 153:return 8482;case 154:return 353;case 155:return 8250;case 156:return 339;case 157:return 157;case 158:return 382;case 159:return 376;default:if(e>=55296&&e<=57343||e>1114111)return 65533;if(e>=1&&e<=8||e>=14&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||e==11||e==65534||e==131070||e==3145726||e==196607||e==262142||e==262143||e==327678||e==327679||e==393214||e==393215||e==458750||e==458751||e==524286||e==524287||e==589822||e==589823||e==655358||e==655359||e==720894||e==720895||e==786430||e==786431||e==851966||e==851967||e==917502||e==917503||e==983038||e==983039||e==1048574||e==1048575||e==1114110||e==1114111)return e}},n.EntityParser=f},{"./InputStream":3,"html5-entities":12}],3:[function(e,t,n){function r(){this.data="",this.start=0,this.committed=0,this.eof=!1,this.lastLocation={line:0,column:0}}r.EOF=-1,r.DRAIN=-2,r.prototype={slice:function(){if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}return this.data.slice(this.start,this.data.length)},"char":function(){if(!this.eof&&this.start>=this.data.length-1)throw r.DRAIN;if(this.start>=this.data.length)return r.EOF;var e=this.data[this.start++];return e==="\r"&&(e="\n"),e},advance:function(e){this.start+=e;if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}this.committed>this.data.length/2&&(this.lastLocation=this.location(),this.data=this.data.slice(this.committed),this.start=this.start-this.committed,this.committed=0)},matchWhile:function(e){if(this.eof&&this.start>=this.data.length)return"";var t=new RegExp("^"+e+"+"),n=t.exec(this.slice());if(n){if(!this.eof&&n[0].length==this.data.length-this.start)throw r.DRAIN;return this.advance(n[0].length),n[0]}return""},matchUntil:function(e){var t,n;n=this.slice();if(n===r.EOF)return"";if(t=(new RegExp(e+(this.eof?"|$":""))).exec(n)){var i=this.data.slice(this.start,this.start+t.index);return this.advance(t.index),i.replace(/\r/g,"\n").replace(/\n{2,}/g,"\n")}throw r.DRAIN},append:function(e){this.data+=e},shift:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;if(this.eof&&this.start>=this.data.length)return r.EOF;var t=this.data.slice(this.start,this.start+e).toString();return this.advance(Math.min(e,this.data.length-this.start)),t},peek:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;return this.eof&&this.start>=this.data.length?r.EOF:this.data.slice(this.start,Math.min(this.start+e,this.data.length)).toString()},length:function(){return this.data.length-this.start-1},unget:function(e){if(e===r.EOF)return;this.start-=e.length},undo:function(){this.start=this.committed},commit:function(){this.committed=this.start},location:function(){var e=this.lastLocation.line,t=this.lastLocation.column,n=this.data.slice(0,this.committed),r=n.match(/\n/g),i=r?e+r.length:e,s=r?n.length-n.lastIndexOf("\n")-1:t+n.length;return{line:i,column:s}}},n.InputStream=r},{}],4:[function(e,t,n){function i(e,t,n,r){this.localName=t,this.namespaceURI=e,this.attributes=n,this.node=r}function s(e,t){for(var n=0;n<e.attributes.length;n++)if(e.attributes[n].nodeName==t)return e.attributes[n].nodeValue;return null}var r={"http://www.w3.org/1999/xhtml":["address","applet","area","article","aside","base","basefont","bgsound","blockquote","body","br","button","caption","center","col","colgroup","dd","details","dir","div","dl","dt","embed","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","img","input","isindex","li","link","listing","main","marquee","menu","menuitem","meta","nav","noembed","noframes","noscript","object","ol","p","param","plaintext","pre","script","section","select","source","style","summary","table","tbody","td","textarea","tfoot","th","thead","title","tr","track","ul","wbr","xmp"],"http://www.w3.org/1998/Math/MathML":["mi","mo","mn","ms","mtext","annotation-xml"],"http://www.w3.org/2000/svg":["foreignObject","desc","title"]};i.prototype.isSpecial=function(){return this.namespaceURI in r&&r[this.namespaceURI].indexOf(this.localName)>-1},i.prototype.isFosterParenting=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="table"||this.localName==="tbody"||this.localName==="tfoot"||this.localName==="thead"||this.localName==="tr":!1},i.prototype.isNumberedHeader=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="h1"||this.localName==="h2"||this.localName==="h3"||this.localName==="h4"||this.localName==="h5"||this.localName==="h6":!1},i.prototype.isForeign=function(){return this.namespaceURI!="http://www.w3.org/1999/xhtml"},i.prototype.isHtmlIntegrationPoint=function(){if(this.namespaceURI==="http://www.w3.org/1998/Math/MathML"){if(this.localName!=="annotation-xml")return!1;var e=s(this,"encoding");return e?(e=e.toLowerCase(),e==="text/html"||e==="application/xhtml+xml"):!1}return this.namespaceURI==="http://www.w3.org/2000/svg"?this.localName==="foreignObject"||this.localName==="desc"||this.localName==="title":!1},i.prototype.isMathMLTextIntegrationPoint=function(){return this.namespaceURI==="http://www.w3.org/1998/Math/MathML"?this.localName==="mi"||this.localName==="mo"||this.localName==="mn"||this.localName==="ms"||this.localName==="mtext":!1},n.StackItem=i},{}],5:[function(e,t,n){function s(e){return e===" "||e==="\n"||e==="	"||e==="\r"||e==="\f"}function o(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function u(e){this._tokenHandler=e,this._state=u.DATA,this._inputStream=new r,this._currentToken=null,this._temporaryBuffer="",this._additionalAllowedCharacter=""}var r=e("./InputStream").InputStream,i=e("./EntityParser").EntityParser;u.prototype._parseError=function(e,t){this._tokenHandler.parseError(e,t)},u.prototype._emitToken=function(e){if(e.type==="StartTag")for(var t=1;t<e.data.length;t++)e.data[t].nodeName||e.data.splice(t--,1);else e.type==="EndTag"&&(e.selfClosing&&this._parseError("self-closing-flag-on-end-tag"),e.data.length!==0&&this._parseError("attributes-in-end-tag"));this._tokenHandler.processToken(e),e.type==="StartTag"&&e.selfClosing&&!this._tokenHandler.isSelfClosingFlagAcknowledged()&&this._parseError("non-void-element-with-trailing-solidus",{name:e.name})},u.prototype._emitCurrentToken=function(){this._state=u.DATA,this._emitToken(this._currentToken)},u.prototype._currentAttribute=function(){return this._currentToken.data[this._currentToken.data.length-1]},u.prototype.setState=function(e){this._state=e},u.prototype.tokenize=function(e){function n(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="&")t.setState(a);else if(n==="<")t.setState(j);else if(n==="\0")t._emitToken({type:"Characters",data:n}),e.commit();else{var i=e.matchUntil("&|<|\0");t._emitToken({type:"Characters",data:n+i}),e.commit()}return!0}function a(e){var r=i.consumeEntity(e,t);return t.setState(n),t._emitToken({type:"Characters",data:r||"&"}),!0}function f(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="&")t.setState(l);else if(n==="<")t.setState(d);else if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("&|<|\0");t._emitToken({type:"Characters",data:n+i}),e.commit()}return!0}function l(e){var n=i.consumeEntity(e,t);return t.setState(f),t._emitToken({type:"Characters",data:n||"&"}),!0}function c(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="<")t.setState(g);else if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("<|\0");t._emitToken({type:"Characters",data:n+i})}return!0}function h(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("\0");t._emitToken({type:"Characters",data:n+i})}return!0}function p(e){var n=e.char();if(n===r.EOF)return t._emitToken({type:"EOF",data:null}),!1;if(n==="<")t.setState(w);else if(n==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var i=e.matchUntil("<|\0");t._emitToken({type:"Characters",data:n+i})}return!0}function d(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(v)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(f)),!0}function v(e){var n=e.char();return o(n)?(this._temporaryBuffer+=n,t.setState(m)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(f)),!0}function m(e){var r=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),i=e.char();return s(i)&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(q)):i==="/"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(K)):i===">"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t._emitCurrentToken(),t.setState(n)):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(i),t.setState(f)),!0}function g(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(y)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(c)),!0}function y(e){var n=e.char();return o(n)?(this._temporaryBuffer+=n,t.setState(b)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(c)),!0}function b(e){var r=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),i=e.char();return s(i)&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(q)):i==="/"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t.setState(K)):i===">"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t._emitCurrentToken(),t.setState(n)):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(i),t.setState(c)),!0}function w(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(E)):n==="!"?(t._emitToken({type:"Characters",data:"<!"}),t.setState(x)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(p)),!0}function E(e){var n=e.char();return o(n)?(this._temporaryBuffer+=n,t.setState(S)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(p)),!0}function S(e){var n=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),r=e.char();return s(r)&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(q)):r==="/"&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(K)):r===">"&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t._emitCurrentToken()):o(r)?(this._temporaryBuffer+=r,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(r),t.setState(p)),!0}function x(e){var n=e.char();return n==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(T)):(e.unget(n),t.setState(p)),!0}function T(e){var n=e.char();return n==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(k)):(e.unget(n),t.setState(p)),!0}function N(e){var i=e.char();if(i===r.EOF)e.unget(i),t.setState(n);else if(i==="-")t._emitToken({type:"Characters",data:"-"}),t.setState(C);else if(i==="<")t.setState(L);else if(i==="\0")t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit();else{var s=e.matchUntil("<|-|\0");t._emitToken({type:"Characters",data:i+s})}return!0}function C(e){var i=e.char();return i===r.EOF?(e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(k)):i==="<"?t.setState(L):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(N)):(t._emitToken({type:"Characters",data:i}),t.setState(N)),!0}function k(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="<"?t.setState(L):i===">"?(t._emitToken({type:"Characters",data:">"}),t.setState(p)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(N)):(t._emitToken({type:"Characters",data:i}),t.setState(N)),!0}function L(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(A)):o(n)?(t._emitToken({type:"Characters",data:"<"+n}),this._temporaryBuffer=n,t.setState(M)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(N)),!0}function A(e){var n=e.char();return o(n)?(this._temporaryBuffer=n,t.setState(O)):(t._emitToken({type:"Characters",data:"</"}),e.unget(n),t.setState(N)),!0}function O(e){var r=t._currentToken&&t._currentToken.name===this._temporaryBuffer.toLowerCase(),i=e.char();return s(i)&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(q)):i==="/"&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(K)):i===">"&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(n),t._emitCurrentToken()):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:"</"+this._temporaryBuffer}),e.unget(i),t.setState(N)),!0}function M(e){var n=e.char();return s(n)||n==="/"||n===">"?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer.toLowerCase()==="script"?t.setState(_):t.setState(N)):o(n)?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer+=n,e.commit()):(e.unget(n),t.setState(N)),!0}function _(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(D)):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit()):(t._emitToken({type:"Characters",data:i}),e.commit()),!0}function D(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(P)):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(_)):(t._emitToken({type:"Characters",data:i}),t.setState(_)),!0}function P(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),e.commit()):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i===">"?(t._emitToken({type:"Characters",data:">"}),t.setState(p)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(_)):(t._emitToken({type:"Characters",data:i}),t.setState(_)),!0}function H(e){var n=e.char();return n==="/"?(t._emitToken({type:"Characters",data:"/"}),this._temporaryBuffer="",t.setState(B)):(e.unget(n),t.setState(_)),!0}function B(e){var n=e.char();return s(n)||n==="/"||n===">"?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer.toLowerCase()==="script"?t.setState(N):t.setState(_)):o(n)?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer+=n,e.commit()):(e.unget(n),t.setState(_)),!0}function j(e){var i=e.char();return i===r.EOF?(t._parseError("bare-less-than-sign-at-eof"),t._emitToken({type:"Characters",data:"<"}),e.unget(i),t.setState(n)):o(i)?(t._currentToken={type:"StartTag",name:i.toLowerCase(),data:[]},t.setState(I)):i==="!"?t.setState(G):i==="/"?t.setState(F):i===">"?(t._parseError("expected-tag-name-but-got-right-bracket"),t._emitToken({type:"Characters",data:"<>"}),t.setState(n)):i==="?"?(t._parseError("expected-tag-name-but-got-question-mark"),e.unget(i),t.setState(Q)):(t._parseError("expected-tag-name"),t._emitToken({type:"Characters",data:"<"}),e.unget(i),t.setState(n)),!0}function F(e){var i=e.char();return i===r.EOF?(t._parseError("expected-closing-tag-but-got-eof"),t._emitToken({type:"Characters",data:"</"}),e.unget(i),t.setState(n)):o(i)?(t._currentToken={type:"EndTag",name:i.toLowerCase(),data:[]},t.setState(I)):i===">"?(t._parseError("expected-closing-tag-but-got-right-bracket"),t.setState(n)):(t._parseError("expected-closing-tag-but-got-char",{data:i}),e.unget(i),t.setState(Q)),!0}function I(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-tag-name"),e.unget(i),t.setState(n)):s(i)?t.setState(q):o(i)?t._currentToken.name+=i.toLowerCase():i===">"?t._emitCurrentToken():i==="/"?t.setState(K):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.name+="\ufffd"):t._currentToken.name+=i,e.commit(),!0}function q(e){var i=e.char();if(i===r.EOF)t._parseError("expected-attribute-name-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;o(i)?(t._currentToken.data.push({nodeName:i.toLowerCase(),nodeValue:""}),t.setState(R)):i===">"?t._emitCurrentToken():i==="/"?t.setState(K):i==="'"||i==='"'||i==="="||i==="<"?(t._parseError("invalid-character-in-attribute-name"),t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data.push({nodeName:"\ufffd",nodeValue:""})):(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R))}return!0}function R(e){var i=e.char(),u=!0,a=!1;i===r.EOF?(t._parseError("eof-in-attribute-name"),e.unget(i),t.setState(n),a=!0):i==="="?t.setState(z):o(i)?(t._currentAttribute().nodeName+=i.toLowerCase(),u=!1):i===">"?a=!0:s(i)?t.setState(U):i==="/"?t.setState(K):i==="'"||i==='"'?(t._parseError("invalid-character-in-attribute-name"),t._currentAttribute().nodeName+=i,u=!1):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeName+="\ufffd"):(t._currentAttribute().nodeName+=i,u=!1);if(u){var f=t._currentToken.data,l=f[f.length-1];for(var c=f.length-2;c>=0;c--)if(l.nodeName===f[c].nodeName){t._parseError("duplicate-attribute",{name:l.nodeName}),l.nodeName=null;break}a&&t._emitCurrentToken()}else e.commit();return!0}function U(e){var i=e.char();if(i===r.EOF)t._parseError("expected-end-of-tag-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;i==="="?t.setState(z):i===">"?t._emitCurrentToken():o(i)?(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="/"?t.setState(K):i==="'"||i==='"'||i==="<"?(t._parseError("invalid-character-after-attribute-name"),t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data.push({nodeName:"\ufffd",nodeValue:""})):(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R))}return!0}function z(e){var i=e.char();if(i===r.EOF)t._parseError("expected-attribute-value-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;i==='"'?t.setState(W):i==="&"?(t.setState(V),e.unget(i)):i==="'"?t.setState(X):i===">"?(t._parseError("expected-attribute-value-but-got-right-bracket"),t._emitCurrentToken()):i==="="||i==="<"||i==="`"?(t._parseError("unexpected-character-in-unquoted-attribute-value"),t._currentAttribute().nodeValue+=i,t.setState(V)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd"):(t._currentAttribute().nodeValue+=i,t.setState(V))}return!0}function W(e){var i=e.char();if(i===r.EOF)t._parseError("eof-in-attribute-value-double-quote"),e.unget(i),t.setState(n);else if(i==='"')t.setState(J);else if(i==="&")this._additionalAllowedCharacter='"',t.setState($);else if(i==="\0")t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd";else{var s=e.matchUntil('[\0"&]');i+=s,t._currentAttribute().nodeValue+=i}return!0}function X(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-attribute-value-single-quote"),e.unget(i),t.setState(n)):i==="'"?t.setState(J):i==="&"?(this._additionalAllowedCharacter="'",t.setState($)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd"):t._currentAttribute().nodeValue+=i+e.matchUntil("\0|['&]"),!0}function V(e){var i=e.char();if(i===r.EOF)t._parseError("eof-after-attribute-value"),e.unget(i),t.setState(n);else if(s(i))t.setState(q);else if(i==="&")this._additionalAllowedCharacter=">",t.setState($);else if(i===">")t._emitCurrentToken();else if(i==='"'||i==="'"||i==="="||i==="`"||i==="<")t._parseError("unexpected-character-in-unquoted-attribute-value"),t._currentAttribute().nodeValue+=i,e.commit();else if(i==="\0")t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd";else{var o=e.matchUntil("\0|[	\n\f \r&<>\"'=`]");o===r.EOF&&(t._parseError("eof-in-attribute-value-no-quotes"),t._emitCurrentToken()),e.commit(),t._currentAttribute().nodeValue+=i+o}return!0}function $(e){var n=i.consumeEntity(e,t,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=n||"&",this._additionalAllowedCharacter==='"'?t.setState(W):this._additionalAllowedCharacter==="'"?t.setState(X):this._additionalAllowedCharacter===">"&&t.setState(V),!0}function J(e){var i=e.char();return i===r.EOF?(t._parseError("eof-after-attribute-value"),e.unget(i),t.setState(n)):s(i)?t.setState(q):i===">"?(t.setState(n),t._emitCurrentToken()):i==="/"?t.setState(K):(t._parseError("unexpected-character-after-attribute-value"),e.unget(i),t.setState(q)),!0}function K(e){var i=e.char();return i===r.EOF?(t._parseError("unexpected-eof-after-solidus-in-tag"),e.unget(i),t.setState(n)):i===">"?(t._currentToken.selfClosing=!0,t.setState(n),t._emitCurrentToken()):(t._parseError("unexpected-character-after-solidus-in-tag"),e.unget(i),t.setState(q)),!0}function Q(e){var r=e.matchUntil(">");return r=r.replace(/\u0000/g,"\ufffd"),e.char(),t._emitToken({type:"Comment",data:r}),t.setState(n),!0}function G(e){var n=e.shift(2);if(n==="--")t._currentToken={type:"Comment",data:""},t.setState(Z);else{var i=e.shift(5);if(i===r.EOF||n===r.EOF)return t._parseError("expected-dashes-or-doctype"),t.setState(Q),e.unget(n),!0;n+=i,n.toUpperCase()==="DOCTYPE"?(t._currentToken={type:"Doctype",name:"",publicId:null,systemId:null,forceQuirks:!1},t.setState(st)):t._tokenHandler.isCdataSectionAllowed()&&n==="[CDATA["?t.setState(Y):(t._parseError("expected-dashes-or-doctype"),e.unget(n),t.setState(Q))}return!0}function Y(e){var r=e.matchUntil("]]>");return e.shift(3),r&&t._emitToken({type:"Characters",data:r}),t.setState(n),!0}function Z(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(et):i===">"?(t._parseError("incorrect-comment"),t._emitToken(t._currentToken),t.setState(n)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+=i,t.setState(tt)),!0}function et(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(rt):i===">"?(t._parseError("incorrect-comment"),t._emitToken(t._currentToken),t.setState(n)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+="-"+i,t.setState(tt)),!0}function tt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(nt):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+=i,e.commit()),!0}function nt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-end-dash"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(rt):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="-\ufffd",t.setState(tt)):(t._currentToken.data+="-"+i+e.matchUntil("\0|-"),e.char()),!0}function rt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-double-dash"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i===">"?(t._emitToken(t._currentToken),t.setState(n)):i==="!"?(t._parseError("unexpected-bang-after-double-dash-in-comment"),t.setState(it)):i==="-"?(t._parseError("unexpected-dash-after-double-dash-in-comment"),t._currentToken.data+=i):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="--\ufffd",t.setState(tt)):(t._parseError("unexpected-char-in-comment"),t._currentToken.data+="--"+i,t.setState(tt)),!0}function it(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-end-bang-state"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i===">"?(t._emitToken(t._currentToken),t.setState(n)):i==="-"?(t._currentToken.data+="--!",t.setState(nt)):(t._currentToken.data+="--!"+i,t.setState(tt)),!0}function st(e){var i=e.char();return i===r.EOF?(t._parseError("expected-doctype-name-but-got-eof"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(ot):(t._parseError("need-space-after-doctype"),e.unget(i),t.setState(ot)),!0}function ot(e){var i=e.char();return i===r.EOF?(t._parseError("expected-doctype-name-but-got-eof"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)||(i===">"?(t._parseError("expected-doctype-name-but-got-right-bracket"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):(o(i)&&(i=i.toLowerCase()),t._currentToken.name=i,t.setState(ut))),!0}function ut(e){var i=e.char();return i===r.EOF?(t._currentToken.forceQuirks=!0,e.unget(i),t._parseError("eof-in-doctype-name"),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(at):i===">"?(t.setState(n),t._emitCurrentToken()):(o(i)&&(i=i.toLowerCase()),t._currentToken.name+=i,e.commit()),!0}function at(e){var i=e.char();if(i===r.EOF)t._currentToken.forceQuirks=!0,e.unget(i),t._parseError("eof-in-doctype"),t.setState(n),t._emitCurrentToken();else if(!s(i))if(i===">")t.setState(n),t._emitCurrentToken();else{if(["p","P"].indexOf(i)>-1){var o=[["u","U"],["b","B"],["l","L"],["i","I"],["c","C"]],u=o.every(function(t){return i=e.char(),t.indexOf(i)>-1});if(u)return t.setState(ft),!0}else if(["s","S"].indexOf(i)>-1){var o=[["y","Y"],["s","S"],["t","T"],["e","E"],["m","M"]],u=o.every(function(t){return i=e.char(),t.indexOf(i)>-1});if(u)return t.setState(vt),!0}e.unget(i),t._currentToken.forceQuirks=!0,i===r.EOF?(t._parseError("eof-in-doctype"),e.unget(i),t.setState(n),t._emitCurrentToken()):(t._parseError("expected-space-or-right-bracket-in-doctype",{data:i}),t.setState(wt))}return!0}function ft(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(lt):i==="'"||i==='"'?(t._parseError("unexpected-char-in-doctype"),e.unget(i),t.setState(lt)):(e.unget(i),t.setState(lt)),!0}function lt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)||(i==='"'?(t._currentToken.publicId="",t.setState(ct)):i==="'"?(t._currentToken.publicId="",t.setState(ht)):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function ct(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):i==='"'?t.setState(pt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):t._currentToken.publicId+=i,!0}function ht(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):i==="'"?t.setState(pt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):t._currentToken.publicId+=i,!0}function pt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)?t.setState(dt):i===">"?(t.setState(n),t._emitCurrentToken()):i==='"'?(t._parseError("unexpected-char-in-doctype"),t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._parseError("unexpected-char-in-doctype"),t._currentToken.systemId="",t.setState(yt)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt)),!0}function dt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i===">"?(t._emitCurrentToken(),t.setState(n)):i==='"'?(t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._currentToken.systemId="",t.setState(yt)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function vt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)?t.setState(mt):i==="'"||i==='"'?(t._parseError("unexpected-char-in-doctype"),e.unget(i),t.setState(mt)):(e.unget(i),t.setState(mt)),!0}function mt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i==='"'?(t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._currentToken.systemId="",t.setState(yt)):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function gt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):i==='"'?t.setState(bt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):t._currentToken.systemId+=i,!0}function yt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):i==="'"?t.setState(bt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):t._currentToken.systemId+=i,!0}function bt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i===">"?(t._emitCurrentToken(),t.setState(n)):(t._parseError("unexpected-char-in-doctype"),t.setState(wt))),!0}function wt(e){var i=e.char();return i===r.EOF?(e.unget(i),t._emitCurrentToken(),t.setState(n)):i===">"&&(t._emitCurrentToken(),t.setState(n)),!0}u.DATA=n,u.RCDATA=f,u.RAWTEXT=c,u.SCRIPT_DATA=p,u.PLAINTEXT=h,this._state=u.DATA,this._inputStream.append(e),this._tokenHandler.startTokenization(this),this._inputStream.eof=!0;var t=this;while(this._state.call(this,this._inputStream));},Object.defineProperty(u.prototype,"lineNumber",{get:function(){return this._inputStream.location().line}}),Object.defineProperty(u.prototype,"columnNumber",{get:function(){return this._inputStream.location().column}}),n.Tokenizer=u},{"./EntityParser":2,"./InputStream":3}],6:[function(e,t,n){function c(e){return e===" "||e==="\n"||e==="	"||e==="\r"||e==="\f"}function h(e){return c(e)||e==="\ufffd"}function p(e){for(var t=0;t<e.length;t++){var n=e[t];if(!c(n))return!1}return!0}function d(e){for(var t=0;t<e.length;t++){var n=e[t];if(!h(n))return!1}return!0}function v(e,t){for(var n=0;n<e.attributes.length;n++){var r=e.attributes[n];if(r.nodeName===t)return r}return null}function m(e){this.characters=e,this.current=0,this.end=this.characters.length}function g(){this.tokenizer=null,this.errorHandler=null,this.scriptingEnabled=!1,this.document=null,this.head=null,this.form=null,this.openElements=new a,this.activeFormattingElements=[],this.insertionMode=null,this.insertionModeName="",this.originalInsertionMode="",this.inQuirksMode=!1,this.compatMode="no quirks",this.framesetOk=!0,this.redirectAttachToFosterParent=!1,this.selfClosingFlagAcknowledged=!1,this.context="",this.pendingTableCharacters=[],this.shouldSkipLeadingNewline=!1;var e=this,t=this.insertionModes={};t.base={end_tag_handlers:{"-default":"endTagOther"},start_tag_handlers:{"-default":"startTagOther"},processEOF:function(){e.generateImpliedEndTags(),e.openElements.length>2?e.parseError("expected-closing-tag-but-got-eof"):e.openElements.length==2&&e.openElements.item(1).localName!="body"?e.parseError("expected-closing-tag-but-got-eof"):e.context&&e.openElements.length>1},processComment:function(t){e.insertComment(t,e.currentStackItem().node)},processDoctype:function(t,n,r,i){e.parseError("unexpected-doctype")},processStartTag:function(e,t,n){if(this[this.start_tag_handlers[e]])this[this.start_tag_handlers[e]](e,t,n);else{if(!this[this.start_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.start_tag_handlers["-default"]](e,t,n)}},processEndTag:function(e){if(this[this.end_tag_handlers[e]])this[this.end_tag_handlers[e]](e);else{if(!this[this.end_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.end_tag_handlers["-default"]](e)}},startTagHtml:function(e,n){t.inBody.startTagHtml(e,n)}},t.initial=Object.create(t.base),t.initial.processEOF=function(){e.parseError("expected-doctype-but-got-eof"),this.anythingElse(),e.insertionMode.processEOF()},t.initial.processComment=function(t){e.insertComment(t,e.document)},t.initial.processDoctype=function(t,n,r,i){function s(e){return n.toLowerCase().indexOf(e)===0}e.insertDoctype(t||"",n||"",r||""),i||t!="html"||n!=null&&(["+//silmaril//dtd html pro v0r11 19970101//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//as//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//ietf//dtd html//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//spyglass//dtd html 2.0 extended//","-//sq//dtd html 2.0 hotmetal + extensions//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//","html"].some(s)||["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"].indexOf(n.toLowerCase())>-1||r==null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].some(s))||r!=null&&r.toLowerCase()=="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"?(e.compatMode="quirks",e.parseError("quirky-doctype")):n!=null&&(["-//w3c//dtd xhtml 1.0 transitional//","-//w3c//dtd xhtml 1.0 frameset//"].some(s)||r!=null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].indexOf(n.toLowerCase())>-1)?(e.compatMode="limited quirks",e.parseError("almost-standards-doctype")):n=="-//W3C//DTD HTML 4.0//EN"&&(r==null||r=="http://www.w3.org/TR/REC-html40/strict.dtd")||n=="-//W3C//DTD HTML 4.01//EN"&&(r==null||r=="http://www.w3.org/TR/html4/strict.dtd")||n=="-//W3C//DTD XHTML 1.0 Strict//EN"&&r=="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"||n=="-//W3C//DTD XHTML 1.1//EN"&&r=="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"||(r!=null&&r!="about:legacy-compat"||n!=null)&&e.parseError("unknown-doctype"),e.setInsertionMode("beforeHTML")},t.initial.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;e.parseError("expected-doctype-but-got-chars"),this.anythingElse(),e.insertionMode.processCharacters(t)},t.initial.processStartTag=function(t,n,r){e.parseError("expected-doctype-but-got-start-tag",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.initial.processEndTag=function(t){e.parseError("expected-doctype-but-got-end-tag",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t)},t.initial.anythingElse=function(){e.compatMode="quirks",e.setInsertionMode("beforeHTML")},t.beforeHTML=Object.create(t.base),t.beforeHTML.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},t.beforeHTML.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},t.beforeHTML.processComment=function(t){e.insertComment(t,e.document)},t.beforeHTML.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.beforeHTML.startTagHtml=function(t,n,r){e.insertHtmlElement(n),e.setInsertionMode("beforeHead")},t.beforeHTML.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.beforeHTML.processEndTag=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.beforeHTML.anythingElse=function(){e.insertHtmlElement(),e.setInsertionMode("beforeHead")},t.afterAfterBody=Object.create(t.base),t.afterAfterBody.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},t.afterAfterBody.processComment=function(t){e.insertComment(t,e.document)},t.afterAfterBody.processDoctype=function(e){t.inBody.processDoctype(e)},t.afterAfterBody.startTagHtml=function(e,n){t.inBody.startTagHtml(e,n)},t.afterAfterBody.startTagOther=function(t,n,r){e.parseError("unexpected-start-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},t.afterAfterBody.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},t.afterAfterBody.processCharacters=function(n){if(!p(n.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(n);t.inBody.processCharacters(n)},t.afterBody=Object.create(t.base),t.afterBody.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},t.afterBody.processComment=function(t){e.insertComment(t,e.openElements.rootNode)},t.afterBody.processCharacters=function(n){if(!p(n.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(n);t.inBody.processCharacters(n)},t.afterBody.processStartTag=function(t,n,r){e.parseError("unexpected-start-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},t.afterBody.endTagHtml=function(t){e.context?e.parseError("end-html-in-innerhtml"):e.setInsertionMode("afterAfterBody")},t.afterBody.endTagOther=function(t){e.parseError("unexpected-end-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},t.afterFrameset=Object.create(t.base),t.afterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoframes","-default":"startTagOther"},t.afterFrameset.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},t.afterFrameset.processCharacters=function(t){var n=t.takeRemaining(),r="";for(var i=0;i<n.length;i++){var s=n[i];c(s)&&(r+=s)}r&&e.insertText(r),r.length<n.length&&e.parseError("expected-eof-but-got-char")},t.afterFrameset.startTagNoframes=function(e,n){t.inHead.processStartTag(e,n)},t.afterFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-after-frameset",{name:t})},t.afterFrameset.endTagHtml=function(t){e.setInsertionMode("afterAfterFrameset")},t.afterFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-after-frameset",{name:t})},t.beforeHead=Object.create(t.base),t.beforeHead.start_tag_handlers={html:"startTagHtml",head:"startTagHead","-default":"startTagOther"},t.beforeHead.end_tag_handlers={html:"endTagImplyHead",head:"endTagImplyHead",body:"endTagImplyHead",br:"endTagImplyHead","-default":"endTagOther"},t.beforeHead.processEOF=function(){this.startTagHead("head",[]),e.insertionMode.processEOF()},t.beforeHead.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.startTagHead("head",[]),e.insertionMode.processCharacters(t)},t.beforeHead.startTagHead=function(t,n){e.insertHeadElement(n),e.setInsertionMode("inHead")},t.beforeHead.startTagOther=function(t,n,r){this.startTagHead("head",[]),e.insertionMode.processStartTag(t,n,r)},t.beforeHead.endTagImplyHead=function(t){this.startTagHead("head",[]),e.insertionMode.processEndTag(t)},t.beforeHead.endTagOther=function(t){e.parseError("end-tag-after-implied-root",{name:t})},t.inHead=Object.create(t.base),t.inHead.start_tag_handlers={html:"startTagHtml",head:"startTagHead",title:"startTagTitle",script:"startTagScript",style:"startTagNoFramesStyle",noscript:"startTagNoScript",noframes:"startTagNoFramesStyle",base:"startTagBaseBasefontBgsoundLink",basefont:"startTagBaseBasefontBgsoundLink",bgsound:"startTagBaseBasefontBgsoundLink",link:"startTagBaseBasefontBgsoundLink",meta:"startTagMeta","-default":"startTagOther"},t.inHead.end_tag_handlers={head:"endTagHead",html:"endTagHtmlBodyBr",body:"endTagHtmlBodyBr",br:"endTagHtmlBodyBr","-default":"endTagOther"},t.inHead.processEOF=function(){var t=e.currentStackItem().localName;["title","style","script"].indexOf(t)!=-1&&(e.parseError("expected-named-closing-tag-but-got-eof",{name:t}),e.popElement()),this.anythingElse(),e.insertionMode.processEOF()},t.inHead.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.inHead.startTagHtml=function(e,n){t.inBody.processStartTag(e,n)},t.inHead.startTagHead=function(t,n){e.parseError("two-heads-are-not-better-than-one")},t.inHead.startTagTitle=function(t,n){e.processGenericRCDATAStartTag(t,n)},t.inHead.startTagNoScript=function(t,n){if(e.scriptingEnabled)return e.processGenericRawTextStartTag(t,n);e.insertElement(t,n),e.setInsertionMode("inHeadNoscript")},t.inHead.startTagNoFramesStyle=function(t,n){e.processGenericRawTextStartTag(t,n)},t.inHead.startTagScript=function(t,n){e.insertElement(t,n),e.tokenizer.setState(u.SCRIPT_DATA),e.originalInsertionMode=e.insertionModeName,e.setInsertionMode("text")},t.inHead.startTagBaseBasefontBgsoundLink=function(t,n){e.insertSelfClosingElement(t,n)},t.inHead.startTagMeta=function(t,n){e.insertSelfClosingElement(t,n)},t.inHead.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.inHead.endTagHead=function(t){e.openElements.item(e.openElements.length-1).localName=="head"?e.openElements.pop():e.parseError("unexpected-end-tag",{name:"head"}),e.setInsertionMode("afterHead")},t.inHead.endTagHtmlBodyBr=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.inHead.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inHead.anythingElse=function(){this.endTagHead("head")},t.afterHead=Object.create(t.base),t.afterHead.start_tag_handlers={html:"startTagHtml",head:"startTagHead",body:"startTagBody",frameset:"startTagFrameset",base:"startTagFromHead",link:"startTagFromHead",meta:"startTagFromHead",script:"startTagFromHead",style:"startTagFromHead",title:"startTagFromHead","-default":"startTagOther"},t.afterHead.end_tag_handlers={body:"endTagBodyHtmlBr",html:"endTagBodyHtmlBr",br:"endTagBodyHtmlBr","-default":"endTagOther"},t.afterHead.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},t.afterHead.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.afterHead.startTagHtml=function(e,n){t.inBody.processStartTag(e,n)},t.afterHead.startTagBody=function(t,n){e.framesetOk=!1,e.insertBodyElement(n),e.setInsertionMode("inBody")},t.afterHead.startTagFrameset=function(t,n){e.insertElement(t,n),e.setInsertionMode("inFrameset")},t.afterHead.startTagFromHead=function(n,r,i){e.parseError("unexpected-start-tag-out-of-my-head",{name:n}),e.openElements.push(e.head),t.inHead.processStartTag(n,r,i),e.openElements.remove(e.head)},t.afterHead.startTagHead=function(t,n,r){e.parseError("unexpected-start-tag",{name:t})},t.afterHead.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.afterHead.endTagBodyHtmlBr=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.afterHead.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t})},t.afterHead.anythingElse=function(){e.insertBodyElement([]),e.setInsertionMode("inBody"),e.framesetOk=!0},t.inBody=Object.create(t.base),t.inBody.start_tag_handlers={html:"startTagHtml",head:"startTagMisplaced",base:"startTagProcessInHead",basefont:"startTagProcessInHead",bgsound:"startTagProcessInHead",link:"startTagProcessInHead",meta:"startTagProcessInHead",noframes:"startTagProcessInHead",script:"startTagProcessInHead",style:"startTagProcessInHead",title:"startTagProcessInHead",body:"startTagBody",form:"startTagForm",plaintext:"startTagPlaintext",a:"startTagA",button:"startTagButton",xmp:"startTagXmp",table:"startTagTable",hr:"startTagHr",image:"startTagImage",input:"startTagInput",textarea:"startTagTextarea",select:"startTagSelect",isindex:"startTagIsindex",applet:"startTagAppletMarqueeObject",marquee:"startTagAppletMarqueeObject",object:"startTagAppletMarqueeObject",li:"startTagListItem",dd:"startTagListItem",dt:"startTagListItem",address:"startTagCloseP",article:"startTagCloseP",aside:"startTagCloseP",blockquote:"startTagCloseP",center:"startTagCloseP",details:"startTagCloseP",dir:"startTagCloseP",div:"startTagCloseP",dl:"startTagCloseP",fieldset:"startTagCloseP",figcaption:"startTagCloseP",figure:"startTagCloseP",footer:"startTagCloseP",header:"startTagCloseP",hgroup:"startTagCloseP",main:"startTagCloseP",menu:"startTagCloseP",nav:"startTagCloseP",ol:"startTagCloseP",p:"startTagCloseP",section:"startTagCloseP",summary:"startTagCloseP",ul:"startTagCloseP",listing:"startTagPreListing",pre:"startTagPreListing",b:"startTagFormatting",big:"startTagFormatting",code:"startTagFormatting",em:"startTagFormatting",font:"startTagFormatting",i:"startTagFormatting",s:"startTagFormatting",small:"startTagFormatting",strike:"startTagFormatting",strong:"startTagFormatting",tt:"startTagFormatting",u:"startTagFormatting",nobr:"startTagNobr",area:"startTagVoidFormatting",br:"startTagVoidFormatting",embed:"startTagVoidFormatting",img:"startTagVoidFormatting",keygen:"startTagVoidFormatting",wbr:"startTagVoidFormatting",param:"startTagParamSourceTrack",source:"startTagParamSourceTrack",track:"startTagParamSourceTrack",iframe:"startTagIFrame",noembed:"startTagRawText",noscript:"startTagRawText",h1:"startTagHeading",h2:"startTagHeading",h3:"startTagHeading",h4:"startTagHeading",h5:"startTagHeading",h6:"startTagHeading",caption:"startTagMisplaced",col:"startTagMisplaced",colgroup:"startTagMisplaced",frame:"startTagMisplaced",frameset:"startTagFrameset",tbody:"startTagMisplaced",td:"startTagMisplaced",tfoot:"startTagMisplaced",th:"startTagMisplaced",thead:"startTagMisplaced",tr:"startTagMisplaced",option:"startTagOptionOptgroup",optgroup:"startTagOptionOptgroup",math:"startTagMath",svg:"startTagSVG",rt:"startTagRpRt",rp:"startTagRpRt","-default":"startTagOther"},t.inBody.end_tag_handlers={p:"endTagP",body:"endTagBody",html:"endTagHtml",address:"endTagBlock",article:"endTagBlock",aside:"endTagBlock",blockquote:"endTagBlock",button:"endTagBlock",center:"endTagBlock",details:"endTagBlock",dir:"endTagBlock",div:"endTagBlock",dl:"endTagBlock",fieldset:"endTagBlock",figcaption:"endTagBlock",figure:"endTagBlock",footer:"endTagBlock",header:"endTagBlock",hgroup:"endTagBlock",listing:"endTagBlock",main:"endTagBlock",menu:"endTagBlock",nav:"endTagBlock",ol:"endTagBlock",pre:"endTagBlock",section:"endTagBlock",summary:"endTagBlock",ul:"endTagBlock",form:"endTagForm",applet:"endTagAppletMarqueeObject",marquee:"endTagAppletMarqueeObject",object:"endTagAppletMarqueeObject",dd:"endTagListItem",dt:"endTagListItem",li:"endTagListItem",h1:"endTagHeading",h2:"endTagHeading",h3:"endTagHeading",h4:"endTagHeading",h5:"endTagHeading",h6:"endTagHeading",a:"endTagFormatting",b:"endTagFormatting",big:"endTagFormatting",code:"endTagFormatting",em:"endTagFormatting",font:"endTagFormatting",i:"endTagFormatting",nobr:"endTagFormatting",s:"endTagFormatting",small:"endTagFormatting",strike:"endTagFormatting",strong:"endTagFormatting",tt:"endTagFormatting",u:"endTagFormatting",br:"endTagBr","-default":"endTagOther"},t.inBody.processCharacters=function(t){e.shouldSkipLeadingNewline&&(e.shouldSkipLeadingNewline=!1,t.skipAtMostOneLeadingNewline()),e.reconstructActiveFormattingElements();var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n),e.framesetOk&&!d(n)&&(e.framesetOk=!1)},t.inBody.startTagHtml=function(t,n){e.parseError("non-html-root"),e.addAttributesToElement(e.openElements.rootNode,n)},t.inBody.startTagProcessInHead=function(e,n){t.inHead.processStartTag(e,n)},t.inBody.startTagBody=function(t,n){e.parseError("unexpected-start-tag",{name:"body"}),e.openElements.length==1||e.openElements.item(1).localName!="body"?r.ok(e.context):(e.framesetOk=!1,e.addAttributesToElement(e.openElements.bodyElement,n))},t.inBody.startTagFrameset=function(t,n){e.parseError("unexpected-start-tag",{name:"frameset"});if(e.openElements.length==1||e.openElements.item(1).localName!="body")r.ok(e.context);else if(e.framesetOk){e.detachFromParent(e.openElements.bodyElement);while(e.openElements.length>1)e.openElements.pop();e.insertElement(t,n),e.setInsertionMode("inFrameset")}},t.inBody.startTagCloseP=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n)},t.inBody.startTagPreListing=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1,e.shouldSkipLeadingNewline=!0},t.inBody.startTagForm=function(t,n){e.form?e.parseError("unexpected-start-tag",{name:t}):(e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.form=e.currentStackItem())},t.inBody.startTagRpRt=function(t,n){e.openElements.inScope("ruby")&&(e.generateImpliedEndTags(),e.currentStackItem().localName!="ruby"&&e.parseError("unexpected-start-tag",{name:t})),e.insertElement(t,n)},t.inBody.startTagListItem=function(t,n){var r={li:["li"],dd:["dd","dt"],dt:["dd","dt"]},i=r[t],s=e.openElements;for(var o=s.length-1;o>=0;o--){var u=s.item(o);if(i.indexOf(u.localName)!=-1){e.insertionMode.processEndTag(u.localName);break}if(u.isSpecial()&&u.localName!=="p"&&u.localName!=="address"&&u.localName!=="div")break}e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1},t.inBody.startTagPlaintext=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.tokenizer.setState(u.PLAINTEXT)},t.inBody.startTagHeading=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.currentStackItem().isNumberedHeader()&&(e.parseError("unexpected-start-tag",{name:t}),e.popElement()),e.insertElement(t,n)},t.inBody.startTagA=function(t,n){var r=e.elementInActiveFormattingElements("a");r&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"a",endName:"a"}),e.adoptionAgencyEndTag("a"),e.openElements.contains(r)&&e.openElements.remove(r),e.removeElementFromActiveFormattingElements(r)),e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},t.inBody.startTagFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},t.inBody.startTagNobr=function(t,n){e.reconstructActiveFormattingElements(),e.openElements.inScope("nobr")&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"nobr",endName:"nobr"}),this.processEndTag("nobr"),e.reconstructActiveFormattingElements()),e.insertFormattingElement(t,n)},t.inBody.startTagButton=function(t,n){e.openElements.inScope("button")?(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"button",endName:"button"}),this.processEndTag("button"),e.insertionMode.processStartTag(t,n)):(e.framesetOk=!1,e.reconstructActiveFormattingElements(),e.insertElement(t,n))},t.inBody.startTagAppletMarqueeObject=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.activeFormattingElements.push(l),e.framesetOk=!1},t.inBody.endTagAppletMarqueeObject=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t),e.clearActiveFormattingElements()):e.parseError("unexpected-end-tag",{name:t})},t.inBody.startTagXmp=function(t,n){e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.reconstructActiveFormattingElements(),e.processGenericRawTextStartTag(t,n),e.framesetOk=!1},t.inBody.startTagTable=function(t,n){e.compatMode!=="quirks"&&e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.insertElement(t,n),e.setInsertionMode("inTable"),e.framesetOk=!1},t.inBody.startTagVoidFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertSelfClosingElement(t,n),e.framesetOk=!1},t.inBody.startTagParamSourceTrack=function(t,n){e.insertSelfClosingElement(t,n)},t.inBody.startTagHr=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertSelfClosingElement(t,n),e.framesetOk=!1},t.inBody.startTagImage=function(t,n){e.parseError("unexpected-start-tag-treated-as",{originalName:"image",newName:"img"}),this.processStartTag("img",n)},t.inBody.startTagInput=function(t,n){var r=e.framesetOk;this.startTagVoidFormatting(t,n);for(var i in n)if(n[i].nodeName=="type"){n[i].nodeValue.toLowerCase()=="hidden"&&(e.framesetOk=r);break}},t.inBody.startTagIsindex=function(t,n){e.parseError("deprecated-tag",{name:"isindex"}),e.selfClosingFlagAcknowledged=!0;if(e.form)return;var r=[],i=[],s="This is a searchable index. Enter search keywords: ";for(var o in n)switch(n[o].nodeName){case"action":r.push({nodeName:"action",nodeValue:n[o].nodeValue});break;case"prompt":s=n[o].nodeValue;break;case"name":break;default:i.push({nodeName:n[o].nodeName,nodeValue:n[o].nodeValue})}i.push({nodeName:"name",nodeValue:"isindex"}),this.processStartTag("form",r),this.processStartTag("hr"),this.processStartTag("label"),this.processCharacters(new m(s)),this.processStartTag("input",i),this.processEndTag("label"),this.processStartTag("hr"),this.processEndTag("form")},t.inBody.startTagTextarea=function(t,n){e.insertElement(t,n),e.tokenizer.setState(u.RCDATA),e.originalInsertionMode=e.insertionModeName,e.shouldSkipLeadingNewline=!0,e.framesetOk=!1,e.setInsertionMode("text")},t.inBody.startTagIFrame=function(t,n){e.framesetOk=!1,this.startTagRawText(t,n)},t.inBody.startTagRawText=function(t,n){e.processGenericRawTextStartTag(t,n)},t.inBody.startTagSelect=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.framesetOk=!1;var r=e.insertionModeName;r=="inTable"||r=="inCaption"||r=="inColumnGroup"||r=="inTableBody"||r=="inRow"||r=="inCell"?e.setInsertionMode("inSelectInTable"):e.setInsertionMode("inSelect")},t.inBody.startTagMisplaced=function(t,n){e.parseError("unexpected-start-tag-ignored",{name:t})},t.inBody.endTagMisplaced=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagBr=function(t){e.parseError("unexpected-end-tag-treated-as",{originalName:"br",newName:"br element"}),e.reconstructActiveFormattingElements(),e.insertElement(t,[]),e.popElement()},t.inBody.startTagOptionOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.reconstructActiveFormattingElements(),e.insertElement(t,n)},t.inBody.startTagOther=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n)},t.inBody.endTagOther=function(t){var n;for(var r=e.openElements.length-1;r>0;r--){n=e.openElements.item(r);if(n.localName==t){e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("unexpected-end-tag",{name:t}),e.openElements.remove_openElements_until(function(e){return e===n});break}if(n.isSpecial()){e.parseError("unexpected-end-tag",{name:t});break}}},t.inBody.startTagMath=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustMathMLAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/1998/Math/MathML",r)},t.inBody.startTagSVG=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustSVGAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/2000/svg",r)},t.inBody.endTagP=function(t){e.openElements.inButtonScope("p")?(e.generateImpliedEndTags("p"),e.currentStackItem().localName!="p"&&e.parseError("unexpected-implied-end-tag",{name:"p"}),e.openElements.popUntilPopped(t)):(e.parseError("unexpected-end-tag",{name:"p"}),this.startTagCloseP("p",[]),this.endTagP("p"))},t.inBody.endTagBody=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody")},t.inBody.endTagHtml=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody"),e.insertionMode.processEndTag(t)},t.inBody.endTagBlock=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagForm=function(t){var n=e.form;e.form=null,!n||!e.openElements.inScope(t)?e.parseError("unexpected-end-tag",{name:t}):(e.generateImpliedEndTags(),e.currentStackItem()!=n&&e.parseError("end-tag-too-early-ignored",{name:"form"}),e.openElements.remove(n))},t.inBody.endTagListItem=function(t){e.openElements.inListItemScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagHeading=function(t){if(!e.openElements.hasNumberedHeaderElementInScope()){e.parseError("unexpected-end-tag",{name:t});return}e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.remove_openElements_until(function(e){return e.isNumberedHeader()})},t.inBody.endTagFormatting=function(t,n){e.adoptionAgencyEndTag(t)||this.endTagOther(t,n)},t.inCaption=Object.create(t.base),t.inCaption.start_tag_handlers={html:"startTagHtml",caption:"startTagTableElement",col:"startTagTableElement",colgroup:"startTagTableElement",tbody:"startTagTableElement",td:"startTagTableElement",tfoot:"startTagTableElement",thead:"startTagTableElement",tr:"startTagTableElement","-default":"startTagOther"},t.inCaption.end_tag_handlers={caption:"endTagCaption",table:"endTagTable",body:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfood:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inCaption.processCharacters=function(e){t.inBody.processCharacters(e)},t.inCaption.startTagTableElement=function(t,n){e.parseError("unexpected-end-tag",{name:t});var r=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),r||e.insertionMode.processStartTag(t,n)},t.inCaption.startTagOther=function(e,n,r){t.inBody.processStartTag(e,n,r)},t.inCaption.endTagCaption=function(t){e.openElements.inTableScope("caption")?(e.generateImpliedEndTags(),e.currentStackItem().localName!="caption"&&e.parseError("expected-one-end-tag-but-got-another",{gotName:"caption",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("caption"),e.clearActiveFormattingElements(),e.setInsertionMode("inTable")):(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},t.inCaption.endTagTable=function(t){e.parseError("unexpected-end-table-in-caption");var n=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),n||e.insertionMode.processEndTag(t)},t.inCaption.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inCaption.endTagOther=function(e){t.inBody.processEndTag(e)},t.inCell=Object.create(t.base),t.inCell.start_tag_handlers={html:"startTagHtml",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",td:"startTagTableOther",tfoot:"startTagTableOther",th:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},t.inCell.end_tag_handlers={td:"endTagTableCell",th:"endTagTableCell",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",table:"endTagImply",tbody:"endTagImply",tfoot:"endTagImply",thead:"endTagImply",tr:"endTagImply","-default":"endTagOther"},t.inCell.processCharacters=function(e){t.inBody.processCharacters(e)},t.inCell.startTagTableOther=function(t,n,r){e.openElements.inTableScope("td")||e.openElements.inTableScope("th")?(this.closeCell(),e.insertionMode.processStartTag(t,n,r)):e.parseError("unexpected-start-tag",{name:t})},t.inCell.startTagOther=function(e,n,r){t.inBody.processStartTag(e,n,r)},t.inCell.endTagTableCell=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t.toLowerCase()?(e.parseError("unexpected-cell-end-tag",{name:t}),e.openElements.popUntilPopped(t)):e.popElement(),e.clearActiveFormattingElements(),e.setInsertionMode("inRow")):e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagImply=function(t){e.openElements.inTableScope(t)?(this.closeCell(),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagOther=function(e){t.inBody.processEndTag(e)},t.inCell.closeCell=function(){e.openElements.inTableScope("td")?this.endTagTableCell("td"):e.openElements.inTableScope("th")&&this.endTagTableCell("th")},t.inColumnGroup=Object.create(t.base),t.inColumnGroup.start_tag_handlers={html:"startTagHtml",col:"startTagCol","-default":"startTagOther"},t.inColumnGroup.end_tag_handlers={colgroup:"endTagColgroup",col:"endTagCol","-default":"endTagOther"},t.inColumnGroup.ignoreEndTagColgroup=function(){return e.currentStackItem().localName=="html"},t.inColumnGroup.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;var r=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),r||e.insertionMode.processCharacters(t)},t.inColumnGroup.startTagCol=function(t,n){e.insertSelfClosingElement(t,n)},t.inColumnGroup.startTagOther=function(t,n,r){var i=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),i||e.insertionMode.processStartTag(t,n,r)},t.inColumnGroup.endTagColgroup=function(t){this.ignoreEndTagColgroup()?(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.popElement(),e.setInsertionMode("inTable"))},t.inColumnGroup.endTagCol=function(t){e.parseError("no-end-tag",{name:"col"})},t.inColumnGroup.endTagOther=function(t){var n=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),n||e.insertionMode.processEndTag(t)},t.inForeignContent=Object.create(t.base),t.inForeignContent.processStartTag=function(t,n,r){if(["b","big","blockquote","body","br","center","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","head","hr","i","img","li","listing","menu","meta","nobr","ol","p","pre","ruby","s","small","span","strong","strike","sub","sup","table","tt","u","ul","var"].indexOf(t)!=-1||t=="font"&&n.some(function(e){return["color","face","size"].indexOf(e.nodeName)>=0})){e.parseError("unexpected-html-element-in-foreign-content",{name:t});while(e.currentStackItem().isForeign()&&!e.currentStackItem().isHtmlIntegrationPoint()&&!e.currentStackItem().isMathMLTextIntegrationPoint())e.openElements.pop();e.insertionMode.processStartTag(t,n,r);return}e.currentStackItem().namespaceURI=="http://www.w3.org/1998/Math/MathML"&&(n=e.adjustMathMLAttributes(n)),e.currentStackItem().namespaceURI=="http://www.w3.org/2000/svg"&&(t=e.adjustSVGTagNameCase(t),n=e.adjustSVGAttributes(n)),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,e.currentStackItem().namespaceURI,r)},t.inForeignContent.processEndTag=function(t){var n=e.currentStackItem(),r=e.openElements.length-1;n.localName.toLowerCase()!=t&&e.parseError("unexpected-end-tag",{name:t});for(;;){if(r===0)break;if(n.localName.toLowerCase()==t){while(e.openElements.pop()!=n);break}r-=1,n=e.openElements.item(r);if(n.isForeign())continue;e.insertionMode.processEndTag(t);break}},t.inForeignContent.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),"\ufffd"}),e.framesetOk&&!d(n)&&(e.framesetOk=!1),e.insertText(n)},t.inHeadNoscript=Object.create(t.base),t.inHeadNoscript.start_tag_handlers={html:"startTagHtml",basefont:"startTagBasefontBgsoundLinkMetaNoframesStyle",bgsound:"startTagBasefontBgsoundLinkMetaNoframesStyle",link:"startTagBasefontBgsoundLinkMetaNoframesStyle",meta:"startTagBasefontBgsoundLinkMetaNoframesStyle",noframes:"startTagBasefontBgsoundLinkMetaNoframesStyle",style:"startTagBasefontBgsoundLinkMetaNoframesStyle",head:"startTagHeadNoscript",noscript:"startTagHeadNoscript","-default":"startTagOther"},t.inHeadNoscript.end_tag_handlers={noscript:"endTagNoscript",br:"endTagBr","-default":"endTagOther"},t.inHeadNoscript.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;e.parseError("unexpected-char-in-frameset"),this.anythingElse(),e.insertionMode.processCharacters(t)},t.inHeadNoscript.processComment=function(e){t.inHead.processComment(e)},t.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle=function(e,n){t.inHead.processStartTag(e,n)},t.inHeadNoscript.startTagHeadNoscript=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},t.inHeadNoscript.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n)},t.inHeadNoscript.endTagBr=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t,n)},t.inHeadNoscript.endTagNoscript=function(t,n){e.popElement(),e.setInsertionMode("inHead")},t.inHeadNoscript.endTagOther=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t})},t.inHeadNoscript.anythingElse=function(){e.popElement(),e.setInsertionMode("inHead")},t.inFrameset=Object.create(t.base),t.inFrameset.start_tag_handlers={html:"startTagHtml",frameset:"startTagFrameset",frame:"startTagFrame",noframes:"startTagNoframes","-default":"startTagOther"},t.inFrameset.end_tag_handlers={frameset:"endTagFrameset",noframes:"endTagNoframes","-default":"endTagOther"},t.inFrameset.processCharacters=function(t){e.parseError("unexpected-char-in-frameset")},t.inFrameset.startTagFrameset=function(t,n){e.insertElement(t,n)},t.inFrameset.startTagFrame=function(t,n){e.insertSelfClosingElement(t,n)},t.inFrameset.startTagNoframes=function(e,n){t.inBody.processStartTag(e,n)},t.inFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},t.inFrameset.endTagFrameset=function(t,n){e.currentStackItem().localName=="html"?e.parseError("unexpected-frameset-in-frameset-innerhtml"):e.popElement(),!e.context&&e.currentStackItem().localName!="frameset"&&e.setInsertionMode("afterFrameset")},t.inFrameset.endTagNoframes=function(e){t.inBody.processEndTag(e)},t.inFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-in-frameset",{name:t})},t.inTable=Object.create(t.base),t.inTable.start_tag_handlers={html:"startTagHtml",caption:"startTagCaption",colgroup:"startTagColgroup",col:"startTagCol",table:"startTagTable",tbody:"startTagRowGroup",tfoot:"startTagRowGroup",thead:"startTagRowGroup",td:"startTagImplyTbody",th:"startTagImplyTbody",tr:"startTagImplyTbody",style:"startTagStyleScript",script:"startTagStyleScript",input:"startTagInput",form:"startTagForm","-default":"startTagOther"},t.inTable.end_tag_handlers={table:"endTagTable",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfoot:"endTagIgnore",th:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inTable.processCharacters=function(n){if(e.currentStackItem().isFosterParenting()){var r=e.insertionModeName;e.setInsertionMode("inTableText"),e.originalInsertionMode=r,e.insertionMode.processCharacters(n)}else e.redirectAttachToFosterParent=!0,t.inBody.processCharacters(n),e.redirectAttachToFosterParent=!1},t.inTable.startTagCaption=function(t,n){e.openElements.popUntilTableScopeMarker(),e.activeFormattingElements.push(l),e.insertElement(t,n),e.setInsertionMode("inCaption")},t.inTable.startTagColgroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inColumnGroup")},t.inTable.startTagCol=function(t,n){this.startTagColgroup("colgroup",[]),e.insertionMode.processStartTag(t,n)},t.inTable.startTagRowGroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inTableBody")},t.inTable.startTagImplyTbody=function(t,n){this.startTagRowGroup("tbody",[]),e.insertionMode.processStartTag(t,n)},t.inTable.startTagTable=function(t,n){e.parseError("unexpected-start-tag-implies-end-tag",{startName:"table",endName:"table"}),e.insertionMode.processEndTag("table"),e.context||e.insertionMode.processStartTag(t,n)},t.inTable.startTagStyleScript=function(e,n){t.inHead.processStartTag(e,n)},t.inTable.startTagInput=function(t,n){for(var r in n)if(n[r].nodeName.toLowerCase()=="type"){if(n[r].nodeValue.toLowerCase()=="hidden"){e.parseError("unexpected-hidden-input-in-table"),e.insertElement(t,n),e.openElements.pop();return}break}this.startTagOther(t,n)},t.inTable.startTagForm=function(t,n){e.parseError("unexpected-form-in-table"),e.form||(e.insertElement(t,n),e.form=e.currentStackItem(),e.openElements.pop())},t.inTable.startTagOther=function(n,r,i){e.parseError("unexpected-start-tag-implies-table-voodoo",{name:n}),e.redirectAttachToFosterParent=!0,t.inBody.processStartTag(n,r,i),e.redirectAttachToFosterParent=!1},t.inTable.endTagTable=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early-named",{gotName:"table",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("table"),e.resetInsertionMode()):(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},t.inTable.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inTable.endTagOther=function(n){e.parseError("unexpected-end-tag-implies-table-voodoo",{name:n}),e.redirectAttachToFosterParent=!0,t.inBody.processEndTag(n),e.redirectAttachToFosterParent=!1},t.inTableText=Object.create(t.base),t.inTableText.flushCharacters=function(){var t=e.pendingTableCharacters.join("");p(t)?e.insertText(t):(e.redirectAttachToFosterParent=!0,e.reconstructActiveFormattingElements(),e.insertText(t),e.framesetOk=!1,e.redirectAttachToFosterParent=!1),e.pendingTableCharacters=[]},t.inTableText.processComment=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processComment(t)},t.inTableText.processEOF=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},t.inTableText.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.pendingTableCharacters.push(n)},t.inTableText.processStartTag=function(t,n,r){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processStartTag(t,n,r)},t.inTableText.processEndTag=function(t,n){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEndTag(t,n)},t.inTableBody=Object.create(t.base),t.inTableBody.start_tag_handlers={html:"startTagHtml",tr:"startTagTr",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther","-default":"startTagOther"},t.inTableBody.end_tag_handlers={table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inTableBody.processCharacters=function(e){t.inTable.processCharacters(e)},t.inTableBody.startTagTr=function(t,n){e.openElements.popUntilTableBodyScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inRow")},t.inTableBody.startTagTableCell=function(t,n){e.parseError("unexpected-cell-in-table-body",{name:t}),this.startTagTr("tr",[]),e.insertionMode.processStartTag(t,n)},t.inTableBody.startTagTableOther=function(t,n){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processStartTag(t,n)):e.parseError("unexpected-start-tag",{name:t})},t.inTableBody.startTagOther=function(e,n){t.inTable.processStartTag(e,n)},t.inTableBody.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(e.openElements.popUntilTableBodyScopeMarker(),e.popElement(),e.setInsertionMode("inTable")):e.parseError("unexpected-end-tag-in-table-body",{name:t})},t.inTableBody.endTagTable=function(t){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inTableBody.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-body",{name:t})},t.inTableBody.endTagOther=function(e){t.inTable.processEndTag(e)},t.inSelect=Object.create(t.base),t.inSelect.start_tag_handlers={html:"startTagHtml",option:"startTagOption",optgroup:"startTagOptgroup",select:"startTagSelect",input:"startTagInput",keygen:"startTagInput",textarea:"startTagInput",script:"startTagScript","-default":"startTagOther"},t.inSelect.end_tag_handlers={option:"endTagOption",optgroup:"endTagOptgroup",select:"endTagSelect",caption:"endTagTableElements",table:"endTagTableElements",tbody:"endTagTableElements",tfoot:"endTagTableElements",thead:"endTagTableElements",tr:"endTagTableElements",td:"endTagTableElements",th:"endTagTableElements","-default":"endTagOther"},t.inSelect.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n)},t.inSelect.startTagOption=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.insertElement(t,n)},t.inSelect.startTagOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.currentStackItem().localName=="optgroup"&&e.popElement(),e.insertElement(t,n)},t.inSelect.endTagOption=function(t){if(e.currentStackItem().localName!=="option"){e.parseError("unexpected-end-tag-in-select",{name:t});return}e.popElement()},t.inSelect.endTagOptgroup=function(t){e.currentStackItem().localName=="option"&&e.openElements.item(e.openElements.length-2).localName=="optgroup"&&e.popElement(),e.currentStackItem().localName=="optgroup"?e.popElement():e.parseError("unexpected-end-tag-in-select",{name:"optgroup"})},t.inSelect.startTagSelect=function(t){e.parseError("unexpected-select-in-select"),this.endTagSelect("select")},t.inSelect.endTagSelect=function(t){e.openElements.inTableScope("select")?(e.openElements.popUntilPopped("select"),e.resetInsertionMode()):e.parseError("unexpected-end-tag",{name:t})},t.inSelect.startTagInput=function(t,n){e.parseError("unexpected-input-in-select"),e.openElements.inSelectScope("select")&&(this.endTagSelect("select"),e.insertionMode.processStartTag(t,n))},t.inSelect.startTagScript=function(e,n){t.inHead.processStartTag(e,n)},t.inSelect.endTagTableElements=function(t){e.parseError("unexpected-end-tag-in-select",{name:t}),e.openElements.inTableScope(t)&&(this.endTagSelect("select"),e.insertionMode.processEndTag(t))},t.inSelect.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-select",{name:t})},t.inSelect.endTagOther=function(t){e.parseError("unexpected-end-tag-in-select",{name:t})},t.inSelectInTable=Object.create(t.base),t.inSelectInTable.start_tag_handlers={caption:"startTagTable",table:"startTagTable",tbody:"startTagTable",tfoot:"startTagTable",thead:"startTagTable",tr:"startTagTable",td:"startTagTable",th:"startTagTable","-default":"startTagOther"},t.inSelectInTable.end_tag_handlers={caption:"endTagTable",table:"endTagTable",tbody:"endTagTable",tfoot:"endTagTable",thead:"endTagTable",tr:"endTagTable",td:"endTagTable",th:"endTagTable","-default":"endTagOther"},t.inSelectInTable.processCharacters=function(e){t.inSelect.processCharacters(e)},t.inSelectInTable.startTagTable=function(t,n){e.parseError("unexpected-table-element-start-tag-in-select-in-table",{name:t}),this.endTagOther("select"),e.insertionMode.processStartTag(t,n)},t.inSelectInTable.startTagOther=function(e,n,r){t.inSelect.processStartTag(e,n,r)},t.inSelectInTable.endTagTable=function(t){e.parseError("unexpected-table-element-end-tag-in-select-in-table",{name:t}),e.openElements.inTableScope(t)&&(this.endTagOther("select"),e.insertionMode.processEndTag(t))},t.inSelectInTable.endTagOther=function(e){t.inSelect.processEndTag(e)},t.inRow=Object.create(t.base),t.inRow.start_tag_handlers={html:"startTagHtml",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},t.inRow.end_tag_handlers={tr:"endTagTr",table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore","-default":"endTagOther"},t.inRow.processCharacters=function(e){t.inTable.processCharacters(e)},t.inRow.startTagTableCell=function(t,n){e.openElements.popUntilTableRowScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inCell"),e.activeFormattingElements.push(l)},t.inRow.startTagTableOther=function(t,n){var r=this.ignoreEndTagTr();this.endTagTr("tr"),r||e.insertionMode.processStartTag(t,n)},t.inRow.startTagOther=function(e,n,r){t.inTable.processStartTag(e,n,r)},t.inRow.endTagTr=function(t){this.ignoreEndTagTr()?(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.openElements.popUntilTableRowScopeMarker(),e.popElement(),e.setInsertionMode("inTableBody"))},t.inRow.endTagTable=function(t){var n=this.ignoreEndTagTr();this.endTagTr("tr"),n||e.insertionMode.processEndTag(t)},t.inRow.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(this.endTagTr("tr"),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inRow.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-row",{name:t})},t.inRow.endTagOther=function(e){t.inTable.processEndTag(e)},t.inRow.ignoreEndTagTr=function(){return!e.openElements.inTableScope("tr")},t.afterAfterFrameset=Object.create(t.base),t.afterAfterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoFrames","-default":"startTagOther"},t.afterAfterFrameset.processEOF=function(){},t.afterAfterFrameset.processComment=function(t){e.insertComment(t,e.document)},t.afterAfterFrameset.processCharacters=function(t){var n=t.takeRemaining(),r="";for(var i=0;i<n.length;i++){var s=n[i];c(s)&&(r+=s)}r&&(e.reconstructActiveFormattingElements(),e.insertText(r)),r.length<n.length&&e.parseError("expected-eof-but-got-char")},t.afterAfterFrameset.startTagNoFrames=function(e,n){t.inHead.processStartTag(e,n)},t.afterAfterFrameset.startTagOther=function(t,n,r){e.parseError("expected-eof-but-got-start-tag",{name:t})},t.afterAfterFrameset.processEndTag=function(t,n){e.parseError("expected-eof-but-got-end-tag",{name:t})},t.text=Object.create(t.base),t.text.start_tag_handlers={"-default":"startTagOther"},t.text.end_tag_handlers={script:"endTagScript","-default":"endTagOther"},t.text.processCharacters=function(t){e.shouldSkipLeadingNewline&&(e.shouldSkipLeadingNewline=!1,t.skipAtMostOneLeadingNewline());var n=t.takeRemaining();if(!n)return;e.insertText(n)},t.text.processEOF=function(){e.parseError("expected-named-closing-tag-but-got-eof",{name:e.currentStackItem().localName}),e.openElements.pop(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},t.text.startTagOther=function(e){throw"Tried to process start tag "+e+" in RCDATA/RAWTEXT mode"},t.text.endTagScript=function(t){var n=e.openElements.pop();r.ok(n.localName=="script"),e.setInsertionMode(e.originalInsertionMode)},t.text.endTagOther=function(t){e.openElements.pop(),e.setInsertionMode(e.originalInsertionMode)}}function y(e,t){return e.replace(new RegExp("{[0-9a-z-]+}","gi"),function(e){return t[e.slice(1,-1)]||e})}var r=e("assert"),i=e("./messages.json"),s=e("./constants"),o=e("events").EventEmitter,u=e("./Tokenizer").Tokenizer,a=e("./ElementStack").ElementStack,f=e("./StackItem").StackItem,l={};m.prototype.skipAtMostOneLeadingNewline=function(){this.characters[this.current]==="\n"&&this.current++},m.prototype.skipLeadingWhitespace=function(){while(c(this.characters[this.current]))if(++this.current==this.end)return},m.prototype.skipLeadingNonWhitespace=function(){while(!c(this.characters[this.current]))if(++this.current==this.end)return},m.prototype.takeRemaining=function(){return this.characters.substring(this.current)},m.prototype.takeLeadingWhitespace=function(){var e=this.current;return this.skipLeadingWhitespace(),e===this.current?"":this.characters.substring(e,this.current-e)},Object.defineProperty(m.prototype,"length",{get:function(){return this.end-this.current}}),g.prototype.setInsertionMode=function(e){this.insertionMode=this.insertionModes[e],this.insertionModeName=e},g.prototype.adoptionAgencyEndTag=function(e){function i(e){return e===r}var t=8,n=3,r,s=0;while(s++<t){r=this.elementInActiveFormattingElements(e);if(!r||this.openElements.contains(r)&&!this.openElements.inScope(r.localName))return this.parseError("adoption-agency-1.1",{name:e}),!1;if(!this.openElements.contains(r))return this.parseError("adoption-agency-1.2",{name:e}),this.removeElementFromActiveFormattingElements(r),!0;this.openElements.inScope(r.localName)||this.parseError("adoption-agency-4.4",{name:e}),r!=this.currentStackItem()&&this.parseError("adoption-agency-1.3",{name:e});var o=this.openElements.furthestBlockForFormattingElement(r.node);if(!o)return this.openElements.remove_openElements_until(i),this.removeElementFromActiveFormattingElements(r),!0;var u=this.openElements.elements.indexOf(r),a=this.openElements.item(u-1),l=this.activeFormattingElements.indexOf(r),c=o,h=o,p=this.openElements.elements.indexOf(c),d=0;while(d++<n){p-=1,c=this.openElements.item(p);if(this.activeFormattingElements.indexOf(c)<0){this.openElements.elements.splice(p,1);continue}if(c==r)break;h==o&&(l=this.activeFormattingElements.indexOf(c)+1);var v=this.createElement(c.namespaceURI,c.localName,c.attributes),m=new f(c.namespaceURI,c.localName,c.attributes,v);this.activeFormattingElements[this.activeFormattingElements.indexOf(c)]=m,this.openElements.elements[this.openElements.elements.indexOf(c)]=m,c=m,this.detachFromParent(h.node),this.attachNode(h.node,c.node),h=c}this.detachFromParent(h.node),a.isFosterParenting()?this.insertIntoFosterParent(h.node):this.attachNode(h.node,a.node);var v=this.createElement("http://www.w3.org/1999/xhtml",r.localName,r.attributes),g=new f(r.namespaceURI,r.localName,r.attributes,v);this.reparentChildren(o.node,v),this.attachNode(v,o.node),this.removeElementFromActiveFormattingElements(r),this.activeFormattingElements.splice(Math.min(l,this.activeFormattingElements.length),0,g),this.openElements.remove(r),this.openElements.elements.splice(this.openElements.elements.indexOf(o)+1,0,g)}return!0},g.prototype.start=function(){throw"Not mplemented"},g.prototype.startTokenization=function(e){this.tokenizer=e,this.compatMode="no quirks",this.originalInsertionMode="initial",this.framesetOk=!0,this.openElements=new a,this.activeFormattingElements=[],this.start();if(this.context){switch(this.context){case"title":case"textarea":this.tokenizer.setState(u.RCDATA);break;case"style":case"xmp":case"iframe":case"noembed":case"noframes":this.tokenizer.setState(u.RAWTEXT);break;case"script":this.tokenizer.setState(u.SCRIPT_DATA);break;case"noscript":this.scriptingEnabled&&this.tokenizer.setState(u.RAWTEXT);break;case"plaintext":this.tokenizer.setState(u.PLAINTEXT)}this.insertHtmlElement(),this.resetInsertionMode()}else this.setInsertionMode("initial")},g.prototype.processToken=function(e){this.selfClosingFlagAcknowledged=!1;var t=this.openElements.top||null,n;!t||!t.isForeign()||t.isMathMLTextIntegrationPoint()&&(e.type=="StartTag"&&!(e.name in{mglyph:0,malignmark:0})||e.type==="Characters")||t.namespaceURI=="http://www.w3.org/1998/Math/MathML"&&t.localName=="annotation-xml"&&e.type=="StartTag"&&e.name=="svg"||t.isHtmlIntegrationPoint()&&e.type in{StartTag:0,Characters:0}||e.type=="EOF"?n=this.insertionMode:n=this.insertionModes.inForeignContent;switch(e.type){case"Characters":var r=new m(e.data);n.processCharacters(r);break;case"Comment":n.processComment(e.data);break;case"StartTag":n.processStartTag(e.name,e.data,e.selfClosing);break;case"EndTag":n.processEndTag(e.name);break;case"Doctype":n.processDoctype(e.name,e.publicId,e.systemId,e.forceQuirks);break;case"EOF":n.processEOF()}},g.prototype.isCdataSectionAllowed=function(){return this.openElements.length>0&&this.currentStackItem().isForeign()},g.prototype.isSelfClosingFlagAcknowledged=function(){return this.selfClosingFlagAcknowledged},g.prototype.createElement=function(e,t,n){throw new Error("Not implemented")},g.prototype.attachNode=function(e,t){throw new Error("Not implemented")},g.prototype.attachNodeToFosterParent=function(e,t,n){throw new Error("Not implemented")},g.prototype.detachFromParent=function(e){throw new Error("Not implemented")},g.prototype.addAttributesToElement=function(e,t){throw new Error("Not implemented")},g.prototype.insertHtmlElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","html",e);return this.attachNode(t,this.document),this.openElements.pushHtmlElement(new f("http://www.w3.org/1999/xhtml","html",e,t)),t},g.prototype.insertHeadElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","head",e);return this.head=new f("http://www.w3.org/1999/xhtml","head",e,t),this.attachNode(t,this.openElements.top.node),this.openElements.pushHeadElement(this.head),t},g.prototype.insertBodyElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","body",e);return this.attachNode(t,this.openElements.top.node),this.openElements.pushBodyElement(new f("http://www.w3.org/1999/xhtml","body",e,t)),t},g.prototype.insertIntoFosterParent=function(e){var t=this.openElements.findIndex("table"),n=this.openElements.item(t).node;if(t===0)return this.attachNode(e,n);this.attachNodeToFosterParent(e,n,this.openElements.item(t-1).node)},g.prototype.insertElement=function(e,t,n,r){n||(n="http://www.w3.org/1999/xhtml");var i=this.createElement(n,e,t);this.shouldFosterParent()?this.insertIntoFosterParent(i):this.attachNode(i,this.openElements.top.node),r||this.openElements.push(new f(n,e,t,i))},g.prototype.insertFormattingElement=function(e,t){this.insertElement(e,t,"http://www.w3.org/1999/xhtml"),this.appendElementToActiveFormattingElements(this.currentStackItem())},g.prototype.insertSelfClosingElement=function(e,t){this.selfClosingFlagAcknowledged=!0,this.insertElement(e,t,"http://www.w3.org/1999/xhtml",!0)},g.prototype.insertForeignElement=function(e,t,n,r){r&&(this.selfClosingFlagAcknowledged=!0),this.insertElement(e,t,n,r)},g.prototype.insertComment=function(e,t){throw new Error("Not implemented")},g.prototype.insertDoctype=function(e,t,n){throw new Error("Not implemented")},g.prototype.insertText=function(e){throw new Error("Not implemented")},g.prototype.currentStackItem=function(){return this.openElements.top},g.prototype.popElement=function(){return this.openElements.pop()},g.prototype.shouldFosterParent=function(){return this.redirectAttachToFosterParent&&this.currentStackItem().isFosterParenting()},g.prototype.generateImpliedEndTags=function(e){var t=this.openElements.top.localName;["dd","dt","li","option","optgroup","p","rp","rt"].indexOf(t)!=-1&&t!=e&&(this.popElement(),this.generateImpliedEndTags(e))},g.prototype.reconstructActiveFormattingElements=function(){if(this.activeFormattingElements.length===0)return;var e=this.activeFormattingElements.length-1,t=this.activeFormattingElements[e];if(t==l||this.openElements.contains(t))return;while(t!=l&&!this.openElements.contains(t)){e-=1,t=this.activeFormattingElements[e];if(!t)break}for(;;){e+=1,t=this.activeFormattingElements[e],this.insertElement(t.localName,t.attributes);var n=this.currentStackItem();this.activeFormattingElements[e]=n;if(n==this.activeFormattingElements[this.activeFormattingElements.length-1])break}},g.prototype.ensureNoahsArkCondition=function(e){var t=3;if(this.activeFormattingElements.length<t)return;var n=[],r=e.attributes.length;for(var i=this.activeFormattingElements.length-1;i>=0;i--){var s=this.activeFormattingElements[i];if(s===l)break;if(e.localName!==s.localName||e.namespaceURI!==s.namespaceURI)continue;if(s.attributes.length!=r)continue;n.push(s)}if(n.length<t)return;var o=[],u=e.attributes;for(var i=0;i<u.length;i++){var a=u[i];for(var f=0;f<n.length;f++){var s=n[f],c=v(s,a.nodeName);c&&c.nodeValue===a.nodeValue&&o.push(s)}if(o.length<t)return;n=o,o=[]}for(var i=t-1;i<n.length;i++)this.removeElementFromActiveFormattingElements(n[i])},g.prototype.appendElementToActiveFormattingElements=function(e){this.ensureNoahsArkCondition(e),this.activeFormattingElements.push(e)},g.prototype.removeElementFromActiveFormattingElements=function(e){var t=this.activeFormattingElements.indexOf(e);t>=0&&this.activeFormattingElements.splice(t,1)},g.prototype.elementInActiveFormattingElements=function(e){var t=this.activeFormattingElements;for(var n=t.length-1;n>=0;n--){if(t[n]==l)break;if(t[n].localName==e)return t[n]}return!1},g.prototype.clearActiveFormattingElements=function(){while(this.activeFormattingElements.length!==0&&this.activeFormattingElements.pop()!=l);},g.prototype.reparentChildren=function(e,t){throw new Error("Not implemented")},g.prototype.setFragmentContext=function(e){this.context=e},g.prototype.parseError=function(e,t){if(!this.errorHandler)return;var n=y(i[e],t);this.errorHandler.error(n,this.tokenizer._inputStream.location(),e)},g.prototype.resetInsertionMode=function(){var e=!1,t=null;for(var n=this.openElements.length-1;n>=0;n--){t=this.openElements.item(n),n===0&&(r.ok(this.context),e=!0,t=new f("http://www.w3.org/1999/xhtml",this.context,[],null));if(t.namespaceURI==="http://www.w3.org/1999/xhtml"){if(t.localName==="select")return this.setInsertionMode("inSelect");if(t.localName==="td"||t.localName==="th")return this.setInsertionMode("inCell");if(t.localName==="tr")return this.setInsertionMode("inRow");if(t.localName==="tbody"||t.localName==="thead"||t.localName==="tfoot")return this.setInsertionMode("inTableBody");if(t.localName==="caption")return this.setInsertionMode("inCaption");if(t.localName==="colgroup")return this.setInsertionMode("inColumnGroup");if(t.localName==="table")return this.setInsertionMode("inTable");if(t.localName==="head"&&!e)return this.setInsertionMode("inHead");if(t.localName==="body")return this.setInsertionMode("inBody");if(t.localName==="frameset")return this.setInsertionMode("inFrameset");if(t.localName==="html")return this.openElements.headElement?this.setInsertionMode("afterHead"):this.setInsertionMode("beforeHead")}if(e)return this.setInsertionMode("inBody")}},g.prototype.processGenericRCDATAStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(u.RCDATA),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},g.prototype.processGenericRawTextStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(u.RAWTEXT),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},g.prototype.adjustMathMLAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/1998/Math/MathML",s.MATHMLAttributeMap[e.nodeName]&&(e.nodeName=s.MATHMLAttributeMap[e.nodeName])}),e},g.prototype.adjustSVGTagNameCase=function(e){return s.SVGTagMap[e]||e},g.prototype.adjustSVGAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/2000/svg",s.SVGAttributeMap[e.nodeName]&&(e.nodeName=s.SVGAttributeMap[e.nodeName])}),e},g.prototype.adjustForeignAttributes=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.ForeignAttributeMap[n.nodeName];r&&(n.nodeName=r.localName,n.prefix=r.prefix,n.namespaceURI=r.namespaceURI)}return e},n.TreeBuilder=g},{"./ElementStack":1,"./StackItem":4,"./Tokenizer":5,"./constants":7,"./messages.json":8,assert:13,events:16}],7:[function(e,t,n){n.SVGTagMap={altglyph:"altGlyph",altglyphdef:"altGlyphDef",altglyphitem:"altGlyphItem",animatecolor:"animateColor",animatemotion:"animateMotion",animatetransform:"animateTransform",clippath:"clipPath",feblend:"feBlend",fecolormatrix:"feColorMatrix",fecomponenttransfer:"feComponentTransfer",fecomposite:"feComposite",feconvolvematrix:"feConvolveMatrix",fediffuselighting:"feDiffuseLighting",fedisplacementmap:"feDisplacementMap",fedistantlight:"feDistantLight",feflood:"feFlood",fefunca:"feFuncA",fefuncb:"feFuncB",fefuncg:"feFuncG",fefuncr:"feFuncR",fegaussianblur:"feGaussianBlur",feimage:"feImage",femerge:"feMerge",femergenode:"feMergeNode",femorphology:"feMorphology",feoffset:"feOffset",fepointlight:"fePointLight",fespecularlighting:"feSpecularLighting",fespotlight:"feSpotLight",fetile:"feTile",feturbulence:"feTurbulence",foreignobject:"foreignObject",glyphref:"glyphRef",lineargradient:"linearGradient",radialgradient:"radialGradient",textpath:"textPath"},n.MATHMLAttributeMap={definitionurl:"definitionURL"},n.SVGAttributeMap={attributename:"attributeName",attributetype:"attributeType",basefrequency:"baseFrequency",baseprofile:"baseProfile",calcmode:"calcMode",clippathunits:"clipPathUnits",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",diffuseconstant:"diffuseConstant",edgemode:"edgeMode",externalresourcesrequired:"externalResourcesRequired",filterres:"filterRes",filterunits:"filterUnits",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",limitingconeangle:"limitingConeAngle",markerheight:"markerHeight",markerunits:"markerUnits",markerwidth:"markerWidth",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",numoctaves:"numOctaves",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",refx:"refX",refy:"refY",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",specularconstant:"specularConstant",specularexponent:"specularExponent",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stitchtiles:"stitchTiles",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textlength:"textLength",viewbox:"viewBox",viewtarget:"viewTarget",xchannelselector:"xChannelSelector",ychannelselector:"yChannelSelector",zoomandpan:"zoomAndPan"},n.ForeignAttributeMap={"xlink:actuate":{prefix:"xlink",localName:"actuate",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:arcrole":{prefix:"xlink",localName:"arcrole",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:href":{prefix:"xlink",localName:"href",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:role":{prefix:"xlink",localName:"role",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:show":{prefix:"xlink",localName:"show",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:title":{prefix:"xlink",localName:"title",namespaceURI:"http://www.w3.org/1999/xlink"},"xlink:type":{prefix:"xlink",localName:"title",namespaceURI:"http://www.w3.org/1999/xlink"},"xml:base":{prefix:"xml",localName:"base",namespaceURI:"http://www.w3.org/XML/1998/namespace"},"xml:lang":{prefix:"xml",localName:"lang",namespaceURI:"http://www.w3.org/XML/1998/namespace"},"xml:space":{prefix:"xml",localName:"space",namespaceURI:"http://www.w3.org/XML/1998/namespace"},xmlns:{prefix:null,localName:"xmlns",namespaceURI:"http://www.w3.org/2000/xmlns/"},"xmlns:xlink":{prefix:"xmlns",localName:"xlink",namespaceURI:"http://www.w3.org/2000/xmlns/"}}},{}],8:[function(e,t,n){t.exports={"null-character":"Null character in input stream, replaced with U+FFFD.","invalid-codepoint":"Invalid codepoint in stream","incorrectly-placed-solidus":"Solidus (/) incorrectly placed in tag.","incorrect-cr-newline-entity":"Incorrect CR newline entity, replaced with LF.","illegal-windows-1252-entity":"Entity used with illegal number (windows-1252 reference).","cant-convert-numeric-entity":"Numeric entity couldn't be converted to character (codepoint U+{charAsInt}).","invalid-numeric-entity-replaced":"Numeric entity represents an illegal codepoint. Expanded to the C1 controls range.","numeric-entity-without-semicolon":"Numeric entity didn't end with ';'.","expected-numeric-entity-but-got-eof":"Numeric entity expected. Got end of file instead.","expected-numeric-entity":"Numeric entity expected but none found.","named-entity-without-semicolon":"Named entity didn't end with ';'.","expected-named-entity":"Named entity expected. Got none.","attributes-in-end-tag":"End tag contains unexpected attributes.","self-closing-flag-on-end-tag":"End tag contains unexpected self-closing flag.","bare-less-than-sign-at-eof":"End of file after <.","expected-tag-name-but-got-right-bracket":"Expected tag name. Got '>' instead.","expected-tag-name-but-got-question-mark":"Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)","expected-tag-name":"Expected tag name. Got something else instead.","expected-closing-tag-but-got-right-bracket":"Expected closing tag. Got '>' instead. Ignoring '</>'.","expected-closing-tag-but-got-eof":"Expected closing tag. Unexpected end of file.","expected-closing-tag-but-got-char":"Expected closing tag. Unexpected character '{data}' found.","eof-in-tag-name":"Unexpected end of file in the tag name.","expected-attribute-name-but-got-eof":"Unexpected end of file. Expected attribute name instead.","eof-in-attribute-name":"Unexpected end of file in attribute name.","invalid-character-in-attribute-name":"Invalid character in attribute name.","duplicate-attribute":"Dropped duplicate attribute '{name}' on tag.","expected-end-of-tag-but-got-eof":"Unexpected end of file. Expected = or end of tag.","expected-attribute-value-but-got-eof":"Unexpected end of file. Expected attribute value.","expected-attribute-value-but-got-right-bracket":"Expected attribute value. Got '>' instead.","unexpected-character-in-unquoted-attribute-value":"Unexpected character in unquoted attribute","invalid-character-after-attribute-name":"Unexpected character after attribute name.","unexpected-character-after-attribute-value":"Unexpected character after attribute value.","eof-in-attribute-value-double-quote":'Unexpected end of file in attribute value (").',"eof-in-attribute-value-single-quote":"Unexpected end of file in attribute value (').","eof-in-attribute-value-no-quotes":"Unexpected end of file in attribute value.","eof-after-attribute-value":"Unexpected end of file after attribute value.","unexpected-eof-after-solidus-in-tag":"Unexpected end of file in tag. Expected >.","unexpected-character-after-solidus-in-tag":"Unexpected character after / in tag. Expected >.","expected-dashes-or-doctype":"Expected '--' or 'DOCTYPE'. Not found.","unexpected-bang-after-double-dash-in-comment":"Unexpected ! after -- in comment.","incorrect-comment":"Incorrect comment.","eof-in-comment":"Unexpected end of file in comment.","eof-in-comment-end-dash":"Unexpected end of file in comment (-).","unexpected-dash-after-double-dash-in-comment":"Unexpected '-' after '--' found in comment.","eof-in-comment-double-dash":"Unexpected end of file in comment (--).","eof-in-comment-end-bang-state":"Unexpected end of file in comment.","unexpected-char-in-comment":"Unexpected character in comment found.","need-space-after-doctype":"No space after literal string 'DOCTYPE'.","expected-doctype-name-but-got-right-bracket":"Unexpected > character. Expected DOCTYPE name.","expected-doctype-name-but-got-eof":"Unexpected end of file. Expected DOCTYPE name.","eof-in-doctype-name":"Unexpected end of file in DOCTYPE name.","eof-in-doctype":"Unexpected end of file in DOCTYPE.","expected-space-or-right-bracket-in-doctype":"Expected space or '>'. Got '{data}'.","unexpected-end-of-doctype":"Unexpected end of DOCTYPE.","unexpected-char-in-doctype":"Unexpected character in DOCTYPE.","eof-in-bogus-doctype":"Unexpected end of file in bogus doctype.","eof-in-innerhtml":"Unexpected EOF in inner html mode.","unexpected-doctype":"Unexpected DOCTYPE. Ignored.","non-html-root":"html needs to be the first start tag.","expected-doctype-but-got-eof":"Unexpected End of file. Expected DOCTYPE.","unknown-doctype":"Erroneous DOCTYPE. Expected <!DOCTYPE html>.","quirky-doctype":"Quirky doctype. Expected <!DOCTYPE html>.","almost-standards-doctype":"Almost standards mode doctype. Expected <!DOCTYPE html>.","obsolete-doctype":"Obsolete doctype. Expected <!DOCTYPE html>.","expected-doctype-but-got-chars":"Non-space characters found without seeing a doctype first. Expected e.g. <!DOCTYPE html>.","expected-doctype-but-got-start-tag":"Start tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.","expected-doctype-but-got-end-tag":"End tag seen without seeing a doctype first. Expected e.g. <!DOCTYPE html>.","end-tag-after-implied-root":"Unexpected end tag ({name}) after the (implied) root element.","expected-named-closing-tag-but-got-eof":"Unexpected end of file. Expected end tag ({name}).","two-heads-are-not-better-than-one":"Unexpected start tag head in existing head. Ignored.","unexpected-end-tag":"Unexpected end tag ({name}). Ignored.","unexpected-implied-end-tag":"End tag {name} implied, but there were open elements.","unexpected-start-tag-out-of-my-head":"Unexpected start tag ({name}) that can be in head. Moved.","unexpected-start-tag":"Unexpected start tag ({name}).","missing-end-tag":"Missing end tag ({name}).","missing-end-tags":"Missing end tags ({name}).","unexpected-start-tag-implies-end-tag":"Unexpected start tag ({startName}) implies end tag ({endName}).","unexpected-start-tag-treated-as":"Unexpected start tag ({originalName}). Treated as {newName}.","deprecated-tag":"Unexpected start tag {name}. Don't use it!","unexpected-start-tag-ignored":"Unexpected start tag {name}. Ignored.","expected-one-end-tag-but-got-another":"Unexpected end tag ({gotName}). Missing end tag ({expectedName}).","end-tag-too-early":"End tag ({name}) seen too early. Expected other end tag.","end-tag-too-early-named":"Unexpected end tag ({gotName}). Expected end tag ({expectedName}.","end-tag-too-early-ignored":"End tag ({name}) seen too early. Ignored.","adoption-agency-1.1":"End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.","adoption-agency-1.2":"End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.","adoption-agency-1.3":"End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.","adoption-agency-4.4":"End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.","unexpected-end-tag-treated-as":"Unexpected end tag ({originalName}). Treated as {newName}.","no-end-tag":"This element ({name}) has no end tag.","unexpected-implied-end-tag-in-table":"Unexpected implied end tag ({name}) in the table phase.","unexpected-implied-end-tag-in-table-body":"Unexpected implied end tag ({name}) in the table body phase.","unexpected-char-implies-table-voodoo":"Unexpected non-space characters in table context caused voodoo mode.","unexpected-hidden-input-in-table":"Unexpected input with type hidden in table context.","unexpected-form-in-table":"Unexpected form in table context.","unexpected-start-tag-implies-table-voodoo":"Unexpected start tag ({name}) in table context caused voodoo mode.","unexpected-end-tag-implies-table-voodoo":"Unexpected end tag ({name}) in table context caused voodoo mode.","unexpected-cell-in-table-body":"Unexpected table cell start tag ({name}) in the table body phase.","unexpected-cell-end-tag":"Got table cell end tag ({name}) while required end tags are missing.","unexpected-end-tag-in-table-body":"Unexpected end tag ({name}) in the table body phase. Ignored.","unexpected-implied-end-tag-in-table-row":"Unexpected implied end tag ({name}) in the table row phase.","unexpected-end-tag-in-table-row":"Unexpected end tag ({name}) in the table row phase. Ignored.","unexpected-select-in-select":"Unexpected select start tag in the select phase treated as select end tag.","unexpected-input-in-select":"Unexpected input start tag in the select phase.","unexpected-start-tag-in-select":"Unexpected start tag token ({name}) in the select phase. Ignored.","unexpected-end-tag-in-select":"Unexpected end tag ({name}) in the select phase. Ignored.","unexpected-table-element-start-tag-in-select-in-table":"Unexpected table element start tag ({name}) in the select in table phase.","unexpected-table-element-end-tag-in-select-in-table":"Unexpected table element end tag ({name}) in the select in table phase.","unexpected-char-after-body":"Unexpected non-space characters in the after body phase.","unexpected-start-tag-after-body":"Unexpected start tag token ({name}) in the after body phase.","unexpected-end-tag-after-body":"Unexpected end tag token ({name}) in the after body phase.","unexpected-char-in-frameset":"Unepxected characters in the frameset phase. Characters ignored.","unexpected-start-tag-in-frameset":"Unexpected start tag token ({name}) in the frameset phase. Ignored.","unexpected-frameset-in-frameset-innerhtml":"Unexpected end tag token (frameset in the frameset phase (innerHTML).","unexpected-end-tag-in-frameset":"Unexpected end tag token ({name}) in the frameset phase. Ignored.","unexpected-char-after-frameset":"Unexpected non-space characters in the after frameset phase. Ignored.","unexpected-start-tag-after-frameset":"Unexpected start tag ({name}) in the after frameset phase. Ignored.","unexpected-end-tag-after-frameset":"Unexpected end tag ({name}) in the after frameset phase. Ignored.","expected-eof-but-got-char":"Unexpected non-space characters. Expected end of file.","expected-eof-but-got-start-tag":"Unexpected start tag ({name}). Expected end of file.","expected-eof-but-got-end-tag":"Unexpected end tag ({name}). Expected end of file.","unexpected-end-table-in-caption":"Unexpected end table tag in caption. Generates implied end caption.","end-html-in-innerhtml":"Unexpected html end tag in inner html mode.","eof-in-table":"Unexpected end of file. Expected table content.","eof-in-script":"Unexpected end of file. Expected script content.","non-void-element-with-trailing-solidus":"Trailing solidus not allowed on element {name}.","unexpected-html-element-in-foreign-content":'HTML start tag "{name}" in a foreign namespace context.',"unexpected-start-tag-in-table":"Unexpected {name}. Expected table content."}},{}],9:[function(e,t,n){function o(){this.contentHandler=null,this._errorHandler=null,this._treeBuilder=new r,this._tokenizer=new i(this._treeBuilder),this._scriptingEnabled=!1}var r=e("./SAXTreeBuilder").SAXTreeBuilder,i=e("../Tokenizer").Tokenizer,s=e("./TreeParser").TreeParser;o.prototype.parse=function(e){this._tokenizer.tokenize(e);var t=this._treeBuilder.document;t&&(new s(this.contentHandler)).parse(t)},o.prototype.parseFragment=function(e,t){this._treeBuilder.setFragmentContext(t),this._tokenizer.tokenize(e);var n=this._treeBuilder.getFragment();n&&(new s(this.contentHandler)).parse(n)},Object.defineProperty(o.prototype,"scriptingEnabled",{get:function(){return this._scriptingEnabled},set:function(e){this._scriptingEnabled=e,this._treeBuilder.scriptingEnabled=e}}),Object.defineProperty(o.prototype,"errorHandler",{get:function(){return this._errorHandler},set:function(e){this._errorHandler=e,this._treeBuilder.errorHandler=e}}),n.SAXParser=o},{"../Tokenizer":5,"./SAXTreeBuilder":10,"./TreeParser":11}],10:[function(e,t,n){function s(){i.call(this)}function o(e,t){for(var n=0;n<e.attributes.length;n++){var r=e.attributes[n];if(r.nodeName===t)return r.nodeValue}}function a(e){e?(this.columnNumber=e.columnNumber,this.lineNumber=e.lineNumber):(this.columnNumber=-1,this.lineNumber=-1),this.parentNode=null,this.nextSibling=null,this.firstChild=null}function f(e){a.call(this,e),this.lastChild=null,this._endLocator=null}function l(e){f.call(this,e),this.nodeType=u.DOCUMENT}function c(){f.call(this,new Locator),this.nodeType=u.DOCUMENT_FRAGMENT}function h(e,t,n,r,i,s){f.call(this,e),this.uri=t,this.localName=n,this.qName=r,this.attributes=i,this.prefixMappings=s,this.nodeType=u.ELEMENT}function p(e,t){a.call(this,e),this.data=t,this.nodeType=u.CHARACTERS}function d(e,t){a.call(this,e),this.data=t,this.nodeType=u.IGNORABLE_WHITESPACE}function v(e,t){a.call(this,e),this.data=t,this.nodeType=u.COMMENT}function m(e){f.call(this,e),this.nodeType=u.CDATA}function g(e){f.call(this),this.name=e,this.nodeType=u.ENTITY}function y(e){a.call(this),this.name=e,this.nodeType=u.SKIPPED_ENTITY}function b(e,t){a.call(this),this.target=e,this.data=t}function w(e,t,n){f.call(this),this.name=e,this.publicIdentifier=t,this.systemIdentifier=n,this.nodeType=u.DTD}var r=e("util"),i=e("../TreeBuilder").TreeBuilder;r.inherits(s,i),s.prototype.start=function(e){this.document=new l(this.tokenizer)},s.prototype.end=function(){this.document.endLocator=this.tokenizer},s.prototype.insertDoctype=function(e,t,n){var r=new w(this.tokenizer,e,t,n);r.endLocator=this.tokenizer,this.document.appendChild(r)},s.prototype.createElement=function(e,t,n){var r=new h(this.tokenizer,e,t,t,n||[]);return r},s.prototype.insertComment=function(e,t){t||(t=this.currentStackItem());var n=new v(this.tokenizer,e);t.appendChild(n)},s.prototype.appendCharacters=function(e,t){var n=new p(this.tokenizer,t);e.appendChild(n)},s.prototype.insertText=function(e){if(this.redirectAttachToFosterParent&&this.openElements.top.isFosterParenting()){var t=this.openElements.findIndex("table"),n=this.openElements.item(t),r=n.node;if(t===0)return this.appendCharacters(r,e);var i=new p(this.tokenizer,e),s=r.parentNode;if(s){s.insertBetween(i,r.previousSibling,r);return}var o=this.openElements.item(t-1).node;o.appendChild(i);return}this.appendCharacters(this.currentStackItem().node,e)},s.prototype.attachNode=function(e,t){t.appendChild(e)},s.prototype.attachNodeToFosterParent=function(e,t,n){var r=t.parentNode;r?r.insertBetween(e,t.previousSibling,t):n.appendChild(e)},s.prototype.detachFromParent=function(e){e.detach()},s.prototype.reparentChildren=function(e,t){t.appendChildren(e.firstChild)},s.prototype.getFragment=function(){var e=new c;return this.reparentChildren(this.openElements.rootNode,e),e},s.prototype.addAttributesToElement=function(e,t){for(var n=0;n<t.length;n++){var r=t[n];o(e,r.nodeName)||e.attributes.push(r)}};var u={CDATA:1,CHARACTERS:2,COMMENT:3,DOCUMENT:4,DOCUMENT_FRAGMENT:5,DTD:6,ELEMENT:7,ENTITY:8,IGNORABLE_WHITESPACE:9,PROCESSING_INSTRUCTION:10,SKIPPED_ENTITY:11};a.prototype.visit=function(e){throw new Error("Not Implemented")},a.prototype.revisit=function(e){return},a.prototype.detach=function(){this.parentNode!==null&&(this.parentNode.removeChild(this),this.parentNode=null)},Object.defineProperty(a.prototype,"previousSibling",{get:function(){var e=null,t=this.parentNode.firstChild;for(;;){if(this==t)return e;e=t,t=t.nextSibling}}}),f.prototype=Object.create(a.prototype),f.prototype.insertBefore=function(e,t){if(!t)return this.appendChild(e);e.detach(),e.parentNode=this;if(this.firstChild==t)e.nextSibling=t,this.firstChild=e;else{var n=this.firstChild,r=this.firstChild.nextSibling;while(r!=t)n=r,r=r.nextSibling;n.nextSibling=e,e.nextSibling=r}return e},f.prototype.insertBetween=function(e,t,n){return n?(e.detach(),e.parentNode=this,e.nextSibling=n,t?t.nextSibling=e:firstChild=e,e):this.appendChild(e)},f.prototype.appendChild=function(e){return e.detach(),e.parentNode=this,this.firstChild?this.lastChild.nextSibling=e:this.firstChild=e,this.lastChild=e,e},f.prototype.appendChildren=function(e){var t=e.firstChild;if(!t)return;var n=e;this.firstChild?this.lastChild.nextSibling=t:this.firstChild=t,this.lastChild=n.lastChild;do t.parentNode=this;while(t=t.nextSibling);n.firstChild=null,n.lastChild=null},f.prototype.removeChild=function(e){if(this.firstChild==e)this.firstChild=e.nextSibling,this.lastChild==e&&(this.lastChild=null);else{var t=this.firstChild,n=this.firstChild.nextSibling;while(n!=e)t=n,n=n.nextSibling;t.nextSibling=e.nextSibling,this.lastChild==e&&(this.lastChild=t)}return e.parentNode=null,e},Object.defineProperty(f.prototype,"endLocator",{get:function(){return this._endLocator},set:function(e){this._endLocator={lineNumber:e.lineNumber,columnNumber:e.columnNumber}}}),l.prototype=Object.create(f.prototype),l.prototype.visit=function(e){e.startDocument(this)},l.prototype.revisit=function(e){e.endDocument(this.endLocator)},c.prototype=Object.create(f.prototype),c.prototype.visit=function(e){},h.prototype=Object.create(f.prototype),h.prototype.visit=function(e){if(this.prefixMappings)for(var t in prefixMappings){var n=prefixMappings[t];e.startPrefixMapping(n.getPrefix(),n.getUri(),this)}e.startElement(this.uri,this.localName,this.qName,this.attributes,this)},h.prototype.revisit=function(e){e.endElement(this.uri,this.localName,this.qName,this.endLocator);if(this.prefixMappings)for(var t in prefixMappings){var n=prefixMappings[t];e.endPrefixMapping(n.getPrefix(),this.endLocator)}},p.prototype=Object.create(a.prototype),p.prototype.visit=function(e){e.characters(this.data,0,this.data.length,this)},d.prototype=Object.create(a.prototype),d.prototype.visit=function(e){e.ignorableWhitespace(this.data,0,this.data.length,this)},v.prototype=Object.create(a.prototype),v.prototype.visit=function(e){e.comment(this.data,0,this.data.length,this)},m.prototype=Object.create(f.prototype),m.prototype.visit=function(e){e.startCDATA(this)},m.prototype.revisit=function(e){e.endCDATA(this.endLocator)},g.prototype=Object.create(f.prototype),g.prototype.visit=function(e){e.startEntity(this.name,this)},g.prototype.revisit=function(e){e.endEntity(this.name)},y.prototype=Object.create(a.prototype),y.prototype.visit=function(e){e.skippedEntity(this.name,this)},b.prototype=Object.create(a.prototype),b.prototype.visit=function(e){e.processingInstruction(this.target,this.data,this)},b.prototype.getNodeType=function(){return u.PROCESSING_INSTRUCTION},w.prototype=Object.create(f.prototype),w.prototype.visit=function(e){e.startDTD(this.name,this.publicIdentifier,this.systemIdentifier,this)},w.prototype.revisit=function(e){e.endDTD()},n.SAXTreeBuilder=s},{"../TreeBuilder":6,util:20}],11:[function(e,t,n){function r(e,t){this.contentHandler,this.lexicalHandler,this.locatorDelegate;if(!e)throw new IllegalArgumentException("contentHandler was null.");this.contentHandler=e,t?this.lexicalHandler=t:this.lexicalHandler=new i}function i(){}r.prototype.parse=function(e){this.contentHandler.documentLocator=this;var t=e,n;for(;;){t.visit(this);if(n=t.firstChild){t=n;continue}for(;;){t.revisit(this);if(t==e)return;if(n=t.nextSibling){t=n;break}t=t.parentNode}}},r.prototype.characters=function(e,t,n,r){this.locatorDelegate=r,this.contentHandler.characters(e,t,n)},r.prototype.endDocument=function(e){this.locatorDelegate=e,this.contentHandler.endDocument()},r.prototype.endElement=function(e,t,n,r){this.locatorDelegate=r,this.contentHandler.endElement(e,t,n)},r.prototype.endPrefixMapping=function(e,t){this.locatorDelegate=t,this.contentHandler.endPrefixMapping(e)},r.prototype.ignorableWhitespace=function(e,t,n,r){this.locatorDelegate=r,this.contentHandler.ignorableWhitespace(e,t,n)},r.prototype.processingInstruction=function(e,t,n){this.locatorDelegate=n,this.contentHandler.processingInstruction(e,t)},r.prototype.skippedEntity=function(e,t){this.locatorDelegate=t,this.contentHandler.skippedEntity(e)},r.prototype.startDocument=function(e){this.locatorDelegate=e,this.contentHandler.startDocument()},r.prototype.startElement=function(e,t,n,r,i){this.locatorDelegate=i,this.contentHandler.startElement(e,t,n,r)},r.prototype.startPrefixMapping=function(e,t,n){this.locatorDelegate=n,this.contentHandler.startPrefixMapping(e,t)},r.prototype.comment=function(e,t,n,r){this.locatorDelegate=r,this.lexicalHandler.comment(e,t,n)},r.prototype.endCDATA=function(e){this.locatorDelegate=e,this.lexicalHandler.endCDATA()},r.prototype.endDTD=function(e){this.locatorDelegate=e,this.lexicalHandler.endDTD()},r.prototype.endEntity=function(e,t){this.locatorDelegate=t,this.lexicalHandler.endEntity(e)},r.prototype.startCDATA=function(e){this.locatorDelegate=e,this.lexicalHandler.startCDATA()},r.prototype.startDTD=function(e,t,n,r){this.locatorDelegate=r,this.lexicalHandler.startDTD(e,t,n)},r.prototype.startEntity=function(e,t){this.locatorDelegate=t,this.lexicalHandler.startEntity(e)},Object.defineProperty(r.prototype,"columnNumber",{get:function(){return this.locatorDelegate?this.locatorDelegate.columnNumber:-1}}),Object.defineProperty(r.prototype,"lineNumber",{get:function(){return this.locatorDelegate?this.locatorDelegate.lineNumber:-1}}),i.prototype.comment=function(){},i.prototype.endCDATA=function(){},i.prototype.endDTD=function(){},i.prototype.endEntity=function(){},i.prototype.startCDATA=function(){},i.prototype.startDTD=function(){},i.prototype.startEntity=function(){},n.TreeParser=r},{}],12:[function(e,t,n){t.exports={"Aacute;":"\u00c1",Aacute:"\u00c1","aacute;":"\u00e1",aacute:"\u00e1","Abreve;":"\u0102","abreve;":"\u0103","ac;":"\u223e","acd;":"\u223f","acE;":"\u223e\u0333","Acirc;":"\u00c2",Acirc:"\u00c2","acirc;":"\u00e2",acirc:"\u00e2","acute;":"\u00b4",acute:"\u00b4","Acy;":"\u0410","acy;":"\u0430","AElig;":"\u00c6",AElig:"\u00c6","aelig;":"\u00e6",aelig:"\u00e6","af;":"\u2061","Afr;":"\ud835\udd04","afr;":"\ud835\udd1e","Agrave;":"\u00c0",Agrave:"\u00c0","agrave;":"\u00e0",agrave:"\u00e0","alefsym;":"\u2135","aleph;":"\u2135","Alpha;":"\u0391","alpha;":"\u03b1","Amacr;":"\u0100","amacr;":"\u0101","amalg;":"\u2a3f","amp;":"&",amp:"&","AMP;":"&",AMP:"&","andand;":"\u2a55","And;":"\u2a53","and;":"\u2227","andd;":"\u2a5c","andslope;":"\u2a58","andv;":"\u2a5a","ang;":"\u2220","ange;":"\u29a4","angle;":"\u2220","angmsdaa;":"\u29a8","angmsdab;":"\u29a9","angmsdac;":"\u29aa","angmsdad;":"\u29ab","angmsdae;":"\u29ac","angmsdaf;":"\u29ad","angmsdag;":"\u29ae","angmsdah;":"\u29af","angmsd;":"\u2221","angrt;":"\u221f","angrtvb;":"\u22be","angrtvbd;":"\u299d","angsph;":"\u2222","angst;":"\u00c5","angzarr;":"\u237c","Aogon;":"\u0104","aogon;":"\u0105","Aopf;":"\ud835\udd38","aopf;":"\ud835\udd52","apacir;":"\u2a6f","ap;":"\u2248","apE;":"\u2a70","ape;":"\u224a","apid;":"\u224b","apos;":"'","ApplyFunction;":"\u2061","approx;":"\u2248","approxeq;":"\u224a","Aring;":"\u00c5",Aring:"\u00c5","aring;":"\u00e5",aring:"\u00e5","Ascr;":"\ud835\udc9c","ascr;":"\ud835\udcb6","Assign;":"\u2254","ast;":"*","asymp;":"\u2248","asympeq;":"\u224d","Atilde;":"\u00c3",Atilde:"\u00c3","atilde;":"\u00e3",atilde:"\u00e3","Auml;":"\u00c4",Auml:"\u00c4","auml;":"\u00e4",auml:"\u00e4","awconint;":"\u2233","awint;":"\u2a11","backcong;":"\u224c","backepsilon;":"\u03f6","backprime;":"\u2035","backsim;":"\u223d","backsimeq;":"\u22cd","Backslash;":"\u2216","Barv;":"\u2ae7","barvee;":"\u22bd","barwed;":"\u2305","Barwed;":"\u2306","barwedge;":"\u2305","bbrk;":"\u23b5","bbrktbrk;":"\u23b6","bcong;":"\u224c","Bcy;":"\u0411","bcy;":"\u0431","bdquo;":"\u201e","becaus;":"\u2235","because;":"\u2235","Because;":"\u2235","bemptyv;":"\u29b0","bepsi;":"\u03f6","bernou;":"\u212c","Bernoullis;":"\u212c","Beta;":"\u0392","beta;":"\u03b2","beth;":"\u2136","between;":"\u226c","Bfr;":"\ud835\udd05","bfr;":"\ud835\udd1f","bigcap;":"\u22c2","bigcirc;":"\u25ef","bigcup;":"\u22c3","bigodot;":"\u2a00","bigoplus;":"\u2a01","bigotimes;":"\u2a02","bigsqcup;":"\u2a06","bigstar;":"\u2605","bigtriangledown;":"\u25bd","bigtriangleup;":"\u25b3","biguplus;":"\u2a04","bigvee;":"\u22c1","bigwedge;":"\u22c0","bkarow;":"\u290d","blacklozenge;":"\u29eb","blacksquare;":"\u25aa","blacktriangle;":"\u25b4","blacktriangledown;":"\u25be","blacktriangleleft;":"\u25c2","blacktriangleright;":"\u25b8","blank;":"\u2423","blk12;":"\u2592","blk14;":"\u2591","blk34;":"\u2593","block;":"\u2588","bne;":"=\u20e5","bnequiv;":"\u2261\u20e5","bNot;":"\u2aed","bnot;":"\u2310","Bopf;":"\ud835\udd39","bopf;":"\ud835\udd53","bot;":"\u22a5","bottom;":"\u22a5","bowtie;":"\u22c8","boxbox;":"\u29c9","boxdl;":"\u2510","boxdL;":"\u2555","boxDl;":"\u2556","boxDL;":"\u2557","boxdr;":"\u250c","boxdR;":"\u2552","boxDr;":"\u2553","boxDR;":"\u2554","boxh;":"\u2500","boxH;":"\u2550","boxhd;":"\u252c","boxHd;":"\u2564","boxhD;":"\u2565","boxHD;":"\u2566","boxhu;":"\u2534","boxHu;":"\u2567","boxhU;":"\u2568","boxHU;":"\u2569","boxminus;":"\u229f","boxplus;":"\u229e","boxtimes;":"\u22a0","boxul;":"\u2518","boxuL;":"\u255b","boxUl;":"\u255c","boxUL;":"\u255d","boxur;":"\u2514","boxuR;":"\u2558","boxUr;":"\u2559","boxUR;":"\u255a","boxv;":"\u2502","boxV;":"\u2551","boxvh;":"\u253c","boxvH;":"\u256a","boxVh;":"\u256b","boxVH;":"\u256c","boxvl;":"\u2524","boxvL;":"\u2561","boxVl;":"\u2562","boxVL;":"\u2563","boxvr;":"\u251c","boxvR;":"\u255e","boxVr;":"\u255f","boxVR;":"\u2560","bprime;":"\u2035","breve;":"\u02d8","Breve;":"\u02d8","brvbar;":"\u00a6",brvbar:"\u00a6","bscr;":"\ud835\udcb7","Bscr;":"\u212c","bsemi;":"\u204f","bsim;":"\u223d","bsime;":"\u22cd","bsolb;":"\u29c5","bsol;":"\\","bsolhsub;":"\u27c8","bull;":"\u2022","bullet;":"\u2022","bump;":"\u224e","bumpE;":"\u2aae","bumpe;":"\u224f","Bumpeq;":"\u224e","bumpeq;":"\u224f","Cacute;":"\u0106","cacute;":"\u0107","capand;":"\u2a44","capbrcup;":"\u2a49","capcap;":"\u2a4b","cap;":"\u2229","Cap;":"\u22d2","capcup;":"\u2a47","capdot;":"\u2a40","CapitalDifferentialD;":"\u2145","caps;":"\u2229\ufe00","caret;":"\u2041","caron;":"\u02c7","Cayleys;":"\u212d","ccaps;":"\u2a4d","Ccaron;":"\u010c","ccaron;":"\u010d","Ccedil;":"\u00c7",Ccedil:"\u00c7","ccedil;":"\u00e7",ccedil:"\u00e7","Ccirc;":"\u0108","ccirc;":"\u0109","Cconint;":"\u2230","ccups;":"\u2a4c","ccupssm;":"\u2a50","Cdot;":"\u010a","cdot;":"\u010b","cedil;":"\u00b8",cedil:"\u00b8","Cedilla;":"\u00b8","cemptyv;":"\u29b2","cent;":"\u00a2",cent:"\u00a2","centerdot;":"\u00b7","CenterDot;":"\u00b7","cfr;":"\ud835\udd20","Cfr;":"\u212d","CHcy;":"\u0427","chcy;":"\u0447","check;":"\u2713","checkmark;":"\u2713","Chi;":"\u03a7","chi;":"\u03c7","circ;":"\u02c6","circeq;":"\u2257","circlearrowleft;":"\u21ba","circlearrowright;":"\u21bb","circledast;":"\u229b","circledcirc;":"\u229a","circleddash;":"\u229d","CircleDot;":"\u2299","circledR;":"\u00ae","circledS;":"\u24c8","CircleMinus;":"\u2296","CirclePlus;":"\u2295","CircleTimes;":"\u2297","cir;":"\u25cb","cirE;":"\u29c3","cire;":"\u2257","cirfnint;":"\u2a10","cirmid;":"\u2aef","cirscir;":"\u29c2","ClockwiseContourIntegral;":"\u2232","CloseCurlyDoubleQuote;":"\u201d","CloseCurlyQuote;":"\u2019","clubs;":"\u2663","clubsuit;":"\u2663","colon;":":","Colon;":"\u2237","Colone;":"\u2a74","colone;":"\u2254","coloneq;":"\u2254","comma;":",","commat;":"@","comp;":"\u2201","compfn;":"\u2218","complement;":"\u2201","complexes;":"\u2102","cong;":"\u2245","congdot;":"\u2a6d","Congruent;":"\u2261","conint;":"\u222e","Conint;":"\u222f","ContourIntegral;":"\u222e","copf;":"\ud835\udd54","Copf;":"\u2102","coprod;":"\u2210","Coproduct;":"\u2210","copy;":"\u00a9",copy:"\u00a9","COPY;":"\u00a9",COPY:"\u00a9","copysr;":"\u2117","CounterClockwiseContourIntegral;":"\u2233","crarr;":"\u21b5","cross;":"\u2717","Cross;":"\u2a2f","Cscr;":"\ud835\udc9e","cscr;":"\ud835\udcb8","csub;":"\u2acf","csube;":"\u2ad1","csup;":"\u2ad0","csupe;":"\u2ad2","ctdot;":"\u22ef","cudarrl;":"\u2938","cudarrr;":"\u2935","cuepr;":"\u22de","cuesc;":"\u22df","cularr;":"\u21b6","cularrp;":"\u293d","cupbrcap;":"\u2a48","cupcap;":"\u2a46","CupCap;":"\u224d","cup;":"\u222a","Cup;":"\u22d3","cupcup;":"\u2a4a","cupdot;":"\u228d","cupor;":"\u2a45","cups;":"\u222a\ufe00","curarr;":"\u21b7","curarrm;":"\u293c","curlyeqprec;":"\u22de","curlyeqsucc;":"\u22df","curlyvee;":"\u22ce","curlywedge;":"\u22cf","curren;":"\u00a4",curren:"\u00a4","curvearrowleft;":"\u21b6","curvearrowright;":"\u21b7","cuvee;":"\u22ce","cuwed;":"\u22cf","cwconint;":"\u2232","cwint;":"\u2231","cylcty;":"\u232d","dagger;":"\u2020","Dagger;":"\u2021","daleth;":"\u2138","darr;":"\u2193","Darr;":"\u21a1","dArr;":"\u21d3","dash;":"\u2010","Dashv;":"\u2ae4","dashv;":"\u22a3","dbkarow;":"\u290f","dblac;":"\u02dd","Dcaron;":"\u010e","dcaron;":"\u010f","Dcy;":"\u0414","dcy;":"\u0434","ddagger;":"\u2021","ddarr;":"\u21ca","DD;":"\u2145","dd;":"\u2146","DDotrahd;":"\u2911","ddotseq;":"\u2a77","deg;":"\u00b0",deg:"\u00b0","Del;":"\u2207","Delta;":"\u0394","delta;":"\u03b4","demptyv;":"\u29b1","dfisht;":"\u297f","Dfr;":"\ud835\udd07","dfr;":"\ud835\udd21","dHar;":"\u2965","dharl;":"\u21c3","dharr;":"\u21c2","DiacriticalAcute;":"\u00b4","DiacriticalDot;":"\u02d9","DiacriticalDoubleAcute;":"\u02dd","DiacriticalGrave;":"`","DiacriticalTilde;":"\u02dc","diam;":"\u22c4","diamond;":"\u22c4","Diamond;":"\u22c4","diamondsuit;":"\u2666","diams;":"\u2666","die;":"\u00a8","DifferentialD;":"\u2146","digamma;":"\u03dd","disin;":"\u22f2","div;":"\u00f7","divide;":"\u00f7",divide:"\u00f7","divideontimes;":"\u22c7","divonx;":"\u22c7","DJcy;":"\u0402","djcy;":"\u0452","dlcorn;":"\u231e","dlcrop;":"\u230d","dollar;":"$","Dopf;":"\ud835\udd3b","dopf;":"\ud835\udd55","Dot;":"\u00a8","dot;":"\u02d9","DotDot;":"\u20dc","doteq;":"\u2250","doteqdot;":"\u2251","DotEqual;":"\u2250","dotminus;":"\u2238","dotplus;":"\u2214","dotsquare;":"\u22a1","doublebarwedge;":"\u2306","DoubleContourIntegral;":"\u222f","DoubleDot;":"\u00a8","DoubleDownArrow;":"\u21d3","DoubleLeftArrow;":"\u21d0","DoubleLeftRightArrow;":"\u21d4","DoubleLeftTee;":"\u2ae4","DoubleLongLeftArrow;":"\u27f8","DoubleLongLeftRightArrow;":"\u27fa","DoubleLongRightArrow;":"\u27f9","DoubleRightArrow;":"\u21d2","DoubleRightTee;":"\u22a8","DoubleUpArrow;":"\u21d1","DoubleUpDownArrow;":"\u21d5","DoubleVerticalBar;":"\u2225","DownArrowBar;":"\u2913","downarrow;":"\u2193","DownArrow;":"\u2193","Downarrow;":"\u21d3","DownArrowUpArrow;":"\u21f5","DownBreve;":"\u0311","downdownarrows;":"\u21ca","downharpoonleft;":"\u21c3","downharpoonright;":"\u21c2","DownLeftRightVector;":"\u2950","DownLeftTeeVector;":"\u295e","DownLeftVectorBar;":"\u2956","DownLeftVector;":"\u21bd","DownRightTeeVector;":"\u295f","DownRightVectorBar;":"\u2957","DownRightVector;":"\u21c1","DownTeeArrow;":"\u21a7","DownTee;":"\u22a4","drbkarow;":"\u2910","drcorn;":"\u231f","drcrop;":"\u230c","Dscr;":"\ud835\udc9f","dscr;":"\ud835\udcb9","DScy;":"\u0405","dscy;":"\u0455","dsol;":"\u29f6","Dstrok;":"\u0110","dstrok;":"\u0111","dtdot;":"\u22f1","dtri;":"\u25bf","dtrif;":"\u25be","duarr;":"\u21f5","duhar;":"\u296f","dwangle;":"\u29a6","DZcy;":"\u040f","dzcy;":"\u045f","dzigrarr;":"\u27ff","Eacute;":"\u00c9",Eacute:"\u00c9","eacute;":"\u00e9",eacute:"\u00e9","easter;":"\u2a6e","Ecaron;":"\u011a","ecaron;":"\u011b","Ecirc;":"\u00ca",Ecirc:"\u00ca","ecirc;":"\u00ea",ecirc:"\u00ea","ecir;":"\u2256","ecolon;":"\u2255","Ecy;":"\u042d","ecy;":"\u044d","eDDot;":"\u2a77","Edot;":"\u0116","edot;":"\u0117","eDot;":"\u2251","ee;":"\u2147","efDot;":"\u2252","Efr;":"\ud835\udd08","efr;":"\ud835\udd22","eg;":"\u2a9a","Egrave;":"\u00c8",Egrave:"\u00c8","egrave;":"\u00e8",egrave:"\u00e8","egs;":"\u2a96","egsdot;":"\u2a98","el;":"\u2a99","Element;":"\u2208","elinters;":"\u23e7","ell;":"\u2113","els;":"\u2a95","elsdot;":"\u2a97","Emacr;":"\u0112","emacr;":"\u0113","empty;":"\u2205","emptyset;":"\u2205","EmptySmallSquare;":"\u25fb","emptyv;":"\u2205","EmptyVerySmallSquare;":"\u25ab","emsp13;":"\u2004","emsp14;":"\u2005","emsp;":"\u2003","ENG;":"\u014a","eng;":"\u014b","ensp;":"\u2002","Eogon;":"\u0118","eogon;":"\u0119","Eopf;":"\ud835\udd3c","eopf;":"\ud835\udd56","epar;":"\u22d5","eparsl;":"\u29e3","eplus;":"\u2a71","epsi;":"\u03b5","Epsilon;":"\u0395","epsilon;":"\u03b5","epsiv;":"\u03f5","eqcirc;":"\u2256","eqcolon;":"\u2255","eqsim;":"\u2242","eqslantgtr;":"\u2a96","eqslantless;":"\u2a95","Equal;":"\u2a75","equals;":"=","EqualTilde;":"\u2242","equest;":"\u225f","Equilibrium;":"\u21cc","equiv;":"\u2261","equivDD;":"\u2a78","eqvparsl;":"\u29e5","erarr;":"\u2971","erDot;":"\u2253","escr;":"\u212f","Escr;":"\u2130","esdot;":"\u2250","Esim;":"\u2a73","esim;":"\u2242","Eta;":"\u0397","eta;":"\u03b7","ETH;":"\u00d0",ETH:"\u00d0","eth;":"\u00f0",eth:"\u00f0","Euml;":"\u00cb",Euml:"\u00cb","euml;":"\u00eb",euml:"\u00eb","euro;":"\u20ac","excl;":"!","exist;":"\u2203","Exists;":"\u2203","expectation;":"\u2130","exponentiale;":"\u2147","ExponentialE;":"\u2147","fallingdotseq;":"\u2252","Fcy;":"\u0424","fcy;":"\u0444","female;":"\u2640","ffilig;":"\ufb03","fflig;":"\ufb00","ffllig;":"\ufb04","Ffr;":"\ud835\udd09","ffr;":"\ud835\udd23","filig;":"\ufb01","FilledSmallSquare;":"\u25fc","FilledVerySmallSquare;":"\u25aa","fjlig;":"fj","flat;":"\u266d","fllig;":"\ufb02","fltns;":"\u25b1","fnof;":"\u0192","Fopf;":"\ud835\udd3d","fopf;":"\ud835\udd57","forall;":"\u2200","ForAll;":"\u2200","fork;":"\u22d4","forkv;":"\u2ad9","Fouriertrf;":"\u2131","fpartint;":"\u2a0d","frac12;":"\u00bd",frac12:"\u00bd","frac13;":"\u2153","frac14;":"\u00bc",frac14:"\u00bc","frac15;":"\u2155","frac16;":"\u2159","frac18;":"\u215b","frac23;":"\u2154","frac25;":"\u2156","frac34;":"\u00be",frac34:"\u00be","frac35;":"\u2157","frac38;":"\u215c","frac45;":"\u2158","frac56;":"\u215a","frac58;":"\u215d","frac78;":"\u215e","frasl;":"\u2044","frown;":"\u2322","fscr;":"\ud835\udcbb","Fscr;":"\u2131","gacute;":"\u01f5","Gamma;":"\u0393","gamma;":"\u03b3","Gammad;":"\u03dc","gammad;":"\u03dd","gap;":"\u2a86","Gbreve;":"\u011e","gbreve;":"\u011f","Gcedil;":"\u0122","Gcirc;":"\u011c","gcirc;":"\u011d","Gcy;":"\u0413","gcy;":"\u0433","Gdot;":"\u0120","gdot;":"\u0121","ge;":"\u2265","gE;":"\u2267","gEl;":"\u2a8c","gel;":"\u22db","geq;":"\u2265","geqq;":"\u2267","geqslant;":"\u2a7e","gescc;":"\u2aa9","ges;":"\u2a7e","gesdot;":"\u2a80","gesdoto;":"\u2a82","gesdotol;":"\u2a84","gesl;":"\u22db\ufe00","gesles;":"\u2a94","Gfr;":"\ud835\udd0a","gfr;":"\ud835\udd24","gg;":"\u226b","Gg;":"\u22d9","ggg;":"\u22d9","gimel;":"\u2137","GJcy;":"\u0403","gjcy;":"\u0453","gla;":"\u2aa5","gl;":"\u2277","glE;":"\u2a92","glj;":"\u2aa4","gnap;":"\u2a8a","gnapprox;":"\u2a8a","gne;":"\u2a88","gnE;":"\u2269","gneq;":"\u2a88","gneqq;":"\u2269","gnsim;":"\u22e7","Gopf;":"\ud835\udd3e","gopf;":"\ud835\udd58","grave;":"`","GreaterEqual;":"\u2265","GreaterEqualLess;":"\u22db","GreaterFullEqual;":"\u2267","GreaterGreater;":"\u2aa2","GreaterLess;":"\u2277","GreaterSlantEqual;":"\u2a7e","GreaterTilde;":"\u2273","Gscr;":"\ud835\udca2","gscr;":"\u210a","gsim;":"\u2273","gsime;":"\u2a8e","gsiml;":"\u2a90","gtcc;":"\u2aa7","gtcir;":"\u2a7a","gt;":">",gt:">","GT;":">",GT:">","Gt;":"\u226b","gtdot;":"\u22d7","gtlPar;":"\u2995","gtquest;":"\u2a7c","gtrapprox;":"\u2a86","gtrarr;":"\u2978","gtrdot;":"\u22d7","gtreqless;":"\u22db","gtreqqless;":"\u2a8c","gtrless;":"\u2277","gtrsim;":"\u2273","gvertneqq;":"\u2269\ufe00","gvnE;":"\u2269\ufe00","Hacek;":"\u02c7","hairsp;":"\u200a","half;":"\u00bd","hamilt;":"\u210b","HARDcy;":"\u042a","hardcy;":"\u044a","harrcir;":"\u2948","harr;":"\u2194","hArr;":"\u21d4","harrw;":"\u21ad","Hat;":"^","hbar;":"\u210f","Hcirc;":"\u0124","hcirc;":"\u0125","hearts;":"\u2665","heartsuit;":"\u2665","hellip;":"\u2026","hercon;":"\u22b9","hfr;":"\ud835\udd25","Hfr;":"\u210c","HilbertSpace;":"\u210b","hksearow;":"\u2925","hkswarow;":"\u2926","hoarr;":"\u21ff","homtht;":"\u223b","hookleftarrow;":"\u21a9","hookrightarrow;":"\u21aa","hopf;":"\ud835\udd59","Hopf;":"\u210d","horbar;":"\u2015","HorizontalLine;":"\u2500","hscr;":"\ud835\udcbd","Hscr;":"\u210b","hslash;":"\u210f","Hstrok;":"\u0126","hstrok;":"\u0127","HumpDownHump;":"\u224e","HumpEqual;":"\u224f","hybull;":"\u2043","hyphen;":"\u2010","Iacute;":"\u00cd",Iacute:"\u00cd","iacute;":"\u00ed",iacute:"\u00ed","ic;":"\u2063","Icirc;":"\u00ce",Icirc:"\u00ce","icirc;":"\u00ee",icirc:"\u00ee","Icy;":"\u0418","icy;":"\u0438","Idot;":"\u0130","IEcy;":"\u0415","iecy;":"\u0435","iexcl;":"\u00a1",iexcl:"\u00a1","iff;":"\u21d4","ifr;":"\ud835\udd26","Ifr;":"\u2111","Igrave;":"\u00cc",Igrave:"\u00cc","igrave;":"\u00ec",igrave:"\u00ec","ii;":"\u2148","iiiint;":"\u2a0c","iiint;":"\u222d","iinfin;":"\u29dc","iiota;":"\u2129","IJlig;":"\u0132","ijlig;":"\u0133","Imacr;":"\u012a","imacr;":"\u012b","image;":"\u2111","ImaginaryI;":"\u2148","imagline;":"\u2110","imagpart;":"\u2111","imath;":"\u0131","Im;":"\u2111","imof;":"\u22b7","imped;":"\u01b5","Implies;":"\u21d2","incare;":"\u2105","in;":"\u2208","infin;":"\u221e","infintie;":"\u29dd","inodot;":"\u0131","intcal;":"\u22ba","int;":"\u222b","Int;":"\u222c","integers;":"\u2124","Integral;":"\u222b","intercal;":"\u22ba","Intersection;":"\u22c2","intlarhk;":"\u2a17","intprod;":"\u2a3c","InvisibleComma;":"\u2063","InvisibleTimes;":"\u2062","IOcy;":"\u0401","iocy;":"\u0451","Iogon;":"\u012e","iogon;":"\u012f","Iopf;":"\ud835\udd40","iopf;":"\ud835\udd5a","Iota;":"\u0399","iota;":"\u03b9","iprod;":"\u2a3c","iquest;":"\u00bf",iquest:"\u00bf","iscr;":"\ud835\udcbe","Iscr;":"\u2110","isin;":"\u2208","isindot;":"\u22f5","isinE;":"\u22f9","isins;":"\u22f4","isinsv;":"\u22f3","isinv;":"\u2208","it;":"\u2062","Itilde;":"\u0128","itilde;":"\u0129","Iukcy;":"\u0406","iukcy;":"\u0456","Iuml;":"\u00cf",Iuml:"\u00cf","iuml;":"\u00ef",iuml:"\u00ef","Jcirc;":"\u0134","jcirc;":"\u0135","Jcy;":"\u0419","jcy;":"\u0439","Jfr;":"\ud835\udd0d","jfr;":"\ud835\udd27","jmath;":"\u0237","Jopf;":"\ud835\udd41","jopf;":"\ud835\udd5b","Jscr;":"\ud835\udca5","jscr;":"\ud835\udcbf","Jsercy;":"\u0408","jsercy;":"\u0458","Jukcy;":"\u0404","jukcy;":"\u0454","Kappa;":"\u039a","kappa;":"\u03ba","kappav;":"\u03f0","Kcedil;":"\u0136","kcedil;":"\u0137","Kcy;":"\u041a","kcy;":"\u043a","Kfr;":"\ud835\udd0e","kfr;":"\ud835\udd28","kgreen;":"\u0138","KHcy;":"\u0425","khcy;":"\u0445","KJcy;":"\u040c","kjcy;":"\u045c","Kopf;":"\ud835\udd42","kopf;":"\ud835\udd5c","Kscr;":"\ud835\udca6","kscr;":"\ud835\udcc0","lAarr;":"\u21da","Lacute;":"\u0139","lacute;":"\u013a","laemptyv;":"\u29b4","lagran;":"\u2112","Lambda;":"\u039b","lambda;":"\u03bb","lang;":"\u27e8","Lang;":"\u27ea","langd;":"\u2991","langle;":"\u27e8","lap;":"\u2a85","Laplacetrf;":"\u2112","laquo;":"\u00ab",laquo:"\u00ab","larrb;":"\u21e4","larrbfs;":"\u291f","larr;":"\u2190","Larr;":"\u219e","lArr;":"\u21d0","larrfs;":"\u291d","larrhk;":"\u21a9","larrlp;":"\u21ab","larrpl;":"\u2939","larrsim;":"\u2973","larrtl;":"\u21a2","latail;":"\u2919","lAtail;":"\u291b","lat;":"\u2aab","late;":"\u2aad","lates;":"\u2aad\ufe00","lbarr;":"\u290c","lBarr;":"\u290e","lbbrk;":"\u2772","lbrace;":"{","lbrack;":"[","lbrke;":"\u298b","lbrksld;":"\u298f","lbrkslu;":"\u298d","Lcaron;":"\u013d","lcaron;":"\u013e","Lcedil;":"\u013b","lcedil;":"\u013c","lceil;":"\u2308","lcub;":"{","Lcy;":"\u041b","lcy;":"\u043b","ldca;":"\u2936","ldquo;":"\u201c","ldquor;":"\u201e","ldrdhar;":"\u2967","ldrushar;":"\u294b","ldsh;":"\u21b2","le;":"\u2264","lE;":"\u2266","LeftAngleBracket;":"\u27e8","LeftArrowBar;":"\u21e4","leftarrow;":"\u2190","LeftArrow;":"\u2190","Leftarrow;":"\u21d0","LeftArrowRightArrow;":"\u21c6","leftarrowtail;":"\u21a2","LeftCeiling;":"\u2308","LeftDoubleBracket;":"\u27e6","LeftDownTeeVector;":"\u2961","LeftDownVectorBar;":"\u2959","LeftDownVector;":"\u21c3","LeftFloor;":"\u230a","leftharpoondown;":"\u21bd","leftharpoonup;":"\u21bc","leftleftarrows;":"\u21c7","leftrightarrow;":"\u2194","LeftRightArrow;":"\u2194","Leftrightarrow;":"\u21d4","leftrightarrows;":"\u21c6","leftrightharpoons;":"\u21cb","leftrightsquigarrow;":"\u21ad","LeftRightVector;":"\u294e","LeftTeeArrow;":"\u21a4","LeftTee;":"\u22a3","LeftTeeVector;":"\u295a","leftthreetimes;":"\u22cb","LeftTriangleBar;":"\u29cf","LeftTriangle;":"\u22b2","LeftTriangleEqual;":"\u22b4","LeftUpDownVector;":"\u2951","LeftUpTeeVector;":"\u2960","LeftUpVectorBar;":"\u2958","LeftUpVector;":"\u21bf","LeftVectorBar;":"\u2952","LeftVector;":"\u21bc","lEg;":"\u2a8b","leg;":"\u22da","leq;":"\u2264","leqq;":"\u2266","leqslant;":"\u2a7d","lescc;":"\u2aa8","les;":"\u2a7d","lesdot;":"\u2a7f","lesdoto;":"\u2a81","lesdotor;":"\u2a83","lesg;":"\u22da\ufe00","lesges;":"\u2a93","lessapprox;":"\u2a85","lessdot;":"\u22d6","lesseqgtr;":"\u22da","lesseqqgtr;":"\u2a8b","LessEqualGreater;":"\u22da","LessFullEqual;":"\u2266","LessGreater;":"\u2276","lessgtr;":"\u2276","LessLess;":"\u2aa1","lesssim;":"\u2272","LessSlantEqual;":"\u2a7d","LessTilde;":"\u2272","lfisht;":"\u297c","lfloor;":"\u230a","Lfr;":"\ud835\udd0f","lfr;":"\ud835\udd29","lg;":"\u2276","lgE;":"\u2a91","lHar;":"\u2962","lhard;":"\u21bd","lharu;":"\u21bc","lharul;":"\u296a","lhblk;":"\u2584","LJcy;":"\u0409","ljcy;":"\u0459","llarr;":"\u21c7","ll;":"\u226a","Ll;":"\u22d8","llcorner;":"\u231e","Lleftarrow;":"\u21da","llhard;":"\u296b","lltri;":"\u25fa","Lmidot;":"\u013f","lmidot;":"\u0140","lmoustache;":"\u23b0","lmoust;":"\u23b0","lnap;":"\u2a89","lnapprox;":"\u2a89","lne;":"\u2a87","lnE;":"\u2268","lneq;":"\u2a87","lneqq;":"\u2268","lnsim;":"\u22e6","loang;":"\u27ec","loarr;":"\u21fd","lobrk;":"\u27e6","longleftarrow;":"\u27f5","LongLeftArrow;":"\u27f5","Longleftarrow;":"\u27f8","longleftrightarrow;":"\u27f7","LongLeftRightArrow;":"\u27f7","Longleftrightarrow;":"\u27fa","longmapsto;":"\u27fc","longrightarrow;":"\u27f6","LongRightArrow;":"\u27f6","Longrightarrow;":"\u27f9","looparrowleft;":"\u21ab","looparrowright;":"\u21ac","lopar;":"\u2985","Lopf;":"\ud835\udd43","lopf;":"\ud835\udd5d","loplus;":"\u2a2d","lotimes;":"\u2a34","lowast;":"\u2217","lowbar;":"_","LowerLeftArrow;":"\u2199","LowerRightArrow;":"\u2198","loz;":"\u25ca","lozenge;":"\u25ca","lozf;":"\u29eb","lpar;":"(","lparlt;":"\u2993","lrarr;":"\u21c6","lrcorner;":"\u231f","lrhar;":"\u21cb","lrhard;":"\u296d","lrm;":"\u200e","lrtri;":"\u22bf","lsaquo;":"\u2039","lscr;":"\ud835\udcc1","Lscr;":"\u2112","lsh;":"\u21b0","Lsh;":"\u21b0","lsim;":"\u2272","lsime;":"\u2a8d","lsimg;":"\u2a8f","lsqb;":"[","lsquo;":"\u2018","lsquor;":"\u201a","Lstrok;":"\u0141","lstrok;":"\u0142","ltcc;":"\u2aa6","ltcir;":"\u2a79","lt;":"<",lt:"<","LT;":"<",LT:"<","Lt;":"\u226a","ltdot;":"\u22d6","lthree;":"\u22cb","ltimes;":"\u22c9","ltlarr;":"\u2976","ltquest;":"\u2a7b","ltri;":"\u25c3","ltrie;":"\u22b4","ltrif;":"\u25c2","ltrPar;":"\u2996","lurdshar;":"\u294a","luruhar;":"\u2966","lvertneqq;":"\u2268\ufe00","lvnE;":"\u2268\ufe00","macr;":"\u00af",macr:"\u00af","male;":"\u2642","malt;":"\u2720","maltese;":"\u2720","Map;":"\u2905","map;":"\u21a6","mapsto;":"\u21a6","mapstodown;":"\u21a7","mapstoleft;":"\u21a4","mapstoup;":"\u21a5","marker;":"\u25ae","mcomma;":"\u2a29","Mcy;":"\u041c","mcy;":"\u043c","mdash;":"\u2014","mDDot;":"\u223a","measuredangle;":"\u2221","MediumSpace;":"\u205f","Mellintrf;":"\u2133","Mfr;":"\ud835\udd10","mfr;":"\ud835\udd2a","mho;":"\u2127","micro;":"\u00b5",micro:"\u00b5","midast;":"*","midcir;":"\u2af0","mid;":"\u2223","middot;":"\u00b7",middot:"\u00b7","minusb;":"\u229f","minus;":"\u2212","minusd;":"\u2238","minusdu;":"\u2a2a","MinusPlus;":"\u2213","mlcp;":"\u2adb","mldr;":"\u2026","mnplus;":"\u2213","models;":"\u22a7","Mopf;":"\ud835\udd44","mopf;":"\ud835\udd5e","mp;":"\u2213","mscr;":"\ud835\udcc2","Mscr;":"\u2133","mstpos;":"\u223e","Mu;":"\u039c","mu;":"\u03bc","multimap;":"\u22b8","mumap;":"\u22b8","nabla;":"\u2207","Nacute;":"\u0143","nacute;":"\u0144","nang;":"\u2220\u20d2","nap;":"\u2249","napE;":"\u2a70\u0338","napid;":"\u224b\u0338","napos;":"\u0149","napprox;":"\u2249","natural;":"\u266e","naturals;":"\u2115","natur;":"\u266e","nbsp;":"\u00a0",nbsp:"\u00a0","nbump;":"\u224e\u0338","nbumpe;":"\u224f\u0338","ncap;":"\u2a43","Ncaron;":"\u0147","ncaron;":"\u0148","Ncedil;":"\u0145","ncedil;":"\u0146","ncong;":"\u2247","ncongdot;":"\u2a6d\u0338","ncup;":"\u2a42","Ncy;":"\u041d","ncy;":"\u043d","ndash;":"\u2013","nearhk;":"\u2924","nearr;":"\u2197","neArr;":"\u21d7","nearrow;":"\u2197","ne;":"\u2260","nedot;":"\u2250\u0338","NegativeMediumSpace;":"\u200b","NegativeThickSpace;":"\u200b","NegativeThinSpace;":"\u200b","NegativeVeryThinSpace;":"\u200b","nequiv;":"\u2262","nesear;":"\u2928","nesim;":"\u2242\u0338","NestedGreaterGreater;":"\u226b","NestedLessLess;":"\u226a","NewLine;":"\n","nexist;":"\u2204","nexists;":"\u2204","Nfr;":"\ud835\udd11","nfr;":"\ud835\udd2b","ngE;":"\u2267\u0338","nge;":"\u2271","ngeq;":"\u2271","ngeqq;":"\u2267\u0338","ngeqslant;":"\u2a7e\u0338","nges;":"\u2a7e\u0338","nGg;":"\u22d9\u0338","ngsim;":"\u2275","nGt;":"\u226b\u20d2","ngt;":"\u226f","ngtr;":"\u226f","nGtv;":"\u226b\u0338","nharr;":"\u21ae","nhArr;":"\u21ce","nhpar;":"\u2af2","ni;":"\u220b","nis;":"\u22fc","nisd;":"\u22fa","niv;":"\u220b","NJcy;":"\u040a","njcy;":"\u045a","nlarr;":"\u219a","nlArr;":"\u21cd","nldr;":"\u2025","nlE;":"\u2266\u0338","nle;":"\u2270","nleftarrow;":"\u219a","nLeftarrow;":"\u21cd","nleftrightarrow;":"\u21ae","nLeftrightarrow;":"\u21ce","nleq;":"\u2270","nleqq;":"\u2266\u0338","nleqslant;":"\u2a7d\u0338","nles;":"\u2a7d\u0338","nless;":"\u226e","nLl;":"\u22d8\u0338","nlsim;":"\u2274","nLt;":"\u226a\u20d2","nlt;":"\u226e","nltri;":"\u22ea","nltrie;":"\u22ec","nLtv;":"\u226a\u0338","nmid;":"\u2224","NoBreak;":"\u2060","NonBreakingSpace;":"\u00a0","nopf;":"\ud835\udd5f","Nopf;":"\u2115","Not;":"\u2aec","not;":"\u00ac",not:"\u00ac","NotCongruent;":"\u2262","NotCupCap;":"\u226d","NotDoubleVerticalBar;":"\u2226","NotElement;":"\u2209","NotEqual;":"\u2260","NotEqualTilde;":"\u2242\u0338","NotExists;":"\u2204","NotGreater;":"\u226f","NotGreaterEqual;":"\u2271","NotGreaterFullEqual;":"\u2267\u0338","NotGreaterGreater;":"\u226b\u0338","NotGreaterLess;":"\u2279","NotGreaterSlantEqual;":"\u2a7e\u0338","NotGreaterTilde;":"\u2275","NotHumpDownHump;":"\u224e\u0338","NotHumpEqual;":"\u224f\u0338","notin;":"\u2209","notindot;":"\u22f5\u0338","notinE;":"\u22f9\u0338","notinva;":"\u2209","notinvb;":"\u22f7","notinvc;":"\u22f6","NotLeftTriangleBar;":"\u29cf\u0338","NotLeftTriangle;":"\u22ea","NotLeftTriangleEqual;":"\u22ec","NotLess;":"\u226e","NotLessEqual;":"\u2270","NotLessGreater;":"\u2278","NotLessLess;":"\u226a\u0338","NotLessSlantEqual;":"\u2a7d\u0338","NotLessTilde;":"\u2274","NotNestedGreaterGreater;":"\u2aa2\u0338","NotNestedLessLess;":"\u2aa1\u0338","notni;":"\u220c","notniva;":"\u220c","notnivb;":"\u22fe","notnivc;":"\u22fd","NotPrecedes;":"\u2280","NotPrecedesEqual;":"\u2aaf\u0338","NotPrecedesSlantEqual;":"\u22e0","NotReverseElement;":"\u220c","NotRightTriangleBar;":"\u29d0\u0338","NotRightTriangle;":"\u22eb","NotRightTriangleEqual;":"\u22ed","NotSquareSubset;":"\u228f\u0338","NotSquareSubsetEqual;":"\u22e2","NotSquareSuperset;":"\u2290\u0338","NotSquareSupersetEqual;":"\u22e3","NotSubset;":"\u2282\u20d2","NotSubsetEqual;":"\u2288","NotSucceeds;":"\u2281","NotSucceedsEqual;":"\u2ab0\u0338","NotSucceedsSlantEqual;":"\u22e1","NotSucceedsTilde;":"\u227f\u0338","NotSuperset;":"\u2283\u20d2","NotSupersetEqual;":"\u2289","NotTilde;":"\u2241","NotTildeEqual;":"\u2244","NotTildeFullEqual;":"\u2247","NotTildeTilde;":"\u2249","NotVerticalBar;":"\u2224","nparallel;":"\u2226","npar;":"\u2226","nparsl;":"\u2afd\u20e5","npart;":"\u2202\u0338","npolint;":"\u2a14","npr;":"\u2280","nprcue;":"\u22e0","nprec;":"\u2280","npreceq;":"\u2aaf\u0338","npre;":"\u2aaf\u0338","nrarrc;":"\u2933\u0338","nrarr;":"\u219b","nrArr;":"\u21cf","nrarrw;":"\u219d\u0338","nrightarrow;":"\u219b","nRightarrow;":"\u21cf","nrtri;":"\u22eb","nrtrie;":"\u22ed","nsc;":"\u2281","nsccue;":"\u22e1","nsce;":"\u2ab0\u0338","Nscr;":"\ud835\udca9","nscr;":"\ud835\udcc3","nshortmid;":"\u2224","nshortparallel;":"\u2226","nsim;":"\u2241","nsime;":"\u2244","nsimeq;":"\u2244","nsmid;":"\u2224","nspar;":"\u2226","nsqsube;":"\u22e2","nsqsupe;":"\u22e3","nsub;":"\u2284","nsubE;":"\u2ac5\u0338","nsube;":"\u2288","nsubset;":"\u2282\u20d2","nsubseteq;":"\u2288","nsubseteqq;":"\u2ac5\u0338","nsucc;":"\u2281","nsucceq;":"\u2ab0\u0338","nsup;":"\u2285","nsupE;":"\u2ac6\u0338","nsupe;":"\u2289","nsupset;":"\u2283\u20d2","nsupseteq;":"\u2289","nsupseteqq;":"\u2ac6\u0338","ntgl;":"\u2279","Ntilde;":"\u00d1",Ntilde:"\u00d1","ntilde;":"\u00f1",ntilde:"\u00f1","ntlg;":"\u2278","ntriangleleft;":"\u22ea","ntrianglelefteq;":"\u22ec","ntriangleright;":"\u22eb","ntrianglerighteq;":"\u22ed","Nu;":"\u039d","nu;":"\u03bd","num;":"#","numero;":"\u2116","numsp;":"\u2007","nvap;":"\u224d\u20d2","nvdash;":"\u22ac","nvDash;":"\u22ad","nVdash;":"\u22ae","nVDash;":"\u22af","nvge;":"\u2265\u20d2","nvgt;":">\u20d2","nvHarr;":"\u2904","nvinfin;":"\u29de","nvlArr;":"\u2902","nvle;":"\u2264\u20d2","nvlt;":"<\u20d2","nvltrie;":"\u22b4\u20d2","nvrArr;":"\u2903","nvrtrie;":"\u22b5\u20d2","nvsim;":"\u223c\u20d2","nwarhk;":"\u2923","nwarr;":"\u2196","nwArr;":"\u21d6","nwarrow;":"\u2196","nwnear;":"\u2927","Oacute;":"\u00d3",Oacute:"\u00d3","oacute;":"\u00f3",oacute:"\u00f3","oast;":"\u229b","Ocirc;":"\u00d4",Ocirc:"\u00d4","ocirc;":"\u00f4",ocirc:"\u00f4","ocir;":"\u229a","Ocy;":"\u041e","ocy;":"\u043e","odash;":"\u229d","Odblac;":"\u0150","odblac;":"\u0151","odiv;":"\u2a38","odot;":"\u2299","odsold;":"\u29bc","OElig;":"\u0152","oelig;":"\u0153","ofcir;":"\u29bf","Ofr;":"\ud835\udd12","ofr;":"\ud835\udd2c","ogon;":"\u02db","Ograve;":"\u00d2",Ograve:"\u00d2","ograve;":"\u00f2",ograve:"\u00f2","ogt;":"\u29c1","ohbar;":"\u29b5","ohm;":"\u03a9","oint;":"\u222e","olarr;":"\u21ba","olcir;":"\u29be","olcross;":"\u29bb","oline;":"\u203e","olt;":"\u29c0","Omacr;":"\u014c","omacr;":"\u014d","Omega;":"\u03a9","omega;":"\u03c9","Omicron;":"\u039f","omicron;":"\u03bf","omid;":"\u29b6","ominus;":"\u2296","Oopf;":"\ud835\udd46","oopf;":"\ud835\udd60","opar;":"\u29b7","OpenCurlyDoubleQuote;":"\u201c","OpenCurlyQuote;":"\u2018","operp;":"\u29b9","oplus;":"\u2295","orarr;":"\u21bb","Or;":"\u2a54","or;":"\u2228","ord;":"\u2a5d","order;":"\u2134","orderof;":"\u2134","ordf;":"\u00aa",ordf:"\u00aa","ordm;":"\u00ba",ordm:"\u00ba","origof;":"\u22b6","oror;":"\u2a56","orslope;":"\u2a57","orv;":"\u2a5b","oS;":"\u24c8","Oscr;":"\ud835\udcaa","oscr;":"\u2134","Oslash;":"\u00d8",Oslash:"\u00d8","oslash;":"\u00f8",oslash:"\u00f8","osol;":"\u2298","Otilde;":"\u00d5",Otilde:"\u00d5","otilde;":"\u00f5",otilde:"\u00f5","otimesas;":"\u2a36","Otimes;":"\u2a37","otimes;":"\u2297","Ouml;":"\u00d6",Ouml:"\u00d6","ouml;":"\u00f6",ouml:"\u00f6","ovbar;":"\u233d","OverBar;":"\u203e","OverBrace;":"\u23de","OverBracket;":"\u23b4","OverParenthesis;":"\u23dc","para;":"\u00b6",para:"\u00b6","parallel;":"\u2225","par;":"\u2225","parsim;":"\u2af3","parsl;":"\u2afd","part;":"\u2202","PartialD;":"\u2202","Pcy;":"\u041f","pcy;":"\u043f","percnt;":"%","period;":".","permil;":"\u2030","perp;":"\u22a5","pertenk;":"\u2031","Pfr;":"\ud835\udd13","pfr;":"\ud835\udd2d","Phi;":"\u03a6","phi;":"\u03c6","phiv;":"\u03d5","phmmat;":"\u2133","phone;":"\u260e","Pi;":"\u03a0","pi;":"\u03c0","pitchfork;":"\u22d4","piv;":"\u03d6","planck;":"\u210f","planckh;":"\u210e","plankv;":"\u210f","plusacir;":"\u2a23","plusb;":"\u229e","pluscir;":"\u2a22","plus;":"+","plusdo;":"\u2214","plusdu;":"\u2a25","pluse;":"\u2a72","PlusMinus;":"\u00b1","plusmn;":"\u00b1",plusmn:"\u00b1","plussim;":"\u2a26","plustwo;":"\u2a27","pm;":"\u00b1","Poincareplane;":"\u210c","pointint;":"\u2a15","popf;":"\ud835\udd61","Popf;":"\u2119","pound;":"\u00a3",pound:"\u00a3","prap;":"\u2ab7","Pr;":"\u2abb","pr;":"\u227a","prcue;":"\u227c","precapprox;":"\u2ab7","prec;":"\u227a","preccurlyeq;":"\u227c","Precedes;":"\u227a","PrecedesEqual;":"\u2aaf","PrecedesSlantEqual;":"\u227c","PrecedesTilde;":"\u227e","preceq;":"\u2aaf","precnapprox;":"\u2ab9","precneqq;":"\u2ab5","precnsim;":"\u22e8","pre;":"\u2aaf","prE;":"\u2ab3","precsim;":"\u227e","prime;":"\u2032","Prime;":"\u2033","primes;":"\u2119","prnap;":"\u2ab9","prnE;":"\u2ab5","prnsim;":"\u22e8","prod;":"\u220f","Product;":"\u220f","profalar;":"\u232e","profline;":"\u2312","profsurf;":"\u2313","prop;":"\u221d","Proportional;":"\u221d","Proportion;":"\u2237","propto;":"\u221d","prsim;":"\u227e","prurel;":"\u22b0","Pscr;":"\ud835\udcab","pscr;":"\ud835\udcc5","Psi;":"\u03a8","psi;":"\u03c8","puncsp;":"\u2008","Qfr;":"\ud835\udd14","qfr;":"\ud835\udd2e","qint;":"\u2a0c","qopf;":"\ud835\udd62","Qopf;":"\u211a","qprime;":"\u2057","Qscr;":"\ud835\udcac","qscr;":"\ud835\udcc6","quaternions;":"\u210d","quatint;":"\u2a16","quest;":"?","questeq;":"\u225f","quot;":'"',quot:'"',"QUOT;":'"',QUOT:'"',"rAarr;":"\u21db","race;":"\u223d\u0331","Racute;":"\u0154","racute;":"\u0155","radic;":"\u221a","raemptyv;":"\u29b3","rang;":"\u27e9","Rang;":"\u27eb","rangd;":"\u2992","range;":"\u29a5","rangle;":"\u27e9","raquo;":"\u00bb",raquo:"\u00bb","rarrap;":"\u2975","rarrb;":"\u21e5","rarrbfs;":"\u2920","rarrc;":"\u2933","rarr;":"\u2192","Rarr;":"\u21a0","rArr;":"\u21d2","rarrfs;":"\u291e","rarrhk;":"\u21aa","rarrlp;":"\u21ac","rarrpl;":"\u2945","rarrsim;":"\u2974","Rarrtl;":"\u2916","rarrtl;":"\u21a3","rarrw;":"\u219d","ratail;":"\u291a","rAtail;":"\u291c","ratio;":"\u2236","rationals;":"\u211a","rbarr;":"\u290d","rBarr;":"\u290f","RBarr;":"\u2910","rbbrk;":"\u2773","rbrace;":"}","rbrack;":"]","rbrke;":"\u298c","rbrksld;":"\u298e","rbrkslu;":"\u2990","Rcaron;":"\u0158","rcaron;":"\u0159","Rcedil;":"\u0156","rcedil;":"\u0157","rceil;":"\u2309","rcub;":"}","Rcy;":"\u0420","rcy;":"\u0440","rdca;":"\u2937","rdldhar;":"\u2969","rdquo;":"\u201d","rdquor;":"\u201d","rdsh;":"\u21b3","real;":"\u211c","realine;":"\u211b","realpart;":"\u211c","reals;":"\u211d","Re;":"\u211c","rect;":"\u25ad","reg;":"\u00ae",reg:"\u00ae","REG;":"\u00ae",REG:"\u00ae","ReverseElement;":"\u220b","ReverseEquilibrium;":"\u21cb","ReverseUpEquilibrium;":"\u296f","rfisht;":"\u297d","rfloor;":"\u230b","rfr;":"\ud835\udd2f","Rfr;":"\u211c","rHar;":"\u2964","rhard;":"\u21c1","rharu;":"\u21c0","rharul;":"\u296c","Rho;":"\u03a1","rho;":"\u03c1","rhov;":"\u03f1","RightAngleBracket;":"\u27e9","RightArrowBar;":"\u21e5","rightarrow;":"\u2192","RightArrow;":"\u2192","Rightarrow;":"\u21d2","RightArrowLeftArrow;":"\u21c4","rightarrowtail;":"\u21a3","RightCeiling;":"\u2309","RightDoubleBracket;":"\u27e7","RightDownTeeVector;":"\u295d","RightDownVectorBar;":"\u2955","RightDownVector;":"\u21c2","RightFloor;":"\u230b","rightharpoondown;":"\u21c1","rightharpoonup;":"\u21c0","rightleftarrows;":"\u21c4","rightleftharpoons;":"\u21cc","rightrightarrows;":"\u21c9","rightsquigarrow;":"\u219d","RightTeeArrow;":"\u21a6","RightTee;":"\u22a2","RightTeeVector;":"\u295b","rightthreetimes;":"\u22cc","RightTriangleBar;":"\u29d0","RightTriangle;":"\u22b3","RightTriangleEqual;":"\u22b5","RightUpDownVector;":"\u294f","RightUpTeeVector;":"\u295c","RightUpVectorBar;":"\u2954","RightUpVector;":"\u21be","RightVectorBar;":"\u2953","RightVector;":"\u21c0","ring;":"\u02da","risingdotseq;":"\u2253","rlarr;":"\u21c4","rlhar;":"\u21cc","rlm;":"\u200f","rmoustache;":"\u23b1","rmoust;":"\u23b1","rnmid;":"\u2aee","roang;":"\u27ed","roarr;":"\u21fe","robrk;":"\u27e7","ropar;":"\u2986","ropf;":"\ud835\udd63","Ropf;":"\u211d","roplus;":"\u2a2e","rotimes;":"\u2a35","RoundImplies;":"\u2970","rpar;":")","rpargt;":"\u2994","rppolint;":"\u2a12","rrarr;":"\u21c9","Rrightarrow;":"\u21db","rsaquo;":"\u203a","rscr;":"\ud835\udcc7","Rscr;":"\u211b","rsh;":"\u21b1","Rsh;":"\u21b1","rsqb;":"]","rsquo;":"\u2019","rsquor;":"\u2019","rthree;":"\u22cc","rtimes;":"\u22ca","rtri;":"\u25b9","rtrie;":"\u22b5","rtrif;":"\u25b8","rtriltri;":"\u29ce","RuleDelayed;":"\u29f4","ruluhar;":"\u2968","rx;":"\u211e","Sacute;":"\u015a","sacute;":"\u015b","sbquo;":"\u201a","scap;":"\u2ab8","Scaron;":"\u0160","scaron;":"\u0161","Sc;":"\u2abc","sc;":"\u227b","sccue;":"\u227d","sce;":"\u2ab0","scE;":"\u2ab4","Scedil;":"\u015e","scedil;":"\u015f","Scirc;":"\u015c","scirc;":"\u015d","scnap;":"\u2aba","scnE;":"\u2ab6","scnsim;":"\u22e9","scpolint;":"\u2a13","scsim;":"\u227f","Scy;":"\u0421","scy;":"\u0441","sdotb;":"\u22a1","sdot;":"\u22c5","sdote;":"\u2a66","searhk;":"\u2925","searr;":"\u2198","seArr;":"\u21d8","searrow;":"\u2198","sect;":"\u00a7",sect:"\u00a7","semi;":";","seswar;":"\u2929","setminus;":"\u2216","setmn;":"\u2216","sext;":"\u2736","Sfr;":"\ud835\udd16","sfr;":"\ud835\udd30","sfrown;":"\u2322","sharp;":"\u266f","SHCHcy;":"\u0429","shchcy;":"\u0449","SHcy;":"\u0428","shcy;":"\u0448","ShortDownArrow;":"\u2193","ShortLeftArrow;":"\u2190","shortmid;":"\u2223","shortparallel;":"\u2225","ShortRightArrow;":"\u2192","ShortUpArrow;":"\u2191","shy;":"\u00ad",shy:"\u00ad","Sigma;":"\u03a3","sigma;":"\u03c3","sigmaf;":"\u03c2","sigmav;":"\u03c2","sim;":"\u223c","simdot;":"\u2a6a","sime;":"\u2243","simeq;":"\u2243","simg;":"\u2a9e","simgE;":"\u2aa0","siml;":"\u2a9d","simlE;":"\u2a9f","simne;":"\u2246","simplus;":"\u2a24","simrarr;":"\u2972","slarr;":"\u2190","SmallCircle;":"\u2218","smallsetminus;":"\u2216","smashp;":"\u2a33","smeparsl;":"\u29e4","smid;":"\u2223","smile;":"\u2323","smt;":"\u2aaa","smte;":"\u2aac","smtes;":"\u2aac\ufe00","SOFTcy;":"\u042c","softcy;":"\u044c","solbar;":"\u233f","solb;":"\u29c4","sol;":"/","Sopf;":"\ud835\udd4a","sopf;":"\ud835\udd64","spades;":"\u2660","spadesuit;":"\u2660","spar;":"\u2225","sqcap;":"\u2293","sqcaps;":"\u2293\ufe00","sqcup;":"\u2294","sqcups;":"\u2294\ufe00","Sqrt;":"\u221a","sqsub;":"\u228f","sqsube;":"\u2291","sqsubset;":"\u228f","sqsubseteq;":"\u2291","sqsup;":"\u2290","sqsupe;":"\u2292","sqsupset;":"\u2290","sqsupseteq;":"\u2292","square;":"\u25a1","Square;":"\u25a1","SquareIntersection;":"\u2293","SquareSubset;":"\u228f","SquareSubsetEqual;":"\u2291","SquareSuperset;":"\u2290","SquareSupersetEqual;":"\u2292","SquareUnion;":"\u2294","squarf;":"\u25aa","squ;":"\u25a1","squf;":"\u25aa","srarr;":"\u2192","Sscr;":"\ud835\udcae","sscr;":"\ud835\udcc8","ssetmn;":"\u2216","ssmile;":"\u2323","sstarf;":"\u22c6","Star;":"\u22c6","star;":"\u2606","starf;":"\u2605","straightepsilon;":"\u03f5","straightphi;":"\u03d5","strns;":"\u00af","sub;":"\u2282","Sub;":"\u22d0","subdot;":"\u2abd","subE;":"\u2ac5","sube;":"\u2286","subedot;":"\u2ac3","submult;":"\u2ac1","subnE;":"\u2acb","subne;":"\u228a","subplus;":"\u2abf","subrarr;":"\u2979","subset;":"\u2282","Subset;":"\u22d0","subseteq;":"\u2286","subseteqq;":"\u2ac5","SubsetEqual;":"\u2286","subsetneq;":"\u228a","subsetneqq;":"\u2acb","subsim;":"\u2ac7","subsub;":"\u2ad5","subsup;":"\u2ad3","succapprox;":"\u2ab8","succ;":"\u227b","succcurlyeq;":"\u227d","Succeeds;":"\u227b","SucceedsEqual;":"\u2ab0","SucceedsSlantEqual;":"\u227d","SucceedsTilde;":"\u227f","succeq;":"\u2ab0","succnapprox;":"\u2aba","succneqq;":"\u2ab6","succnsim;":"\u22e9","succsim;":"\u227f","SuchThat;":"\u220b","sum;":"\u2211","Sum;":"\u2211","sung;":"\u266a","sup1;":"\u00b9",sup1:"\u00b9","sup2;":"\u00b2",sup2:"\u00b2","sup3;":"\u00b3",sup3:"\u00b3","sup;":"\u2283","Sup;":"\u22d1","supdot;":"\u2abe","supdsub;":"\u2ad8","supE;":"\u2ac6","supe;":"\u2287","supedot;":"\u2ac4","Superset;":"\u2283","SupersetEqual;":"\u2287","suphsol;":"\u27c9","suphsub;":"\u2ad7","suplarr;":"\u297b","supmult;":"\u2ac2","supnE;":"\u2acc","supne;":"\u228b","supplus;":"\u2ac0","supset;":"\u2283","Supset;":"\u22d1","supseteq;":"\u2287","supseteqq;":"\u2ac6","supsetneq;":"\u228b","supsetneqq;":"\u2acc","supsim;":"\u2ac8","supsub;":"\u2ad4","supsup;":"\u2ad6","swarhk;":"\u2926","swarr;":"\u2199","swArr;":"\u21d9","swarrow;":"\u2199","swnwar;":"\u292a","szlig;":"\u00df",szlig:"\u00df","Tab;":"	","target;":"\u2316","Tau;":"\u03a4","tau;":"\u03c4","tbrk;":"\u23b4","Tcaron;":"\u0164","tcaron;":"\u0165","Tcedil;":"\u0162","tcedil;":"\u0163","Tcy;":"\u0422","tcy;":"\u0442","tdot;":"\u20db","telrec;":"\u2315","Tfr;":"\ud835\udd17","tfr;":"\ud835\udd31","there4;":"\u2234","therefore;":"\u2234","Therefore;":"\u2234","Theta;":"\u0398","theta;":"\u03b8","thetasym;":"\u03d1","thetav;":"\u03d1","thickapprox;":"\u2248","thicksim;":"\u223c","ThickSpace;":"\u205f\u200a","ThinSpace;":"\u2009","thinsp;":"\u2009","thkap;":"\u2248","thksim;":"\u223c","THORN;":"\u00de",THORN:"\u00de","thorn;":"\u00fe",thorn:"\u00fe","tilde;":"\u02dc","Tilde;":"\u223c","TildeEqual;":"\u2243","TildeFullEqual;":"\u2245","TildeTilde;":"\u2248","timesbar;":"\u2a31","timesb;":"\u22a0","times;":"\u00d7",times:"\u00d7","timesd;":"\u2a30","tint;":"\u222d","toea;":"\u2928","topbot;":"\u2336","topcir;":"\u2af1","top;":"\u22a4","Topf;":"\ud835\udd4b","topf;":"\ud835\udd65","topfork;":"\u2ada","tosa;":"\u2929","tprime;":"\u2034","trade;":"\u2122","TRADE;":"\u2122","triangle;":"\u25b5","triangledown;":"\u25bf","triangleleft;":"\u25c3","trianglelefteq;":"\u22b4","triangleq;":"\u225c","triangleright;":"\u25b9","trianglerighteq;":"\u22b5","tridot;":"\u25ec","trie;":"\u225c","triminus;":"\u2a3a","TripleDot;":"\u20db","triplus;":"\u2a39","trisb;":"\u29cd","tritime;":"\u2a3b","trpezium;":"\u23e2","Tscr;":"\ud835\udcaf","tscr;":"\ud835\udcc9","TScy;":"\u0426","tscy;":"\u0446","TSHcy;":"\u040b","tshcy;":"\u045b","Tstrok;":"\u0166","tstrok;":"\u0167","twixt;":"\u226c","twoheadleftarrow;":"\u219e","twoheadrightarrow;":"\u21a0","Uacute;":"\u00da",Uacute:"\u00da","uacute;":"\u00fa",uacute:"\u00fa","uarr;":"\u2191","Uarr;":"\u219f","uArr;":"\u21d1","Uarrocir;":"\u2949","Ubrcy;":"\u040e","ubrcy;":"\u045e","Ubreve;":"\u016c","ubreve;":"\u016d","Ucirc;":"\u00db",Ucirc:"\u00db","ucirc;":"\u00fb",ucirc:"\u00fb","Ucy;":"\u0423","ucy;":"\u0443","udarr;":"\u21c5","Udblac;":"\u0170","udblac;":"\u0171","udhar;":"\u296e","ufisht;":"\u297e","Ufr;":"\ud835\udd18","ufr;":"\ud835\udd32","Ugrave;":"\u00d9",Ugrave:"\u00d9","ugrave;":"\u00f9",ugrave:"\u00f9","uHar;":"\u2963","uharl;":"\u21bf","uharr;":"\u21be","uhblk;":"\u2580","ulcorn;":"\u231c","ulcorner;":"\u231c","ulcrop;":"\u230f","ultri;":"\u25f8","Umacr;":"\u016a","umacr;":"\u016b","uml;":"\u00a8",uml:"\u00a8","UnderBar;":"_","UnderBrace;":"\u23df","UnderBracket;":"\u23b5","UnderParenthesis;":"\u23dd","Union;":"\u22c3","UnionPlus;":"\u228e","Uogon;":"\u0172","uogon;":"\u0173","Uopf;":"\ud835\udd4c","uopf;":"\ud835\udd66","UpArrowBar;":"\u2912","uparrow;":"\u2191","UpArrow;":"\u2191","Uparrow;":"\u21d1","UpArrowDownArrow;":"\u21c5","updownarrow;":"\u2195","UpDownArrow;":"\u2195","Updownarrow;":"\u21d5","UpEquilibrium;":"\u296e","upharpoonleft;":"\u21bf","upharpoonright;":"\u21be","uplus;":"\u228e","UpperLeftArrow;":"\u2196","UpperRightArrow;":"\u2197","upsi;":"\u03c5","Upsi;":"\u03d2","upsih;":"\u03d2","Upsilon;":"\u03a5","upsilon;":"\u03c5","UpTeeArrow;":"\u21a5","UpTee;":"\u22a5","upuparrows;":"\u21c8","urcorn;":"\u231d","urcorner;":"\u231d","urcrop;":"\u230e","Uring;":"\u016e","uring;":"\u016f","urtri;":"\u25f9","Uscr;":"\ud835\udcb0","uscr;":"\ud835\udcca","utdot;":"\u22f0","Utilde;":"\u0168","utilde;":"\u0169","utri;":"\u25b5","utrif;":"\u25b4","uuarr;":"\u21c8","Uuml;":"\u00dc",Uuml:"\u00dc","uuml;":"\u00fc",uuml:"\u00fc","uwangle;":"\u29a7","vangrt;":"\u299c","varepsilon;":"\u03f5","varkappa;":"\u03f0","varnothing;":"\u2205","varphi;":"\u03d5","varpi;":"\u03d6","varpropto;":"\u221d","varr;":"\u2195","vArr;":"\u21d5","varrho;":"\u03f1","varsigma;":"\u03c2","varsubsetneq;":"\u228a\ufe00","varsubsetneqq;":"\u2acb\ufe00","varsupsetneq;":"\u228b\ufe00","varsupsetneqq;":"\u2acc\ufe00","vartheta;":"\u03d1","vartriangleleft;":"\u22b2","vartriangleright;":"\u22b3","vBar;":"\u2ae8","Vbar;":"\u2aeb","vBarv;":"\u2ae9","Vcy;":"\u0412","vcy;":"\u0432","vdash;":"\u22a2","vDash;":"\u22a8","Vdash;":"\u22a9","VDash;":"\u22ab","Vdashl;":"\u2ae6","veebar;":"\u22bb","vee;":"\u2228","Vee;":"\u22c1","veeeq;":"\u225a","vellip;":"\u22ee","verbar;":"|","Verbar;":"\u2016","vert;":"|","Vert;":"\u2016","VerticalBar;":"\u2223","VerticalLine;":"|","VerticalSeparator;":"\u2758","VerticalTilde;":"\u2240","VeryThinSpace;":"\u200a","Vfr;":"\ud835\udd19","vfr;":"\ud835\udd33","vltri;":"\u22b2","vnsub;":"\u2282\u20d2","vnsup;":"\u2283\u20d2","Vopf;":"\ud835\udd4d","vopf;":"\ud835\udd67","vprop;":"\u221d","vrtri;":"\u22b3","Vscr;":"\ud835\udcb1","vscr;":"\ud835\udccb","vsubnE;":"\u2acb\ufe00","vsubne;":"\u228a\ufe00","vsupnE;":"\u2acc\ufe00","vsupne;":"\u228b\ufe00","Vvdash;":"\u22aa","vzigzag;":"\u299a","Wcirc;":"\u0174","wcirc;":"\u0175","wedbar;":"\u2a5f","wedge;":"\u2227","Wedge;":"\u22c0","wedgeq;":"\u2259","weierp;":"\u2118","Wfr;":"\ud835\udd1a","wfr;":"\ud835\udd34","Wopf;":"\ud835\udd4e","wopf;":"\ud835\udd68","wp;":"\u2118","wr;":"\u2240","wreath;":"\u2240","Wscr;":"\ud835\udcb2","wscr;":"\ud835\udccc","xcap;":"\u22c2","xcirc;":"\u25ef","xcup;":"\u22c3","xdtri;":"\u25bd","Xfr;":"\ud835\udd1b","xfr;":"\ud835\udd35","xharr;":"\u27f7","xhArr;":"\u27fa","Xi;":"\u039e","xi;":"\u03be","xlarr;":"\u27f5","xlArr;":"\u27f8","xmap;":"\u27fc","xnis;":"\u22fb","xodot;":"\u2a00","Xopf;":"\ud835\udd4f","xopf;":"\ud835\udd69","xoplus;":"\u2a01","xotime;":"\u2a02","xrarr;":"\u27f6","xrArr;":"\u27f9","Xscr;":"\ud835\udcb3","xscr;":"\ud835\udccd","xsqcup;":"\u2a06","xuplus;":"\u2a04","xutri;":"\u25b3","xvee;":"\u22c1","xwedge;":"\u22c0","Yacute;":"\u00dd",Yacute:"\u00dd","yacute;":"\u00fd",yacute:"\u00fd","YAcy;":"\u042f","yacy;":"\u044f","Ycirc;":"\u0176","ycirc;":"\u0177","Ycy;":"\u042b","ycy;":"\u044b","yen;":"\u00a5",yen:"\u00a5","Yfr;":"\ud835\udd1c","yfr;":"\ud835\udd36","YIcy;":"\u0407","yicy;":"\u0457","Yopf;":"\ud835\udd50","yopf;":"\ud835\udd6a","Yscr;":"\ud835\udcb4","yscr;":"\ud835\udcce","YUcy;":"\u042e","yucy;":"\u044e","yuml;":"\u00ff",yuml:"\u00ff","Yuml;":"\u0178","Zacute;":"\u0179","zacute;":"\u017a","Zcaron;":"\u017d","zcaron;":"\u017e","Zcy;":"\u0417","zcy;":"\u0437","Zdot;":"\u017b","zdot;":"\u017c","zeetrf;":"\u2128","ZeroWidthSpace;":"\u200b","Zeta;":"\u0396","zeta;":"\u03b6","zfr;":"\ud835\udd37","Zfr;":"\u2128","ZHcy;":"\u0416","zhcy;":"\u0436","zigrarr;":"\u21dd","zopf;":"\ud835\udd6b","Zopf;":"\u2124","Zscr;":"\ud835\udcb5","zscr;":"\ud835\udccf","zwj;":"\u200d","zwnj;":"\u200c"}},{}],13:[function(e,t,n){function u(e,t){return r.isUndefined(t)?""+t:r.isNumber(t)&&(isNaN(t)||!isFinite(t))?t.toString():r.isFunction(t)||r.isRegExp(t)?t.toString():t}function a(e,t){return r.isString(e)?e.length<t?e:e.slice(0,t):e}function f(e){return a(JSON.stringify(e.actual,u),128)+" "+e.operator+" "+a(JSON.stringify(e.expected,u),128)}function l(e,t,n,r,i){throw new o.AssertionError({message:n,actual:e,expected:t,operator:r,stackStartFunction:i})}function c(e,t){e||l(e,!0,t,"==",o.ok)}function h(e,t){if(e===t)return!0;if(r.isBuffer(e)&&r.isBuffer(t)){if(e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}return r.isDate(e)&&r.isDate(t)?e.getTime()===t.getTime():r.isRegExp(e)&&r.isRegExp(t)?e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.lastIndex===t.lastIndex&&e.ignoreCase===t.ignoreCase:!r.isObject(e)&&!r.isObject(t)?e==t:d(e,t)}function p(e){return Object.prototype.toString.call(e)=="[object Arguments]"}function d(e,t){if(r.isNullOrUndefined(e)||r.isNullOrUndefined(t))return!1;if(e.prototype!==t.prototype)return!1;if(p(e))return p(t)?(e=i.call(e),t=i.call(t),h(e,t)):!1;try{var n=g(e),s=g(t),o,u}catch(a){return!1}if(n.length!=s.length)return!1;n.sort(),s.sort();for(u=n.length-1;u>=0;u--)if(n[u]!=s[u])return!1;for(u=n.length-1;u>=0;u--){o=n[u];if(!h(e[o],t[o]))return!1}return!0}function v(e,t){return!e||!t?!1:Object.prototype.toString.call(t)=="[object RegExp]"?t.test(e):e instanceof t?!0:t.call({},e)===!0?!0:!1}function m(e,t,n,i){var s;r.isString(n)&&(i=n,n=null);try{t()}catch(o){s=o}i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!s&&l(s,n,"Missing expected exception"+i),!e&&v(s,n)&&l(s,n,"Got unwanted exception"+i);if(e&&s&&n&&!v(s,n)||!e&&s)throw s}var r=e("util/"),i=Array.prototype.slice,s=Object.prototype.hasOwnProperty,o=t.exports=c;o.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=f(this),this.generatedMessage=!0);var n=t.stackStartFunction||l;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,s=n.name,o=i.indexOf("\n"+s);if(o>=0){var u=i.indexOf("\n",o+1);i=i.substring(u+1)}this.stack=i}}},r.inherits(o.AssertionError,Error),o.fail=l,o.ok=c,o.equal=function(t,n,r){t!=n&&l(t,n,r,"==",o.equal)},o.notEqual=function(t,n,r){t==n&&l(t,n,r,"!=",o.notEqual)},o.deepEqual=function(t,n,r){h(t,n)||l(t,n,r,"deepEqual",o.deepEqual)},o.notDeepEqual=function(t,n,r){h(t,n)&&l(t,n,r,"notDeepEqual",o.notDeepEqual)},o.strictEqual=function(t,n,r){t!==n&&l(t,n,r,"===",o.strictEqual)},o.notStrictEqual=function(t,n,r){t===n&&l(t,n,r,"!==",o.notStrictEqual)},o.throws=function(e,t,n){m.apply(this,[!0].concat(i.call(arguments)))},o.doesNotThrow=function(e,t){m.apply(this,[!1].concat(i.call(arguments)))},o.ifError=function(e){if(e)throw e};var g=Object.keys||function(e){var t=[];for(var n in e)s.call(e,n)&&t.push(n);return t}},{"util/":15}],14:[function(e,t,n){t.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}},{}],15:[function(e,t,n){(function(t,r){function u(e,t){var r={seen:[],stylize:f};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),y(t)?r.showHidden=t:t&&n._extend(r,t),T(r.showHidden)&&(r.showHidden=!1),T(r.depth)&&(r.depth=2),T(r.colors)&&(r.colors=!1),T(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),c(r,e,r.depth)}function a(e,t){var n=u.styles[t];return n?"["+u.colors[n][0]+"m"+e+"["+u.colors[n][1]+"m":e}function f(e,t){return e}function l(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function c(e,t,r){if(e.customInspect&&t&&A(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return S(i)||(i=c(e,i,r)),i}var s=h(e,t);if(s)return s;var o=Object.keys(t),u=l(o);e.showHidden&&(o=Object.getOwnPropertyNames(t));if(L(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return p(t);if(o.length===0){if(A(t)){var a=t.name?": "+t.name:"";return e.stylize("[Function"+a+"]","special")}if(N(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(k(t))return e.stylize(Date.prototype.toString.call(t),"date");if(L(t))return p(t)}var f="",y=!1,b=["{","}"];g(t)&&(y=!0,b=["[","]"]);if(A(t)){var w=t.name?": "+t.name:"";f=" [Function"+w+"]"}N(t)&&(f=" "+RegExp.prototype.toString.call(t)),k(t)&&(f=" "+Date.prototype.toUTCString.call(t)),L(t)&&(f=" "+p(t));if(o.length!==0||!!y&&t.length!=0){if(r<0)return N(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var E;return y?E=d(e,t,r,u,o):E=o.map(function(n){return v(e,t,r,u,n,y)}),e.seen.pop(),m(E,f,b)}return b[0]+f+b[1]}function h(e,t){if(T(t))return e.stylize("undefined","undefined");if(S(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(E(t))return e.stylize(""+t,"number");if(y(t))return e.stylize(""+t,"boolean");if(b(t))return e.stylize("null","null")}function p(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i){var s=[];for(var o=0,u=t.length;o<u;++o)H(t,String(o))?s.push(v(e,t,n,r,String(o),!0)):s.push("");return i.forEach(function(i){i.match(/^\d+$/)||s.push(v(e,t,n,r,i,!0))}),s}function v(e,t,n,r,i,s){var o,u,a;a=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]},a.get?a.set?u=e.stylize("[Getter/Setter]","special"):u=e.stylize("[Getter]","special"):a.set&&(u=e.stylize("[Setter]","special")),H(r,i)||(o="["+i+"]"),u||(e.seen.indexOf(a.value)<0?(b(n)?u=c(e,a.value,null):u=c(e,a.value,n-1),u.indexOf("\n")>-1&&(s?u=u.split("\n").map(function(e){return"  "+e}).join("\n").substr(2):u="\n"+u.split("\n").map(function(e){return"   "+e}).join("\n"))):u=e.stylize("[Circular]","special"));if(T(o)){if(s&&i.match(/^\d+$/))return u;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+u}function m(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(t===""?"":t+"\n ")+" "+e.join(",\n  ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function g(e){return Array.isArray(e)}function y(e){return typeof e=="boolean"}function b(e){return e===null}function w(e){return e==null}function E(e){return typeof e=="number"}function S(e){return typeof e=="string"}function x(e){return typeof e=="symbol"}function T(e){return e===void 0}function N(e){return C(e)&&M(e)==="[object RegExp]"}function C(e){return typeof e=="object"&&e!==null}function k(e){return C(e)&&M(e)==="[object Date]"}function L(e){return C(e)&&(M(e)==="[object Error]"||e instanceof Error)}function A(e){return typeof e=="function"}function O(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}function M(e){return Object.prototype.toString.call(e)}function _(e){return e<10?"0"+e.toString(10):e.toString(10)}function P(){var e=new Date,t=[_(e.getHours()),_(e.getMinutes()),_(e.getSeconds())].join(":");return[e.getDate(),D[e.getMonth()],t].join(" ")}function H(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var i=/%[sdj%]/g;n.format=function(e){if(!S(e)){var t=[];for(var n=0;n<arguments.length;n++)t.push(u(arguments[n]));return t.join(" ")}var n=1,r=arguments,s=r.length,o=String(e).replace(i,function(e){if(e==="%%")return"%";if(n>=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"};default:return e}});for(var a=r[n];n<s;a=r[++n])b(a)||!C(a)?o+=" "+a:o+=" "+u(a);return o},n.deprecate=function(e,i){function o(){if(!s){if(t.throwDeprecation)throw new Error(i);t.traceDeprecation?console.trace(i):console.error(i),s=!0}return e.apply(this,arguments)}if(T(r.process))return function(){return n.deprecate(e,i).apply(this,arguments)};if(t.noDeprecation===!0)return e;var s=!1;return o};var s={},o;n.debuglog=function(e){T(o)&&(o=t.env.NODE_DEBUG||""),e=e.toUpperCase();if(!s[e])if((new RegExp("\\b"+e+"\\b","i")).test(o)){var r=t.pid;s[e]=function(){var t=n.format.apply(n,arguments);console.error("%s %d: %s",e,r,t)}}else s[e]=function(){};return s[e]},n.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow","boolean":"yellow","undefined":"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},n.isArray=g,n.isBoolean=y,n.isNull=b,n.isNullOrUndefined=w,n.isNumber=E,n.isString=S,n.isSymbol=x,n.isUndefined=T,n.isRegExp=N,n.isObject=C,n.isDate=k,n.isError=L,n.isFunction=A,n.isPrimitive=O,n.isBuffer=e("./support/isBuffer");var D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];n.log=function(){console.log("%s - %s",P(),n.format.apply(n,arguments))},n.inherits=e("inherits"),n._extend=function(e,t){if(!t||!C(t))return e;var n=Object.keys(t),r=n.length;while(r--)e[n[r]]=t[n[r]];return e}}).call(this,e("/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{"./support/isBuffer":14,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,inherits:17}],16:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||undefined}function i(e){return typeof e=="function"}function s(e){return typeof e=="number"}function o(e){return typeof e=="object"&&e!==null}function u(e){return e===void 0}t.exports=r,r.EventEmitter=r,r.prototype._events=undefined,r.prototype._maxListeners=undefined,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,a,f;this._events||(this._events={});if(e==="error")if(!this._events.error||o(this._events.error)&&!this._events.error.length)throw t=arguments[1],t instanceof Error?t:TypeError('Uncaught, unspecified "error" event.');n=this._events[e];if(u(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];n.apply(this,s)}else if(o(n)){r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];f=n.slice(),r=f.length;for(a=0;a<r;a++)f[a].apply(this,s)}return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t;if(o(this._events[e])&&!this._events[e].warned){var n;u(this._maxListeners)?n=r.defaultMaxListeners:n=this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}],17:[function(e,t,n){typeof Object.create=="function"?t.exports=function(t,n){t.super_=n,t.prototype=Object.create(n.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,n){t.super_=n;var r=function(){};r.prototype=n.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],18:[function(e,t,n){function i(){}var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){var t=e.source;if((t===window||t===null)&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var r=n.shift();r()}}},!0),function(t){n.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.on=i,r.once=i,r.off=i,r.emit=i,r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],19:[function(e,t,n){t.exports=e(14)},{}],20:[function(e,t,n){t.exports=e(15)},{"./support/isBuffer":19,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,inherits:17}]},{},[9])(9)}),ace.define("ace/mode/html_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/html/saxparser"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./html/saxparser").SAXParser,u={"expected-doctype-but-got-start-tag":"info","expected-doctype-but-got-chars":"info","non-html-root":"info"},a=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(a,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[],r=function(){};t.contentHandler={startDocument:r,endDocument:r,startElement:r,endElement:r,characters:r},t.errorHandler={error:function(e,t,r){n.push({row:t.line,column:t.column,text:e,type:u[r]||"error"})}},this.context?t.parseFragment(e,this.context):t.parse(e),this.sender.emit("error",n)}}.call(a.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-javascript.js b/js/ace/worker-javascript.js
new file mode 100644
index 0000000..06de953
--- /dev/null
+++ b/js/ace/worker-javascript.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/javascript/jshint",["require","exports","module"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);throw new Error("Cannot find module '"+u+"'")}var l=n[u]={exports:{}};t[u][0].call(l.exports,function(e){var n=t[u][1][e];return s(n?n:e)},l,l.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){var r=[];for(var i=0;i<128;i++)r[i]=i===36||i>=65&&i<=90||i===95||i>=97&&i<=122;var s=[];for(var i=0;i<128;i++)s[i]=r[i]||i>=48&&i<=57;t.exports={asciiIdentifierStartTable:r,asciiIdentifierPartTable:s}},{}],2:[function(e,t,n){(function(){var e=this,r=e._,i={},s=Array.prototype,o=Object.prototype,u=Function.prototype,a=s.push,f=s.slice,l=s.concat,c=o.toString,h=o.hasOwnProperty,p=s.forEach,d=s.map,v=s.reduce,m=s.reduceRight,g=s.filter,y=s.every,b=s.some,w=s.indexOf,E=s.lastIndexOf,S=Array.isArray,x=Object.keys,T=u.bind,N=function(e){if(e instanceof N)return e;if(!(this instanceof N))return new N(e);this._wrapped=e};typeof n!="undefined"?(typeof t!="undefined"&&t.exports&&(n=t.exports=N),n._=N):e._=N,N.VERSION="1.6.0";var C=N.each=N.forEach=function(e,t,n){if(e==null)return e;if(p&&e.forEach===p)e.forEach(t,n);else if(e.length===+e.length){for(var r=0,s=e.length;r<s;r++)if(t.call(n,e[r],r,e)===i)return}else{var o=N.keys(e);for(var r=0,s=o.length;r<s;r++)if(t.call(n,e[o[r]],o[r],e)===i)return}return e};N.map=N.collect=function(e,t,n){var r=[];return e==null?r:d&&e.map===d?e.map(t,n):(C(e,function(e,i,s){r.push(t.call(n,e,i,s))}),r)};var k="Reduce of empty array with no initial value";N.reduce=N.foldl=N.inject=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(v&&e.reduce===v)return r&&(t=N.bind(t,r)),i?e.reduce(t,n):e.reduce(t);C(e,function(e,s,o){i?n=t.call(r,n,e,s,o):(n=e,i=!0)});if(!i)throw new TypeError(k);return n},N.reduceRight=N.foldr=function(e,t,n,r){var i=arguments.length>2;e==null&&(e=[]);if(m&&e.reduceRight===m)return r&&(t=N.bind(t,r)),i?e.reduceRight(t,n):e.reduceRight(t);var s=e.length;if(s!==+s){var o=N.keys(e);s=o.length}C(e,function(u,a,f){a=o?o[--s]:--s,i?n=t.call(r,n,e[a],a,f):(n=e[a],i=!0)});if(!i)throw new TypeError(k);return n},N.find=N.detect=function(e,t,n){var r;return L(e,function(e,i,s){if(t.call(n,e,i,s))return r=e,!0}),r},N.filter=N.select=function(e,t,n){var r=[];return e==null?r:g&&e.filter===g?e.filter(t,n):(C(e,function(e,i,s){t.call(n,e,i,s)&&r.push(e)}),r)},N.reject=function(e,t,n){return N.filter(e,function(e,r,i){return!t.call(n,e,r,i)},n)},N.every=N.all=function(e,t,n){t||(t=N.identity);var r=!0;return e==null?r:y&&e.every===y?e.every(t,n):(C(e,function(e,s,o){if(!(r=r&&t.call(n,e,s,o)))return i}),!!r)};var L=N.some=N.any=function(e,t,n){t||(t=N.identity);var r=!1;return e==null?r:b&&e.some===b?e.some(t,n):(C(e,function(e,s,o){if(r||(r=t.call(n,e,s,o)))return i}),!!r)};N.contains=N.include=function(e,t){return e==null?!1:w&&e.indexOf===w?e.indexOf(t)!=-1:L(e,function(e){return e===t})},N.invoke=function(e,t){var n=f.call(arguments,2),r=N.isFunction(t);return N.map(e,function(e){return(r?t:e[t]).apply(e,n)})},N.pluck=function(e,t){return N.map(e,N.property(t))},N.where=function(e,t){return N.filter(e,N.matches(t))},N.findWhere=function(e,t){return N.find(e,N.matches(t))},N.max=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);var r=-Infinity,i=-Infinity;return C(e,function(e,s,o){var u=t?t.call(n,e,s,o):e;u>i&&(r=e,i=u)}),r},N.min=function(e,t,n){if(!t&&N.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);var r=Infinity,i=Infinity;return C(e,function(e,s,o){var u=t?t.call(n,e,s,o):e;u<i&&(r=e,i=u)}),r},N.shuffle=function(e){var t,n=0,r=[];return C(e,function(e){t=N.random(n++),r[n-1]=r[t],r[t]=e}),r},N.sample=function(e,t,n){return t==null||n?(e.length!==+e.length&&(e=N.values(e)),e[N.random(e.length-1)]):N.shuffle(e).slice(0,Math.max(0,t))};var A=function(e){return e==null?N.identity:N.isFunction(e)?e:N.property(e)};N.sortBy=function(e,t,n){return t=A(t),N.pluck(N.map(e,function(e,r,i){return{value:e,index:r,criteria:t.call(n,e,r,i)}}).sort(function(e,t){var n=e.criteria,r=t.criteria;if(n!==r){if(n>r||n===void 0)return 1;if(n<r||r===void 0)return-1}return e.index-t.index}),"value")};var O=function(e){return function(t,n,r){var i={};return n=A(n),C(t,function(s,o){var u=n.call(r,s,o,t);e(i,u,s)}),i}};N.groupBy=O(function(e,t,n){N.has(e,t)?e[t].push(n):e[t]=[n]}),N.indexBy=O(function(e,t,n){e[t]=n}),N.countBy=O(function(e,t){N.has(e,t)?e[t]++:e[t]=1}),N.sortedIndex=function(e,t,n,r){n=A(n);var i=n.call(r,t),s=0,o=e.length;while(s<o){var u=s+o>>>1;n.call(r,e[u])<i?s=u+1:o=u}return s},N.toArray=function(e){return e?N.isArray(e)?f.call(e):e.length===+e.length?N.map(e,N.identity):N.values(e):[]},N.size=function(e){return e==null?0:e.length===+e.length?e.length:N.keys(e).length},N.first=N.head=N.take=function(e,t,n){return e==null?void 0:t==null||n?e[0]:t<0?[]:f.call(e,0,t)},N.initial=function(e,t,n){return f.call(e,0,e.length-(t==null||n?1:t))},N.last=function(e,t,n){return e==null?void 0:t==null||n?e[e.length-1]:f.call(e,Math.max(e.length-t,0))},N.rest=N.tail=N.drop=function(e,t,n){return f.call(e,t==null||n?1:t)},N.compact=function(e){return N.filter(e,N.identity)};var M=function(e,t,n){return t&&N.every(e,N.isArray)?l.apply(n,e):(C(e,function(e){N.isArray(e)||N.isArguments(e)?t?a.apply(n,e):M(e,t,n):n.push(e)}),n)};N.flatten=function(e,t){return M(e,t,[])},N.without=function(e){return N.difference(e,f.call(arguments,1))},N.partition=function(e,t){var n=[],r=[];return C(e,function(e){(t(e)?n:r).push(e)}),[n,r]},N.uniq=N.unique=function(e,t,n,r){N.isFunction(t)&&(r=n,n=t,t=!1);var i=n?N.map(e,n,r):e,s=[],o=[];return C(i,function(n,r){if(t?!r||o[o.length-1]!==n:!N.contains(o,n))o.push(n),s.push(e[r])}),s},N.union=function(){return N.uniq(N.flatten(arguments,!0))},N.intersection=function(e){var t=f.call(arguments,1);return N.filter(N.uniq(e),function(e){return N.every(t,function(t){return N.contains(t,e)})})},N.difference=function(e){var t=l.apply(s,f.call(arguments,1));return N.filter(e,function(e){return!N.contains(t,e)})},N.zip=function(){var e=N.max(N.pluck(arguments,"length").concat(0)),t=new Array(e);for(var n=0;n<e;n++)t[n]=N.pluck(arguments,""+n);return t},N.object=function(e,t){if(e==null)return{};var n={};for(var r=0,i=e.length;r<i;r++)t?n[e[r]]=t[r]:n[e[r][0]]=e[r][1];return n},N.indexOf=function(e,t,n){if(e==null)return-1;var r=0,i=e.length;if(n){if(typeof n!="number")return r=N.sortedIndex(e,t),e[r]===t?r:-1;r=n<0?Math.max(0,i+n):n}if(w&&e.indexOf===w)return e.indexOf(t,n);for(;r<i;r++)if(e[r]===t)return r;return-1},N.lastIndexOf=function(e,t,n){if(e==null)return-1;var r=n!=null;if(E&&e.lastIndexOf===E)return r?e.lastIndexOf(t,n):e.lastIndexOf(t);var i=r?n:e.length;while(i--)if(e[i]===t)return i;return-1},N.range=function(e,t,n){arguments.length<=1&&(t=e||0,e=0),n=arguments[2]||1;var r=Math.max(Math.ceil((t-e)/n),0),i=0,s=new Array(r);while(i<r)s[i++]=e,e+=n;return s};var _=function(){};N.bind=function(e,t){var n,r;if(T&&e.bind===T)return T.apply(e,f.call(arguments,1));if(!N.isFunction(e))throw new TypeError;return n=f.call(arguments,2),r=function(){if(this instanceof r){_.prototype=e.prototype;var i=new _;_.prototype=null;var s=e.apply(i,n.concat(f.call(arguments)));return Object(s)===s?s:i}return e.apply(t,n.concat(f.call(arguments)))}},N.partial=function(e){var t=f.call(arguments,1);return function(){var n=0,r=t.slice();for(var i=0,s=r.length;i<s;i++)r[i]===N&&(r[i]=arguments[n++]);while(n<arguments.length)r.push(arguments[n++]);return e.apply(this,r)}},N.bindAll=function(e){var t=f.call(arguments,1);if(t.length===0)throw new Error("bindAll must be passed function names");return C(t,function(t){e[t]=N.bind(e[t],e)}),e},N.memoize=function(e,t){var n={};return t||(t=N.identity),function(){var r=t.apply(this,arguments);return N.has(n,r)?n[r]:n[r]=e.apply(this,arguments)}},N.delay=function(e,t){var n=f.call(arguments,2);return setTimeout(function(){return e.apply(null,n)},t)},N.defer=function(e){return N.delay.apply(N,[e,1].concat(f.call(arguments,1)))},N.throttle=function(e,t,n){var r,i,s,o=null,u=0;n||(n={});var a=function(){u=n.leading===!1?0:N.now(),o=null,s=e.apply(r,i),r=i=null};return function(){var f=N.now();!u&&n.leading===!1&&(u=f);var l=t-(f-u);return r=this,i=arguments,l<=0?(clearTimeout(o),o=null,u=f,s=e.apply(r,i),r=i=null):!o&&n.trailing!==!1&&(o=setTimeout(a,l)),s}},N.debounce=function(e,t,n){var r,i,s,o,u,a=function(){var f=N.now()-o;f<t?r=setTimeout(a,t-f):(r=null,n||(u=e.apply(s,i),s=i=null))};return function(){s=this,i=arguments,o=N.now();var f=n&&!r;return r||(r=setTimeout(a,t)),f&&(u=e.apply(s,i),s=i=null),u}},N.once=function(e){var t=!1,n;return function(){return t?n:(t=!0,n=e.apply(this,arguments),e=null,n)}},N.wrap=function(e,t){return N.partial(t,e)},N.compose=function(){var e=arguments;return function(){var t=arguments;for(var n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},N.after=function(e,t){return function(){if(--e<1)return t.apply(this,arguments)}},N.keys=function(e){if(!N.isObject(e))return[];if(x)return x(e);var t=[];for(var n in e)N.has(e,n)&&t.push(n);return t},N.values=function(e){var t=N.keys(e),n=t.length,r=new Array(n);for(var i=0;i<n;i++)r[i]=e[t[i]];return r},N.pairs=function(e){var t=N.keys(e),n=t.length,r=new Array(n);for(var i=0;i<n;i++)r[i]=[t[i],e[t[i]]];return r},N.invert=function(e){var t={},n=N.keys(e);for(var r=0,i=n.length;r<i;r++)t[e[n[r]]]=n[r];return t},N.functions=N.methods=function(e){var t=[];for(var n in e)N.isFunction(e[n])&&t.push(n);return t.sort()},N.extend=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]=t[n]}),e},N.pick=function(e){var t={},n=l.apply(s,f.call(arguments,1));return C(n,function(n){n in e&&(t[n]=e[n])}),t},N.omit=function(e){var t={},n=l.apply(s,f.call(arguments,1));for(var r in e)N.contains(n,r)||(t[r]=e[r]);return t},N.defaults=function(e){return C(f.call(arguments,1),function(t){if(t)for(var n in t)e[n]===void 0&&(e[n]=t[n])}),e},N.clone=function(e){return N.isObject(e)?N.isArray(e)?e.slice():N.extend({},e):e},N.tap=function(e,t){return t(e),e};var D=function(e,t,n,r){if(e===t)return e!==0||1/e==1/t;if(e==null||t==null)return e===t;e instanceof N&&(e=e._wrapped),t instanceof N&&(t=t._wrapped);var i=c.call(e);if(i!=c.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:e==0?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if(typeof e!="object"||typeof t!="object")return!1;var s=n.length;while(s--)if(n[s]==e)return r[s]==t;var o=e.constructor,u=t.constructor;if(o!==u&&!(N.isFunction(o)&&o instanceof o&&N.isFunction(u)&&u instanceof u)&&"constructor"in e&&"constructor"in t)return!1;n.push(e),r.push(t);var a=0,f=!0;if(i=="[object Array]"){a=e.length,f=a==t.length;if(f)while(a--)if(!(f=D(e[a],t[a],n,r)))break}else{for(var l in e)if(N.has(e,l)){a++;if(!(f=N.has(t,l)&&D(e[l],t[l],n,r)))break}if(f){for(l in t)if(N.has(t,l)&&!(a--))break;f=!a}}return n.pop(),r.pop(),f};N.isEqual=function(e,t){return D(e,t,[],[])},N.isEmpty=function(e){if(e==null)return!0;if(N.isArray(e)||N.isString(e))return e.length===0;for(var t in e)if(N.has(e,t))return!1;return!0},N.isElement=function(e){return!!e&&e.nodeType===1},N.isArray=S||function(e){return c.call(e)=="[object Array]"},N.isObject=function(e){return e===Object(e)},C(["Arguments","Function","String","Number","Date","RegExp"],function(e){N["is"+e]=function(t){return c.call(t)=="[object "+e+"]"}}),N.isArguments(arguments)||(N.isArguments=function(e){return!!e&&!!N.has(e,"callee")}),typeof /./!="function"&&(N.isFunction=function(e){return typeof e=="function"}),N.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},N.isNaN=function(e){return N.isNumber(e)&&e!=+e},N.isBoolean=function(e){return e===!0||e===!1||c.call(e)=="[object Boolean]"},N.isNull=function(e){return e===null},N.isUndefined=function(e){return e===void 0},N.has=function(e,t){return h.call(e,t)},N.noConflict=function(){return e._=r,this},N.identity=function(e){return e},N.constant=function(e){return function(){return e}},N.property=function(e){return function(t){return t[e]}},N.matches=function(e){return function(t){if(t===e)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0}},N.times=function(e,t,n){var r=Array(Math.max(0,e));for(var i=0;i<e;i++)r[i]=t.call(n,i);return r},N.random=function(e,t){return t==null&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))},N.now=Date.now||function(){return(new Date).getTime()};var P={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};P.unescape=N.invert(P.escape);var H={escape:new RegExp("["+N.keys(P.escape).join("")+"]","g"),unescape:new RegExp("("+N.keys(P.unescape).join("|")+")","g")};N.each(["escape","unescape"],function(e){N[e]=function(t){return t==null?"":(""+t).replace(H[e],function(t){return P[e][t]})}}),N.result=function(e,t){if(e==null)return void 0;var n=e[t];return N.isFunction(n)?n.call(e):n},N.mixin=function(e){C(N.functions(e),function(t){var n=N[t]=e[t];N.prototype[t]=function(){var e=[this._wrapped];return a.apply(e,arguments),q.call(this,n.apply(N,e))}})};var B=0;N.uniqueId=function(e){var t=++B+"";return e?e+t:t},N.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var j=/(.)^/,F={"'":"'","\\":"\\","\r":"r","\n":"n","	":"t","\u2028":"u2028","\u2029":"u2029"},I=/\\|'|\r|\n|\t|\u2028|\u2029/g;N.template=function(e,t,n){var r;n=N.defaults({},n,N.templateSettings);var i=new RegExp([(n.escape||j).source,(n.interpolate||j).source,(n.evaluate||j).source].join("|")+"|$","g"),s=0,o="__p+='";e.replace(i,function(t,n,r,i,u){return o+=e.slice(s,u).replace(I,function(e){return"\\"+F[e]}),n&&(o+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'"),r&&(o+="'+\n((__t=("+r+"))==null?'':__t)+\n'"),i&&(o+="';\n"+i+"\n__p+='"),s=u+t.length,t}),o+="';\n",n.variable||(o="with(obj||{}){\n"+o+"}\n"),o="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+o+"return __p;\n";try{r=new Function(n.variable||"obj","_",o)}catch(u){throw u.source=o,u}if(t)return r(t,N);var a=function(e){return r.call(this,e,N)};return a.source="function("+(n.variable||"obj")+"){\n"+o+"}",a},N.chain=function(e){return N(e).chain()};var q=function(e){return this._chain?N(e).chain():e};N.mixin(N),C(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=s[e];N.prototype[e]=function(){var n=this._wrapped;return t.apply(n,arguments),(e=="shift"||e=="splice")&&n.length===0&&delete n[0],q.call(this,n)}}),C(["concat","join","slice"],function(e){var t=s[e];N.prototype[e]=function(){return q.call(this,t.apply(this._wrapped,arguments))}}),N.extend(N.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),typeof define=="function"&&define.amd&&ace.define("underscore",[],function(){return N})}).call(this)},{}],3:[function(e,t,n){var r=e("underscore"),i=e("events"),s=e("./vars.js"),o=e("./messages.js"),u=e("./lex.js").Lexer,a=e("./reg.js"),f=e("./state.js").state,l=e("./style.js"),c=e("./options.js"),h=function(){"use strict";function D(e,t){return e=e.trim(),/^[+-]W\d{3}$/g.test(e)?!0:c.validNames.indexOf(e)===-1&&t.type!=="jslint"&&!r.has(c.removed,e)?(V("E001",t,e),!1):!0}function P(e){return Object.prototype.toString.call(e)==="[object String]"}function H(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function B(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord&&f.option.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!f.option.strict&&!f.directive["use strict"])return!1;if(e.isProperty)return!1}return!0}function j(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return typeof r=="string"||typeof r=="number"?r:e})}function F(e,t){Object.keys(t).forEach(function(n){if(r.has(h.blacklist,n))return;e[n]=t[n]})}function I(){if(f.option.enforceall){for(var e in c.bool.enforcing)f.option[e]===undefined&&(f.option[e]=!0);for(var t in c.bool.relaxing)f.option[t]===undefined&&(f.option[t]=!1)}}function q(){I(),f.option.esnext&&F(N,s.newEcmaIdentifiers),f.option.couch&&F(N,s.couch),f.option.qunit&&F(N,s.qunit),f.option.rhino&&F(N,s.rhino),f.option.shelljs&&(F(N,s.shelljs),F(N,s.node)),f.option.typed&&F(N,s.typed),f.option.phantom&&F(N,s.phantom),f.option.prototypejs&&F(N,s.prototypejs),f.option.node&&(F(N,s.node),F(N,s.typed)),f.option.devel&&F(N,s.devel),f.option.dojo&&F(N,s.dojo),f.option.browser&&(F(N,s.browser),F(N,s.typed)),f.option.browserify&&(F(N,s.browser),F(N,s.typed),F(N,s.browserify)),f.option.nonstandard&&F(N,s.nonstandard),f.option.jasmine&&F(N,s.jasmine),f.option.jquery&&F(N,s.jquery),f.option.mootools&&F(N,s.mootools),f.option.worker&&F(N,s.worker),f.option.wsh&&F(N,s.wsh),f.option.globalstrict&&f.option.strict!==!1&&(f.option.strict=!0),f.option.yui&&F(N,s.yui),f.option.mocha&&F(N,s.mocha),f.option.inMoz=function(e){return f.option.moz},f.option.inESNext=function(e){return f.option.moz||f.option.esnext},f.option.inES5=function(){return!f.option.es3},f.option.inES3=function(e){return e?!f.option.moz&&!f.option.esnext&&f.option.es3:f.option.es3}}function R(e,t,n){var r=Math.floor(t/f.lines.length*100),i=o.errors[e].desc;throw{name:"JSHintError",line:t,character:n,message:i+" ("+r+"% scanned).",raw:i,code:e}}function U(e,t,n,r){return h.undefs.push([e,t,n,r])}function z(){var e=f.ignoredLines;if(r.isEmpty(e))return;h.errors=r.reject(h.errors,function(t){return e[t.line]})}function W(e,t,n,r,i,s){var u,a,l,c;if(/^W\d{3}$/.test(e)){if(f.ignored[e])return;c=o.warnings[e]}else/E\d{3}/.test(e)?c=o.errors[e]:/I\d{3}/.test(e)&&(c=o.info[e]);return t=t||f.tokens.next,t.id==="(end)"&&(t=f.tokens.curr),a=t.line||0,u=t.from||0,l={id:"(error)",raw:c.desc,code:c.code,evidence:f.lines[a-1]||"",line:a,character:u,scope:h.scope,a:n,b:r,c:i,d:s},l.reason=j(c.desc,l),h.errors.push(l),z(),h.errors.length>=f.option.maxerr&&R("E043",a,u),l}function X(e,t,n,r,i,s,o){return W(e,{line:t,from:n},r,i,s,o)}function V(e,t,n,r,i,s){W(e,t,n,r,i,s)}function $(e,t,n,r,i,s,o){return V(e,{line:t,from:n},r,i,s,o)}function J(e,t){var n;return n={id:"(internal)",elem:e,value:t},h.internals.push(n),n}function K(e,t){t=t||{};var n=t.type,i=t.token,s=t.islet;n==="exception"&&r.has(v["(context)"],e)&&v[e]!==!0&&!f.option.node&&W("W002",f.tokens.next,e),r.has(v,e)&&!v["(global)"]&&(v[e]===!0?f.option.latedef&&(f.option.latedef===!0&&r.contains([v[e],n],"unction")||!r.contains([v[e],n],"unction"))&&W("W003",f.tokens.next,e):((!f.option.shadow||r.contains(["inner","outer"],f.option.shadow))&&n!=="exception"||v["(blockscope)"].getlabel(e))&&W("W004",f.tokens.next,e)),v["(context)"]&&r.has(v["(context)"],e)&&n!=="function"&&f.option.shadow==="outer"&&W("W123",f.tokens.next,e),s?(v["(blockscope)"].current.add(e,n,f.tokens.curr),v["(blockscope)"].atTop()&&p[e]&&(f.tokens.curr.exported=!0)):(v["(blockscope)"].shadow(e),v[e]=n,i&&(v["(tokens)"][e]=i),zt(v,e,{unused:t.unused||!1}),v["(global)"]?(g[e]=v,r.has(y,e)&&(f.option.latedef&&(f.option.latedef===!0&&r.contains([v[e],n],"unction")||!r.contains([v[e],n],"unction"))&&W("W003",f.tokens.next,e),delete y[e])):C[e]=v)}function Q(){var e=f.tokens.next,t=e.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g)||[],i={};if(e.type==="globals"){t.forEach(function(e){e=e.split(":");var t=(e[0]||"").trim(),n=(e[1]||"").trim();t.charAt(0)==="-"?(t=t.slice(1),n=!1,h.blacklist[t]=t,delete N[t]):i[t]=n==="true"}),F(N,i);for(var s in i)r.has(i,s)&&(n[s]=e)}e.type==="exported"&&t.forEach(function(e){p[e]=!0}),e.type==="members"&&(T=T||{},t.forEach(function(e){var t=e.charAt(0),n=e.charAt(e.length-1);t===n&&(t==='"'||t==="'")&&(e=e.substr(1,e.length-2).replace('\\"','"')),T[e]=!1}));var o=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];if(e.type==="jshint"||e.type==="jslint")t.forEach(function(t){t=t.split(":");var n=(t[0]||"").trim(),r=(t[1]||"").trim();if(!D(n,e))return;if(o.indexOf(n)>=0){if(r!=="false"){r=+r;if(typeof r!="number"||!isFinite(r)||r<=0||Math.floor(r)!==r){V("E032",e,t[1].trim());return}f.option[n]=r}else f.option[n]=n==="indent"?4:!1;return}if(n==="validthis"){if(v["(global)"])return void V("E009");if(r!=="true"&&r!=="false")return void V("E002",e);f.option.validthis=r==="true";return}if(n==="quotmark"){switch(r){case"true":case"false":f.option.quotmark=r==="true";break;case"double":case"single":f.option.quotmark=r;break;default:V("E002",e)}return}if(n==="shadow"){switch(r){case"true":f.option.shadow=!0;break;case"outer":f.option.shadow="outer";break;case"false":case"inner":f.option.shadow="inner";break;default:V("E002",e)}return}if(n==="unused"){switch(r){case"true":f.option.unused=!0;break;case"false":f.option.unused=!1;break;case"vars":case"strict":f.option.unused=r;break;default:V("E002",e)}return}if(n==="latedef"){switch(r){case"true":f.option.latedef=!0;break;case"false":f.option.latedef=!1;break;case"nofunc":f.option.latedef="nofunc";break;default:V("E002",e)}return}if(n==="ignore"){switch(r){case"start":f.ignoreLinterErrors=!0;break;case"end":f.ignoreLinterErrors=!1;break;case"line":f.ignoredLines[e.line]=!0,z();break;default:V("E002",e)}return}var i=/^([+-])(W\d{3})$/g.exec(n);if(i){f.ignored[i[2]]=i[1]==="-";return}var s;if(r==="true"||r==="false"){e.type==="jslint"?(s=c.renamed[n]||n,f.option[s]=r==="true",c.inverted[s]!==undefined&&(f.option[s]=!f.option[s])):f.option[n]=r==="true",n==="newcap"&&(f.option["(explicitNewcap)"]=!0);return}V("E002",e)}),q()}function G(e){var t=e||0,n=0,r;while(n<=t)r=E[n],r||(r=E[n]=S.token()),n+=1;return r}function Y(){var e=0,t;do t=G(e++);while(t.id==="(endline)");return t}function Z(e,t){switch(f.tokens.curr.id){case"(number)":f.tokens.next.id==="."&&W("W005",f.tokens.curr);break;case"-":(f.tokens.next.id==="-"||f.tokens.next.id==="--")&&W("W006");break;case"+":(f.tokens.next.id==="+"||f.tokens.next.id==="++")&&W("W007")}if(e&&f.tokens.next.id!==e)if(t)f.tokens.next.id==="(end)"?V("E019",t,t.id):V("E020",f.tokens.next,e,t.id,t.line,f.tokens.next.value);else if(f.tokens.next.type!=="(identifier)"||f.tokens.next.value!==e)f.tokens.next.value==="..."?f.option.esnext||W("W119",f.tokens.next,"spread/rest operator"):W("W116",f.tokens.next,e,f.tokens.next.value);f.tokens.prev=f.tokens.curr,f.tokens.curr=f.tokens.next;for(;;){f.tokens.next=E.shift()||S.token(),f.tokens.next||R("E041",f.tokens.curr.line);if(f.tokens.next.id==="(end)"||f.tokens.next.id==="(error)")return;f.tokens.next.check&&f.tokens.next.check();if(f.tokens.next.isSpecial)Q();else if(f.tokens.next.id!=="(endline)")break}}function et(e){return e.infix||!e.identifier&&!!e.led}function tt(){var e=f.tokens.curr,t=f.tokens.next;return t.id===";"||t.id==="}"||t.id===":"?!0:et(t)===et(e)||e.id==="yield"&&f.option.inMoz(!0)?e.line!==t.line:!1}function nt(e,t){var n,i=!1,s=!1,o=!1,u=f.tokens.curr.value==="=>";f.nameStack.push(),!t&&f.tokens.next.value==="let"&&G(0).value==="("&&(f.option.inMoz(!0)||W("W118",f.tokens.next,"let expressions"),o=!0,v["(blockscope)"].stack(),Z("let"),Z("("),f.syntax.let.fud.call(f.syntax.let.fud,!1),Z(")")),f.tokens.next.id==="(end)"&&V("E006",f.tokens.curr),f.tokens.next.type==="(template)"&&Vt();var a=f.option.asi&&f.tokens.prev.line<f.tokens.curr.line&&r.contains(["]",")"],f.tokens.prev.id)&&r.contains(["[","("],f.tokens.curr.id);a&&W("W014",f.tokens.curr,f.tokens.curr.id),Z(),t&&(v["(verb)"]=f.tokens.curr.value);if(t===!0&&f.tokens.curr.fud)n=f.tokens.curr.fud();else{f.tokens.curr.nud?n=f.tokens.curr.nud():V("E030",f.tokens.curr,f.tokens.curr.id);while(e<f.tokens.next.lbp&&!tt())i=f.tokens.curr.value==="Array",s=f.tokens.curr.value==="Object",n&&(n.value||n.first&&n.first.value)&&(n.value!=="new"||n.first&&n.first.value&&n.first.value===".")&&(i=!1,n.value!==f.tokens.curr.value&&(s=!1)),Z(),i&&f.tokens.curr.id==="("&&f.tokens.next.id===")"&&W("W009",f.tokens.curr),s&&f.tokens.curr.id==="("&&f.tokens.next.id===")"&&W("W010",f.tokens.curr),n&&f.tokens.curr.led?n=f.tokens.curr.led(n):V("E033",f.tokens.curr,f.tokens.curr.id)}return o&&v["(blockscope)"].unstack(),f.option.singleGroups&&n&&n.paren&&!n.exprs&&!u&&!n.triggerFnExpr&&W("W126"),f.nameStack.pop(),n}function rt(e,t){e=e||f.tokens.curr,t=t||f.tokens.next,!f.option.laxbreak&&e.line!==t.line&&W("W014",t,t.value)}function it(e){e=e||f.tokens.curr,e.line!==f.tokens.next.line&&W("E022",e,e.value)}function st(e,t){e.line!==t.line&&(f.option.laxcomma||(ot.first&&(W("I001"),ot.first=!1),W("W014",e,t.value)))}function ot(e){e=e||{},f.option.nocomma&&W("W127"),e.peek?st(f.tokens.prev,f.tokens.curr):(st(f.tokens.curr,f.tokens.next),Z(","));if(f.tokens.next.identifier&&(!e.property||!f.option.inES5()))switch(f.tokens.next.value){case"break":case"case":case"catch":case"continue":case"default":case"do":case"else":case"finally":case"for":case"if":case"in":case"instanceof":case"return":case"switch":case"throw":case"try":case"var":case"let":case"while":case"with":return V("E024",f.tokens.next,f.tokens.next.value),!1}if(f.tokens.next.type==="(punctuator)")switch(f.tokens.next.value){case"}":case"]":case",":if(e.allowTrailing)return!0;case")":return V("E024",f.tokens.next,f.tokens.next.value),!1}return!0}function ut(e,t){var n=f.syntax[e];if(!n||typeof n!="object")f.syntax[e]=n={id:e,lbp:t,value:e};return n}function at(e){return ut(e,0)}function ft(e,t){var n=at(e);return n.identifier=n.reserved=!0,n.fud=t,n}function lt(e,t){var n=ft(e,t);return n.block=!0,n}function ct(e){var t=e.id.charAt(0);if(t>="a"&&t<="z"||t>="A"&&t<="Z")e.identifier=e.reserved=!0;return e}function ht(e,t){var n=ut(e,150);return ct(n),n.nud=typeof t=="function"?t:function(){this.right=nt(150),this.arity="unary";if(this.id==="++"||this.id==="--")f.option.plusplus?W("W016",this,this.id):this.right&&(!this.right.identifier||B(this.right))&&this.right.id!=="."&&this.right.id!=="["&&W("W017",this);return this},n}function pt(e,t){var n=at(e);return n.type=e,n.nud=t,n}function dt(e,t){var n=pt(e,t);return n.identifier=!0,n.reserved=!0,n}function vt(e,t){var n=pt(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function mt(e,t){return dt(e,function(){return typeof t=="function"&&t(this),this})}function gt(e,t,n,r){var i=ut(e,n);return ct(i),i.infix=!0,i.led=function(i){return r||rt(f.tokens.prev,f.tokens.curr),e==="in"&&i.id==="!"&&W("W018",i,"!"),typeof t=="function"?t(i,this):(this.left=i,this.right=nt(n),this)},i}function yt(e){var t=ut(e,42);return t.led=function(e){return rt(f.tokens.prev,f.tokens.curr),this.left=e,this.right=$t(undefined,undefined,!1,{loneArg:e}),this},t}function bt(e,t){var n=ut(e,100);return n.led=function(e){rt(f.tokens.prev,f.tokens.curr);var n=nt(100);return H(e,"NaN")||H(n,"NaN")?W("W019",this):t&&t.apply(this,[e,n]),(!e||!n)&&R("E041",f.tokens.curr.line),e.id==="!"&&W("W018",e,"!"),n.id==="!"&&W("W018",n,"!"),this.left=e,this.right=n,this},n}function wt(e){return e&&(e.type==="(number)"&&+e.value===0||e.type==="(string)"&&e.value===""||e.type==="null"&&!f.option.eqnull||e.type==="true"||e.type==="false"||e.type==="undefined")}function Et(e,t){if(f.option.notypeof)return!1;if(!e||!t)return!1;var n=["undefined","object","boolean","number","string","function","xml","object","unknown"];return t.type==="(identifier)"&&t.value==="typeof"&&e.type==="(string)"?!r.contains(n,e.value):!1}function St(e){function n(e){if(typeof e!="object")return;return e.right==="prototype"?e:n(e.left)}function r(e){while(!e.identifier&&typeof e.left=="object")e=e.left;if(e.identifier&&t.indexOf(e.value)>=0)return e.value}var t=["Array","ArrayBuffer","Boolean","Collator","DataView","Date","DateTimeFormat","Error","EvalError","Float32Array","Float64Array","Function","Infinity","Intl","Int16Array","Int32Array","Int8Array","Iterator","Number","NumberFormat","Object","RangeError","ReferenceError","RegExp","StopIteration","String","SyntaxError","TypeError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","URIError"],i=n(e);if(i)return r(i)}function xt(e,t,n){var r=gt(e,typeof t=="function"?t:function(e,t){t.left=e;if(e){if(f.option.freeze){var n=St(e);n&&W("W121",e,n)}N[e.value]===!1&&C[e.value]["(global)"]===!0?W("W020",e):e["function"]&&W("W021",e,e.value),v[e.value]==="const"&&V("E013",e,e.value);if(e.id===".")return e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&W("E031",t):W("E031",t),f.nameStack.set(f.tokens.prev),t.right=nt(10),t;if(e.id==="[")return f.tokens.curr.left.first?f.tokens.curr.left.first.forEach(function(e){e&&v[e.value]==="const"&&V("E013",e,e.value)}):e.left?e.left.value==="arguments"&&!f.directive["use strict"]&&W("E031",t):W("E031",t),f.nameStack.set(e.right),t.right=nt(10),t;if(e.identifier&&!B(e))return v[e.value]==="exception"&&W("W022",e),f.nameStack.set(e),t.right=nt(10),t;e===f.syntax["function"]&&W("W023",f.tokens.curr)}V("E031",t)},n);return r.exps=!0,r.assign=!0,r}function Tt(e,t,n){var r=ut(e,n);return ct(r),r.led=typeof t=="function"?t:function(e){return f.option.bitwise&&W("W016",this,this.id),this.left=e,this.right=nt(n),this},r}function Nt(e){return xt(e,function(e,t){f.option.bitwise&&W("W016",t,t.id);if(e)return e.id==="."||e.id==="["||e.identifier&&!B(e)?(nt(10),t):(e===f.syntax["function"]&&W("W023",f.tokens.curr),t);V("E031",t)},20)}function Ct(e){var t=ut(e,150);return t.led=function(e){return f.option.plusplus?W("W016",this,this.id):(!e.identifier||B(e))&&e.id!=="."&&e.id!=="["&&W("W017",this),this.left=e,this},t}function kt(e,t,n,r){if(!f.tokens.next.identifier)return;n||Z();var i=f.tokens.curr,s=f.tokens.curr.value;return r&&(f.tokens.curr.exported=!0),B(i)?t&&f.option.inES5()?s:e&&s==="undefined"?s:(W("W024",f.tokens.curr,f.tokens.curr.id),s):s}function Lt(e,t,n){var r=kt(e,t,!1,n);if(r)return r;f.tokens.next.value==="..."?f.option.esnext||W("W119",f.tokens.next,"spread/rest operator"):(V("E030",f.tokens.next,f.tokens.next.value),f.tokens.next.id!==";"&&Z())}function At(e){var t=0,n;if(f.tokens.next.id!==";"||e.inBracelessBlock)return;for(;;){do n=G(t),t+=1;while(n.id!="(end)"&&n.id==="(comment)");if(n.reach)return;if(n.id!=="(endline)"){if(n.id==="function"){f.option.latedef===!0&&W("W026",n);break}W("W027",n,n.value,e.value);break}}}function Ot(){f.tokens.next.id!==";"?f.option.asi||(!f.option.lastsemic||f.tokens.next.id!=="}"||f.tokens.next.line!==f.tokens.curr.line)&&X("W033",f.tokens.curr.line,f.tokens.curr.character):Z(";")}function Mt(){var e,t=w,n,i=C,s=f.tokens.next;if(s.id===";"){Z(";");return}var o=B(s);o&&s.meta&&s.meta.isFutureReservedWord&&G().id===":"&&(W("W024",s,s.id),o=!1);if(s.value==="module"&&s.type==="(identifier)"&&G().type==="(identifier)"){f.option.inESNext()||W("W119",f.tokens.curr,"module"),Z("module");var u=Lt();K(u,{type:"unused",token:f.tokens.curr}),Z("from"),Z("(string)"),Ot();return}if(r.has(["[","{"],s.value)&&un().isDestAssign){f.option.inESNext()||W("W104",f.tokens.curr,"destructuring expression"),e=Yt(),e.forEach(function(e){U(v,"W117",e.token,e.id)}),Z("="),Zt(e,nt(10,!0)),Z(";");return}s.identifier&&!o&&G().id===":"&&(Z(),Z(":"),C=Object.create(i),K(s.value,{type:"label"}),!f.tokens.next.labelled&&f.tokens.next.value!=="{"&&W("W028",f.tokens.next,s.value,f.tokens.next.value),f.tokens.next.label=s.value,s=f.tokens.next);if(s.id==="{"){var a=v["(verb)"]==="case"&&f.tokens.curr.value===":";Pt(!0,!0,!1,!1,a);return}return n=nt(0,!0),n&&(!n.identifier||n.value!=="function")&&n.type!=="(punctuator)"&&!f.directive["use strict"]&&f.option.globalstrict&&f.option.strict&&W("E007"),s.block||(!f.option.expr&&(!n||!n.exps)?W("W030",f.tokens.curr):f.option.nonew&&n&&n.left&&n.id==="("&&n.left.id==="new"&&W("W031",s),Ot()),w=t,C=i,n}function _t(){var e=[],t;while(!f.tokens.next.reach&&f.tokens.next.id!=="(end)")f.tokens.next.id===";"?(t=G(),(!t||t.id!=="("&&t.id!=="[")&&W("W032"),Z(";")):e.push(Mt());return e}function Dt(){var e,t,n;while(f.tokens.next.id==="(string)"){t=G(0);if(t.id==="(endline)"){e=1;do n=G(e++);while(n.id==="(endline)");if(n.id===";")t=n;else{if(n.value==="["||n.value===".")return;(!f.option.asi||n.value==="(")&&W("W033",f.tokens.next)}}else{if(t.id==="."||t.id==="[")return;t.id!==";"&&W("W033",t)}Z(),f.directive[f.tokens.curr.value]&&W("W034",f.tokens.curr,f.tokens.curr.value),f.tokens.curr.value==="use strict"&&(f.option["(explicitNewcap)"]||(f.option.newcap=!0),f.option.undef=!0),f.directive[f.tokens.curr.value]=!0,t.id===";"&&Z(";")}}function Pt(e,t,n,i,s){var o,u=b,a=w,l,c=C,h,p,d;b=e;if(!e||!f.option.funcscope)C=Object.create(C);h=f.tokens.next;var m=v["(metrics)"];m.nestedBlockDepth+=1,m.verifyMaxNestedBlockDepthPerFunction();if(f.tokens.next.id==="{"){Z("{"),v["(blockscope)"].stack(),p=f.tokens.curr.line;if(f.tokens.next.id!=="}"){w+=f.option.indent;while(!e&&f.tokens.next.from>w)w+=f.option.indent;if(n){l={};for(d in f.directive)r.has(f.directive,d)&&(l[d]=f.directive[d]);Dt(),f.option.strict&&v["(context)"]["(global)"]&&!l["use strict"]&&!f.directive["use strict"]&&W("E007")}o=_t(),m.statementCount+=o.length,n&&(f.directive=l),w-=f.option.indent}Z("}",h),v["(blockscope)"].unstack(),w=a}else if(!e)if(n){l={},t&&!i&&!f.option.inMoz(!0)&&V("W118",f.tokens.curr,"function closure expressions");if(!t)for(d in f.directive)r.has(f.directive,d)&&(l[d]=f.directive[d]);nt(10),f.option.strict&&v["(context)"]["(global)"]&&!l["use strict"]&&!f.directive["use strict"]&&W("E007")}else V("E021",f.tokens.next,"{",f.tokens.next.value);else v["(nolet)"]=!0,(!t||f.option.curly)&&W("W116",f.tokens.next,"{",f.tokens.next.value),f.tokens.next.inBracelessBlock=!0,w+=f.option.indent,o=[Mt()],w-=f.option.indent,delete v["(nolet)"];switch(v["(verb)"]){case"break":case"continue":case"return":case"throw":if(s)break;default:v["(verb)"]=null}if(!e||!f.option.funcscope)C=c;return b=u,e&&f.option.noempty&&(!o||o.length===0)&&W("W035",f.tokens.prev),m.nestedBlockDepth-=1,o}function Ht(e){T&&typeof T[e]!="boolean"&&W("W036",f.tokens.curr,e),typeof x[e]=="number"?x[e]+=1:x[e]=1}function Bt(e){var t=e.value,n=Object.getOwnPropertyDescriptor(y,t);n?n.value.push(e.line):y[t]=[e.line]}function Ft(){var e={};e.exps=!0,v["(comparray)"].stack();var t=!1;return f.tokens.next.value!=="for"&&(t=!0,f.option.inMoz(!0)||W("W116",f.tokens.next,"for",f.tokens.next.value),v["(comparray)"].setState("use"),e.right=nt(10)),Z("for"),f.tokens.next.value==="each"&&(Z("each"),f.option.inMoz(!0)||W("W118",f.tokens.curr,"for each")),Z("("),v["(comparray)"].setState("define"),e.left=nt(130),r.contains(["in","of"],f.tokens.next.value)?Z():V("E045",f.tokens.curr),v["(comparray)"].setState("generate"),nt(10),Z(")"),f.tokens.next.value==="if"&&(Z("if"),Z("("),v["(comparray)"].setState("filter"),e.filter=nt(10),Z(")")),t||(v["(comparray)"].setState("use"),e.right=nt(10)),Z("]"),v["(comparray)"].unstack(),e}function It(){return v["(statement)"]&&v["(statement)"].type==="class"||v["(context)"]&&v["(context)"]["(verb)"]==="class"}function qt(e){return e.identifier||e.id==="(string)"||e.id==="(number)"}function Rt(e){var t,n=!0;return typeof e=="object"?t=e:(n=e,t=kt(!1,!0,n)),t?typeof t=="object"&&(t.id==="(string)"||t.id==="(identifier)"?t=t.value:t.id==="(number)"&&(t=t.value.toString())):f.tokens.next.id==="(string)"?(t=f.tokens.next.value,n||Z()):f.tokens.next.id==="(number)"&&(t=f.tokens.next.value.toString(),n||Z()),t==="hasOwnProperty"&&W("W001"),t}function Ut(e){var t,n=[],i,s=[],o,u=!1,a=e&&e.loneArg;if(a&&a.identifier===!0)return K(a.value,{type:"unused",token:a}),[a];t=f.tokens.next,(!e||!e.parsedParen)&&Z("(");if(f.tokens.next.id===")"){Z(")");return}for(;;){if(r.contains(["{","["],f.tokens.next.id)){s=Yt();for(o in s)o=s[o],o.id&&(n.push(o.id),K(o.id,{type:"unused",token:o.token}))}else f.tokens.next.value==="..."?(f.option.esnext||W("W119",f.tokens.next,"spread/rest operator"),Z("..."),i=Lt(!0),n.push(i),K(i,{type:"unused",token:f.tokens.curr})):(i=Lt(!0),n.push(i),K(i,{type:"unused",token:f.tokens.curr}));u&&f.tokens.next.id!=="="&&V("E051",f.tokens.current),f.tokens.next.id==="="&&(f.option.inESNext()||W("W119",f.tokens.next,"default parameters"),Z("="),u=!0,nt(10));if(f.tokens.next.id!==",")return Z(")",t),n;ot()}}function zt(e,t,n){e["(properties)"][t]||(e["(properties)"][t]={unused:!1}),r.extend(e["(properties)"][t],n)}function Wt(e,t,n){return e["(properties)"][t]?e["(properties)"][t][n]||null:null}function Xt(e,t,n,i){var s={"(name)":e,"(breakage)":0,"(loopage)":0,"(scope)":n,"(tokens)":{},"(properties)":{},"(catch)":!1,"(global)":!1,"(line)":null,"(character)":null,"(metrics)":null,"(statement)":null,"(context)":null,"(blockscope)":null,"(comparray)":null,"(generator)":null,"(params)":null};return t&&r.extend(s,{"(line)":t.line,"(character)":t.character,"(metrics)":Jt(t)}),r.extend(s,i),s["(context)"]&&(s["(blockscope)"]=s["(context)"]["(blockscope)"],s["(comparray)"]=s["(context)"]["(comparray)"]),s}function Vt(){while(f.tokens.next.type!=="(template tail)"&&f.tokens.next.id!=="(end)"){Z();if(f.tokens.next.type==="(template tail)")break;f.tokens.next.type!=="(template middle)"&&f.tokens.next.type!=="(end)"&&nt(10)}return{id:"(template)",type:"(template)"}}function $t(e,t,n,i){var s,o=f.option,u=f.ignored,a=C;return f.option=Object.create(f.option),f.ignored=Object.create(f.ignored),C=Object.create(C),v=Xt(e||f.nameStack.infer(),f.tokens.next,C,{"(statement)":t,"(context)":v,"(generator)":n?!0:null}),s=v,f.tokens.curr.funct=v,m.push(v),e&&K(e,{type:"function"}),v["(params)"]=Ut(i),v["(metrics)"].verifyMaxParametersPerFunction(v["(params)"]),i&&(f.option.esnext||W("W119",f.tokens.curr,"arrow function syntax (=>)"),i.loneArg||Z("=>")),Pt(!1,!0,!0,!!i),!f.option.noyield&&n&&v["(generator)"]!=="yielded"&&W("W124",f.tokens.curr),v["(metrics)"].verifyMaxStatementsPerFunction(),v["(metrics)"].verifyMaxComplexityPerFunction(),v["(unusedOption)"]=f.option.unused,C=a,f.option=o,f.ignored=u,v["(last)"]=f.tokens.curr.line,v["(lastcharacter)"]=f.tokens.curr.character,r.map(Object.keys(v),function(e){if(e[0]==="(")return;v["(blockscope)"].unshadow(e)}),v=v["(context)"],s}function Jt(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,verifyMaxStatementsPerFunction:function(){f.option.maxstatements&&this.statementCount>f.option.maxstatements&&W("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(t){t=t||[],f.option.maxparams&&t.length>f.option.maxparams&&W("W072",e,t.length)},verifyMaxNestedBlockDepthPerFunction:function(){f.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===f.option.maxdepth+1&&W("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=f.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&W("W074",e,n)}}}function Kt(){v["(metrics)"].ComplexityCount+=1}function Qt(e){var t,n;e&&(t=e.id,n=e.paren,t===","&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren));switch(t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":!n&&!f.option.boss&&W("W084")}}function Gt(e){if(f.option.inES5())for(var t in e)r.has(e,t)&&e[t].setterToken&&!e[t].getterToken&&W("W078",e[t].setterToken)}function Yt(){var e,t,n=[];f.option.inESNext()||W("W104",f.tokens.curr,"destructuring expression");var i=function(){var e;if(r.contains(["[","{"],f.tokens.next.value)){t=Yt();for(var s in t)s=t[s],n.push({id:s.id,token:s.token})}else f.tokens.next.value===","?n.push({id:null,token:f.tokens.curr}):f.tokens.next.value==="("?(Z("("),i(),Z(")")):(e=Lt(),e&&n.push({id:e,token:f.tokens.curr}))};if(f.tokens.next.value==="["){Z("["),i();while(f.tokens.next.value!=="]")Z(","),i();Z("]")}else if(f.tokens.next.value==="{"){Z("{"),e=Lt(),f.tokens.next.value===":"?(Z(":"),i()):n.push({id:e,token:f.tokens.curr});while(f.tokens.next.value!=="}")Z(","),e=Lt(),f.tokens.next.value===":"?(Z(":"),i()):n.push({id:e,token:f.tokens.curr});Z("}")}return n}function Zt(e,t){var n=t.first;if(!n)return;r.zip(e,Array.isArray(n)?n:[n]).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&W("W080",t.first,t.first.value)})}function rn(e){return f.option.inESNext()||W("W104",f.tokens.curr,"class"),e?(this.name=Lt(),K(this.name,{type:"unused",token:f.tokens.curr})):f.tokens.next.identifier&&f.tokens.next.value!=="extends"?this.name=Lt():this.name=f.nameStack.infer(),sn(this),this}function sn(e){var t=f.directive["use strict"];f.tokens.next.value==="extends"&&(Z("extends"),e.heritage=nt(10)),f.directive["use strict"]=!0,Z("{"),e.body=on(e),Z("}"),f.directive["use strict"]=t}function on(e){var t,n,r,i={},s={},o;for(var u=0;f.tokens.next.id!=="}";++u){t=f.tokens.next,n=!1,r=null;if(t.id==="[")t=ln();else{if(!qt(t)){W("W052",f.tokens.next,f.tokens.next.value||f.tokens.next.type),Z();continue}Z(),o=!1,t.identifier&&t.value==="static"&&(qt(f.tokens.next)||f.tokens.next.id==="[")&&(o=f.tokens.next.id==="[",n=!0,t=f.tokens.next,f.tokens.next.id==="["?t=ln():Z()),t.identifier&&(t.value==="get"||t.value==="set")&&(qt(f.tokens.next)||f.tokens.next.id==="[")&&(o=f.tokens.next.id==="[",r=t,t=f.tokens.next,f.tokens.next.id==="["?t=ln():Z())}if(!cn(f.tokens.next,["("])){V("E054",f.tokens.next,f.tokens.next.value);while(f.tokens.next.id!=="}"&&!cn(f.tokens.next,["("]))Z();f.tokens.next.value!=="("&&$t(undefined,e,!1,null)}o||(r?fn(r.value,n?s:i,t.value,t,!0,n):(t.value==="constructor"?f.nameStack.set(e):f.nameStack.set(t),an(n?s:i,t.value,t,!0,n)));if(r&&t.value==="constructor"){var a=r.value==="get"?"class getter method":"class setter method";V("E049",t,a,"constructor")}else t.value==="prototype"&&V("E049",t,"class method","prototype");Rt(t),$t(null,e,!1,null)}Gt(i)}function an(e,t,n,i,s){var o=["key","class method","static class method"];o=o[(i||!1)+(s||!1)],n.identifier&&(t=n.value),e[t]&&r.has(e,t)?W("W075",f.tokens.next,o,t):e[t]={},e[t].basic=!0,e[t].basictkn=n}function fn(e,t,n,i,s,o){var u=e==="get"?"getterToken":"setterToken",a="";s?(o&&(a+="static "),a+=e+"ter method"):a="key",f.tokens.curr.accessorType=e,f.nameStack.set(i),t[n]&&r.has(t,n)?(t[n].basic||t[n][u])&&W("W075",f.tokens.next,a,n):t[n]={},t[n][u]=i}function ln(){Z("["),f.option.esnext||W("W119",f.tokens.curr,"computed property names");var e=nt(10);return Z("]"),e}function cn(e,t){return e.type==="(punctuator)"&&r.contains(t,e.value)}function hn(){var e=un();e.notJson?(!f.option.inESNext()&&e.isDestAssign&&W("W104",f.tokens.curr,"destructuring assignment"),_t()):(f.option.laxbreak=!0,f.jsonMode=!0,dn())}function dn(){function e(){var e={},t=f.tokens.next;Z("{");if(f.tokens.next.id!=="}")for(;;){if(f.tokens.next.id==="(end)")V("E026",f.tokens.next,t.line);else{if(f.tokens.next.id==="}"){W("W094",f.tokens.curr);break}f.tokens.next.id===","?V("E028",f.tokens.next):f.tokens.next.id!=="(string)"&&W("W095",f.tokens.next,f.tokens.next.value)}e[f.tokens.next.value]===!0?W("W075",f.tokens.next,f.tokens.next.value):f.tokens.next.value==="__proto__"&&!f.option.proto||f.tokens.next.value==="__iterator__"&&!f.option.iterator?W("W096",f.tokens.next,f.tokens.next.value):e[f.tokens.next.value]=!0,Z(),Z(":"),dn();if(f.tokens.next.id!==",")break;Z(",")}Z("}")}function t(){var e=f.tokens.next;Z("[");if(f.tokens.next.id!=="]")for(;;){if(f.tokens.next.id==="(end)")V("E027",f.tokens.next,e.line);else{if(f.tokens.next.id==="]"){W("W094",f.tokens.curr);break}f.tokens.next.id===","&&V("E028",f.tokens.next)}dn();if(f.tokens.next.id!==",")break;Z(",")}Z("]")}switch(f.tokens.next.id){case"{":e();break;case"[":t();break;case"true":case"false":case"null":case"(number)":case"(string)":Z();break;case"-":Z("-"),Z("(number)");break;default:V("E003",f.tokens.next)}}var e,t={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},n,p,d=["closure","exception","global","label","outer","unused","var"],v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O=[],M=new i.EventEmitter;pt("(number)",function(){return this}),pt("(string)",function(){return this}),f.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value,t=C[e],n,r;if(f.tokens.next.id==="=>")return this;typeof t=="function"?t=undefined:!v["(blockscope)"].current.has(e)&&typeof t=="boolean"&&(n=v,v=m[0],K(e,{type:"var"}),t=v,v=n),r=v["(blockscope)"].getlabel(e);if(v===t||r)switch(r?r[e]["(type)"]:v[e]){case"unused":r?r[e]["(type)"]="var":v[e]="var";break;case"unction":r?r[e]["(type)"]="function":v[e]="function",this["function"]=!0;break;case"const":zt(v,e,{unused:!1});break;case"function":this["function"]=!0;break;case"label":W("W037",f.tokens.curr,e)}else switch(v[e]){case"closure":case"function":case"var":case"unused":W("W038",f.tokens.curr,e);break;case"label":W("W037",f.tokens.curr,e);break;case"outer":case"global":break;default:if(t===!0)v[e]=!0;else if(t===null)W("W039",f.tokens.curr,e),Bt(f.tokens.curr);else if(typeof t!="object")v["(comparray)"].check(e)||U(v,"W117",f.tokens.curr,e),v["(global)"]||(v[e]=!0),Bt(f.tokens.curr);else switch(t[e]){case"function":case"unction":this["function"]=!0,t[e]="closure",v[e]=t["(global)"]?"global":"outer";break;case"var":case"unused":t[e]="closure",v[e]=t["(global)"]?"global":"outer";break;case"const":zt(t,e,{unused:!1});break;case"closure":v[e]=t["(global)"]?"global":"outer";break;case"label":W("W037",f.tokens.curr,e)}}return this},led:function(){V("E033",f.tokens.next,f.tokens.next.value)}},f.syntax["(template)"]={type:"(template)",lbp:0,identifier:!1,fud:Vt},pt("(template middle)",function(){return this}),pt("(template tail)",function(){return this}),pt("(regexp)",function(){return this}),at("(endline)"),at("(begin)"),at("(end)").reach=!0,at("(error)").reach=!0,at("}").reach=!0,at(")"),at("]"),at('"').reach=!0,at("'").reach=!0,at(";"),at(":").reach=!0,at("#"),dt("else"),dt("case").reach=!0,dt("catch"),dt("default").reach=!0,dt("finally"),mt("arguments",function(e){f.directive["use strict"]&&v["(global)"]&&W("E008",e)}),mt("eval"),mt("false"),mt("Infinity"),mt("null"),mt("this",function(e){f.directive["use strict"]&&!It()&&!f.option.validthis&&(v["(statement)"]&&v["(name)"].charAt(0)>"Z"||v["(global)"])&&W("W040",e)}),mt("true"),mt("undefined"),xt("=","assign",20),xt("+=","assignadd",20),xt("-=","assignsub",20),xt("*=","assignmult",20),xt("/=","assigndiv",20).nud=function(){V("E014")},xt("%=","assignmod",20),Nt("&="),Nt("|="),Nt("^="),Nt("<<="),Nt(">>="),Nt(">>>="),gt(",",function(e,t){var n;t.exprs=[e];if(!ot({peek:!0}))return t;for(;;){if(!(n=nt(10)))break;t.exprs.push(n);if(f.tokens.next.value!==","||!ot())break}return t},10,!0),gt("?",function(e,t){return Kt(),t.left=e,t.right=nt(10),Z(":"),t["else"]=nt(10),t},30);var jt=40;gt("||",function(e,t){return Kt(),t.left=e,t.right=nt(jt),t},jt),gt("&&","and",50),Tt("|","bitor",70),Tt("^","bitxor",80),Tt("&","bitand",90),bt("==",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");switch(!0){case!n&&f.option.eqeqeq:this.from=this.character,W("W116",this,"===","==");break;case wt(e):W("W041",this,"===",e.value);break;case wt(t):W("W041",this,"===",t.value);break;case Et(t,e):W("W122",this,t.value);break;case Et(e,t):W("W122",this,e.value)}return this}),bt("===",function(e,t){return Et(t,e)?W("W122",this,t.value):Et(e,t)&&W("W122",this,e.value),this}),bt("!=",function(e,t){var n=f.option.eqnull&&(e.value==="null"||t.value==="null");return!n&&f.option.eqeqeq?(this.from=this.character,W("W116",this,"!==","!=")):wt(e)?W("W041",this,"!==",e.value):wt(t)?W("W041",this,"!==",t.value):Et(t,e)?W("W122",this,t.value):Et(e,t)&&W("W122",this,e.value),this}),bt("!==",function(e,t){return Et(t,e)?W("W122",this,t.value):Et(e,t)&&W("W122",this,e.value),this}),bt("<"),bt(">"),bt("<="),bt(">="),Tt("<<","shiftleft",120),Tt(">>","shiftright",120),Tt(">>>","shiftrightunsigned",120),gt("in","in",120),gt("instanceof","instanceof",120),gt("+",function(e,t){var n=nt(130);return e&&n&&e.id==="(string)"&&n.id==="(string)"?(e.value+=n.value,e.character=n.character,!f.option.scripturl&&a.javascriptURL.test(e.value)&&W("W050",e),e):(t.left=e,t.right=n,t)},130),ht("+","num"),ht("+++",function(){return W("W007"),this.right=nt(150),this.arity="unary",this}),gt("+++",function(e){return W("W007"),this.left=e,this.right=nt(130),this},130),gt("-","sub",130),ht("-","neg"),ht("---",function(){return W("W006"),this.right=nt(150),this.arity="unary",this}),gt("---",function(e){return W("W006"),this.left=e,this.right=nt(130),this},130),gt("*","mult",140),gt("/","div",140),gt("%","mod",140),Ct("++"),ht("++","preinc"),f.syntax["++"].exps=!0,Ct("--"),ht("--","predec"),f.syntax["--"].exps=!0,ht("delete",function(){var e=nt(10);return(!e||e.id!=="."&&e.id!=="[")&&W("W051"),this.first=e,e.identifier&&!f.directive["use strict"]&&(e.forgiveUndef=!0),this}).exps=!0,ht("~",function(){return f.option.bitwise&&W("W052",this,"~"),nt(150),this}),ht("...",function(){return f.option.esnext||W("W119",this,"spread/rest operator"),f.tokens.next.identifier||V("E030",f.tokens.next,f.tokens.next.value),nt(150),this}),ht("!",function(){return this.right=nt(150),this.arity="unary",this.right||R("E041",this.line||0),t[this.right.id]===!0&&W("W018",this,"!"),this}),ht("typeof",function(){var e=nt(150);return this.first=e,e.identifier&&(e.forgiveUndef=!0),this}),ht("new",function(){var e=nt(155),t;if(e&&e.id!=="function")if(e.identifier){e["new"]=!0;switch(e.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":W("W053",f.tokens.prev,e.value);break;case"Symbol":f.option.esnext&&W("W053",f.tokens.prev,e.value);break;case"Function":f.option.evil||W("W054");break;case"Date":case"RegExp":case"this":break;default:e.id!=="function"&&(t=e.value.substr(0,1),f.option.newcap&&(t<"A"||t>"Z")&&!r.has(g,e.value)&&W("W055",f.tokens.curr))}}else e.id!=="."&&e.id!=="["&&e.id!=="("&&W("W056",f.tokens.curr);else f.option.supernew||W("W057",this);return f.tokens.next.id!=="("&&!f.option.supernew&&W("W058",f.tokens.curr,f.tokens.curr.value),this.first=e,this}),f.syntax["new"].exps=!0,ht("void").exps=!0,gt(".",function(e,t){var n=Lt(!1,!0);return typeof n=="string"&&Ht(n),t.left=e,t.right=n,n&&n==="hasOwnProperty"&&f.tokens.next.value==="="&&W("W001"),!e||e.value!=="arguments"||n!=="callee"&&n!=="caller"?!f.option.evil&&e&&e.value==="document"&&(n==="write"||n==="writeln")&&W("W060",e):f.option.noarg?W("W059",e,n):f.directive["use strict"]&&V("E008"),!f.option.evil&&(n==="eval"||n==="execScript")&&W("W061"),t},160,!0),gt("(",function(e,t){f.option.immed&&e&&!e.immed&&e.id==="function"&&W("W062");var n=0,r=[];e&&e.type==="(identifier)"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&"Number String Boolean Date Object Error Symbol".indexOf(e.value)===-1&&(e.value==="Math"?W("W063",e):f.option.newcap&&W("W064",e));if(f.tokens.next.id!==")")for(;;){r[r.length]=nt(10),n+=1;if(f.tokens.next.id!==",")break;ot()}return Z(")"),typeof e=="object"&&(f.option.inES3()&&e.value==="parseInt"&&n===1&&W("W065",f.tokens.curr),f.option.evil||(e.value==="eval"||e.value==="Function"||e.value==="execScript"?(W("W061",e),r[0]&&[0].id==="(string)"&&J(e,r[0].value)):!r[0]||r[0].id!=="(string)"||e.value!=="setTimeout"&&e.value!=="setInterval"?r[0]&&r[0].id==="(string)"&&e.value==="."&&e.left.value==="window"&&(e.right==="setTimeout"||e.right==="setInterval")&&(W("W066",e),J(e,r[0].value)):(W("W066",e),J(e,r[0].value))),!e.identifier&&e.id!=="."&&e.id!=="["&&e.id!=="("&&e.id!=="&&"&&e.id!=="||"&&e.id!=="?"&&(!f.option.esnext||!e["(name)"])&&W("W067",t)),t.left=e,t},155,!0).exps=!0,ht("(",function(){var e,t=[],n=f.tokens.next,i,s=-1,o,u,a=1;do n.value==="("?a+=1:n.value===")"&&(a-=1),s+=1,i=n,n=G(s);while((a!==0||i.value!==")")&&n.value!==";"&&n.type!=="(end)");f.tokens.next.id==="function"&&(u=f.tokens.next.immed=!0);if(n.value==="=>")return $t(null,null,null,{parsedParen:!0});var l=[];if(f.tokens.next.id!==")")for(;;){if(n.value==="=>"&&r.contains(["{","["],f.tokens.next.value)){e=f.tokens.next,e.left=Yt(),t.push(e);for(var c in e.left)l.push(e.left[c].token)}else l.push(nt(10));if(f.tokens.next.id!==",")break;ot()}Z(")",this),f.option.immed&&l[0]&&l[0].id==="function"&&f.tokens.next.id!=="("&&f.tokens.next.id!=="."&&f.tokens.next.id!=="["&&W("W068",this);if(f.tokens.next.value==="=>")return l;if(!l.length)return;return l.length>1?(o=Object.create(f.syntax[","]),o.exprs=l):o=l[0],o&&(o.paren=!0,o.triggerFnExpr=u),o}),yt("=>"),gt("[",function(e,t){var n=nt(10),r;return n&&n.type==="(string)"&&(!f.option.evil&&(n.value==="eval"||n.value==="execScript")&&W("W061",t),Ht(n.value),!f.option.sub&&a.identifier.test(n.value)&&(r=f.syntax[n.value],(!r||!B(r))&&W("W069",f.tokens.prev,n.value))),Z("]",t),n&&n.value==="hasOwnProperty"&&f.tokens.next.value==="="&&W("W001"),t.left=e,t.right=n,t},160,!0),ht("[",function(){var e=un();if(e.isCompArray)return f.option.inESNext()||W("W119",f.tokens.curr,"array comprehension"),Ft();e.isDestAssign&&!f.option.inESNext()&&W("W104",f.tokens.curr,"destructuring assignment");var t=f.tokens.curr.line!==f.tokens.next.line;this.first=[],t&&(w+=f.option.indent,f.tokens.next.from===w+f.option.indent&&(w+=f.option.indent));while(f.tokens.next.id!=="(end)"){while(f.tokens.next.id===","){if(!f.option.elision){if(!!f.option.inES5()){W("W128");do Z(",");while(f.tokens.next.id===",");continue}W("W070")}Z(",")}if(f.tokens.next.id==="]")break;this.first.push(nt(10));if(f.tokens.next.id!==",")break;ot({allowTrailing:!0});if(f.tokens.next.id==="]"&&!f.option.inES5(!0)){W("W070",f.tokens.curr);break}}return t&&(w-=f.option.indent),Z("]",this),this}),function(e){e.nud=function(){var e,t,n,r,i,s,o,u={};e=f.tokens.curr.line!==f.tokens.next.line,e&&(w+=f.option.indent,f.tokens.next.from===w+f.option.indent&&(w+=f.option.indent));for(;;){if(f.tokens.next.id==="}")break;o=f.tokens.next.value;if(G().id===":"||o!=="get"&&o!=="set"){s=!1,f.tokens.next.value==="*"&&f.tokens.next.type==="(punctuator)"&&(f.option.inESNext()||W("W104",f.tokens.next,"generator functions"),Z("*"),s=!0);if(!f.tokens.next.identifier||Y().id!==","&&Y().id!=="}"){if(f.tokens.next.id==="[")n=ln(),f.nameStack.set(n);else{f.nameStack.set(f.tokens.next),n=Rt(),an(u,n,f.tokens.next);if(typeof n!="string")break}f.tokens.next.value==="("?(f.option.inESNext()||W("W104",f.tokens.curr,"concise methods"),$t(null,undefined,s)):(Z(":"),nt(10))}else f.option.inESNext()||W("W104",f.tokens.next,"object short notation"),n=Rt(!0),an(u,n,f.tokens.next),nt(10)}else Z(o),f.option.inES5()||V("E034"),n=Rt(),!n&&!f.option.inESNext()&&V("E035"),n&&fn(o,u,n,f.tokens.curr),i=f.tokens.next,t=$t(),r=t["(params)"],o==="get"&&n&&r?W("W076",i,r[0],n):o==="set"&&n&&(!r||r.length!==1)&&W("W077",i,n);Ht(n);if(f.tokens.next.id!==",")break;ot({allowTrailing:!0,property:!0}),f.tokens.next.id===","?W("W070",f.tokens.curr):f.tokens.next.id==="}"&&!f.option.inES5(!0)&&W("W070",f.tokens.curr)}return e&&(w-=f.option.indent),Z("}",this),Gt(u),this},e.fud=function(){V("E036",f.tokens.curr)}}(at("{"));var en=ft("const",function(e){var t,n,i;f.option.inESNext()||W("W104",f.tokens.curr,"const"),this.first=[];for(;;){var s=[];r.contains(["{","["],f.tokens.next.value)?(t=Yt(),i=!1):(t=[{id:Lt(),token:f.tokens.curr}],i=!0);for(var o in t)t.hasOwnProperty(o)&&(o=t[o],v[o.id]==="const"&&W("E011",null,o.id),v["(global)"]&&N[o.id]===!1&&W("W079",o.token,o.id),o.id&&(K(o.id,{token:o.token,type:"const",unused:!0}),s.push(o.token)));if(e)break;this.first=this.first.concat(s),f.tokens.next.id!=="="&&W("E012",f.tokens.curr,f.tokens.curr.value),f.tokens.next.id==="="&&(Z("="),f.tokens.next.id==="undefined"&&W("W080",f.tokens.prev,f.tokens.prev.value),G(0).id==="="&&f.tokens.next.identifier&&W("W120",f.tokens.next,f.tokens.next.value),n=nt(10),i?t[0].first=n:Zt(s,n));if(f.tokens.next.id!==",")break;ot()}return this});en.exps=!0;var tn=ft("var",function(e){var t,n,i;this.first=[];for(;;){var s=[];r.contains(["{","["],f.tokens.next.value)?(t=Yt(),n=!1):(t=[{id:Lt(),token:f.tokens.curr}],n=!0);for(var o in t)t.hasOwnProperty(o)&&(o=t[o],f.option.inESNext()&&v[o.id]==="const"&&W("E011",null,o.id),v["(global)"]&&N[o.id]===!1&&W("W079",o.token,o.id),o.id&&(K(o.id,{type:"unused",token:o.token}),s.push(o.token)));if(e)break;this.first=this.first.concat(s),f.tokens.next.id==="="&&(f.nameStack.set(f.tokens.curr),Z("="),f.tokens.next.id==="undefined"&&W("W080",f.tokens.prev,f.tokens.prev.value),G(0).id==="="&&f.tokens.next.identifier&&(!v["(params)"]||v["(params)"].indexOf(f.tokens.next.value)===-1)&&W("W120",f.tokens.next,f.tokens.next.value),i=nt(10),n?t[0].first=i:Zt(s,i));if(f.tokens.next.id!==",")break;ot()}return this});tn.exps=!0;var nn=ft("let",function(e){var t,n,i,s;f.option.inESNext()||W("W104",f.tokens.curr,"let"),f.tokens.next.value==="("?(f.option.inMoz(!0)||W("W118",f.tokens.next,"let block"),Z("("),v["(blockscope)"].stack(),s=!0):v["(nolet)"]&&V("E048",f.tokens.curr),this.first=[];for(;;){var o=[];r.contains(["{","["],f.tokens.next.value)?(t=Yt(),n=!1):(t=[{id:Lt(),token:f.tokens.curr.value}],n=!0);for(var u in t)t.hasOwnProperty(u)&&(u=t[u],f.option.inESNext()&&v[u.id]==="const"&&W("E011",null,u.id),v["(global)"]&&N[u.id]===!1&&W("W079",u.token,u.id),u.id&&!v["(nolet)"]&&(K(u.id,{type:"unused",token:u.token,islet:!0}),o.push(u.token)));if(e)break;this.first=this.first.concat(o),f.tokens.next.id==="="&&(Z("="),f.tokens.next.id==="undefined"&&W("W080",f.tokens.prev,f.tokens.prev.value),G(0).id==="="&&f.tokens.next.identifier&&W("W120",f.tokens.next,f.tokens.next.value),i=nt(10),n?t[0].first=i:Zt(o,i));if(f.tokens.next.id!==",")break;ot()}return s&&(Z(")"),Pt(!0,!0),this.block=!0,v["(blockscope)"].unstack()),this});nn.exps=!0,lt("class",function(){return rn.call(this,!0)}),lt("function",function(){var e=!1;f.tokens.next.value==="*"&&(Z("*"),f.option.inESNext(!0)?e=!0:W("W119",f.tokens.curr,"function*")),b&&W("W082",f.tokens.curr);var t=kt();return t===undefined&&W("W025"),v[t]==="const"&&W("E011",null,t),K(t,{type:"unction",token:f.tokens.curr}),$t(t,{statement:!0},e),f.tokens.next.id==="("&&f.tokens.next.line===f.tokens.curr.line&&V("E039"),this}),ht("function",function(){function i(e){return e[0]!=="("}function s(e){return n[e]==="var"}var e=!1;f.tokens.next.value==="*"&&(f.option.inESNext()||W("W119",f.tokens.curr,"function*"),Z("*"),e=!0);var t=kt(),n=$t(t,undefined,e);return!f.option.loopfunc&&v["(loopage)"]&&r.some(n,function(e,t){return i(t)&&!s(t)})&&W("W083"),this}),lt("if",function(){var e=f.tokens.next;Kt(),f.condition=!0,Z("(");var t=nt(0);Qt(t);var n=null;f.option.forin&&f.forinifcheckneeded&&(f.forinifcheckneeded=!1,n=f.forinifchecks[f.forinifchecks.length-1],t.type==="(punctuator)"&&t.value==="!"?n.type="(negative)":n.type="(positive)"),Z(")",e),f.condition=!1;var r=Pt(!0,!0);return n&&n.type==="(negative)"&&r&&r.length===1&&r[0].type==="(identifier)"&&r[0].value==="continue"&&(n.type="(negative-with-continue)"),f.tokens.next.id==="else"&&(Z("else"),f.tokens.next.id==="if"||f.tokens.next.id==="switch"?Mt():Pt(!0,!0)),this}),lt("try",function(){function t(){var e=C,t;Z("catch"),Z("("),C=Object.create(e),t=f.tokens.next.value,f.tokens.next.type!=="(identifier)"&&(t=null,W("E030",f.tokens.next,t)),Z(),v=Xt("(catch)",f.tokens.next,C,{"(context)":v,"(breakage)":v["(breakage)"],"(loopage)":v["(loopage)"],"(statement)":!1,"(catch)":!0}),t&&K(t,{type:"exception"}),f.tokens.next.value==="if"&&(f.option.inMoz(!0)||W("W118",f.tokens.curr,"catch filter"),Z("if"),nt(0)),Z(")"),f.tokens.curr.funct=v,m.push(v),Pt(!1),C=e,v["(last)"]=f.tokens.curr.line,v["(lastcharacter)"]=f.tokens.curr.character,v=v["(context)"]}var e;Pt(!0);while(f.tokens.next.id==="catch")Kt(),e&&!f.option.inMoz(!0)&&W("W118",f.tokens.next,"multiple catch blocks"),t(),e=!0;if(f.tokens.next.id==="finally"){Z("finally"),Pt(!0);return}return e||V("E021",f.tokens.next,"catch",f.tokens.next.value),this}),lt("while",function(){var e=f.tokens.next;return v["(breakage)"]+=1,v["(loopage)"]+=1,Kt(),Z("("),Qt(nt(0)),Z(")",e),Pt(!0,!0),v["(breakage)"]-=1,v["(loopage)"]-=1,this}).labelled=!0,lt("with",function(){var e=f.tokens.next;return f.directive["use strict"]?V("E010",f.tokens.curr):f.option.withstmt||W("W085",f.tokens.curr),Z("("),nt(0),Z(")",e),Pt(!0,!0),this}),lt("switch",function(){var e=f.tokens.next,t=!1,n=!1;v["(breakage)"]+=1,Z("("),Qt(nt(0)),Z(")",e),e=f.tokens.next,Z("{"),f.tokens.next.from===w&&(n=!0),n||(w+=f.option.indent),this.cases=[];for(;;)switch(f.tokens.next.id){case"case":switch(v["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:a.fallsThrough.test(f.lines[f.tokens.next.line-2])||W("W086",f.tokens.curr,"case")}Z("case"),this.cases.push(nt(0)),Kt(),t=!0,Z(":"),v["(verb)"]="case";break;case"default":switch(v["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(a.fallsThrough.test(f.lines[f.tokens.next.line-2])||W("W086",f.tokens.curr,"default"))}Z("default"),t=!0,Z(":");break;case"}":n||(w-=f.option.indent),Z("}",e),v["(breakage)"]-=1,v["(verb)"]=undefined;return;case"(end)":V("E023",f.tokens.next,"}");return;default:w+=f.option.indent;if(t)switch(f.tokens.curr.id){case",":V("E040");return;case":":t=!1,_t();break;default:V("E025",f.tokens.curr);return}else{if(f.tokens.curr.id!==":"){V("E021",f.tokens.next,"case",f.tokens.next.value);return}Z(":"),V("E024",f.tokens.curr,":"),_t()}w-=f.option.indent}}).labelled=!0,ft("debugger",function(){return f.option.debug||W("W087",this),this}).exps=!0,function(){var e=ft("do",function(){v["(breakage)"]+=1,v["(loopage)"]+=1,Kt(),this.first=Pt(!0,!0),Z("while");var e=f.tokens.next;return Z("("),Qt(nt(0)),Z(")",e),v["(breakage)"]-=1,v["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),lt("for",function(){var e,t=f.tokens.next,n=!1,i=null;t.value==="each"&&(i=t,Z("each"),f.option.inMoz(!0)||W("W118",f.tokens.curr,"for each")),v["(breakage)"]+=1,v["(loopage)"]+=1,Kt(),Z("(");var s,o=0,u=["in","of"];do s=G(o),++o;while(!r.contains(u,s.value)&&s.value!==";"&&s.type!=="(end)");if(r.contains(u,s.value)){!f.option.inESNext()&&s.value==="of"&&V("W104",s,"for of");if(f.tokens.next.id==="var")Z("var"),f.syntax["var"].fud.call(f.syntax["var"].fud,!0);else if(f.tokens.next.id==="let")Z("let"),n=!0,v["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud,!0);else if(!f.tokens.next.identifier)V("E030",f.tokens.next,f.tokens.next.type),Z();else{switch(v[f.tokens.next.value]){case"unused":v[f.tokens.next.value]="var";break;case"var":break;default:var a=f.tokens.next.value;!v["(blockscope)"].getlabel(a)&&!(C[a]||{})[a]&&W("W088",f.tokens.next,f.tokens.next.value)}Z()}Z(s.value),nt(20),Z(")",t),s.value==="in"&&f.option.forin&&(f.forinifcheckneeded=!0,f.forinifchecks===undefined&&(f.forinifchecks=[]),f.forinifchecks.push({type:"(none)"})),e=Pt(!0,!0);if(s.value==="in"&&f.option.forin){if(f.forinifchecks&&f.forinifchecks.length>0){var l=f.forinifchecks.pop();(e&&e.length>0&&(typeof e[0]!="object"||e[0].value!=="if")||l.type==="(positive)"&&e.length>1||l.type==="(negative)")&&W("W089",this)}f.forinifcheckneeded=!1}v["(breakage)"]-=1,v["(loopage)"]-=1}else{i&&V("E045",i);if(f.tokens.next.id!==";")if(f.tokens.next.id==="var")Z("var"),f.syntax["var"].fud.call(f.syntax["var"].fud);else if(f.tokens.next.id==="let")Z("let"),n=!0,v["(blockscope)"].stack(),f.syntax.let.fud.call(f.syntax.let.fud);else for(;;){nt(0,"for");if(f.tokens.next.id!==",")break;ot()}it(f.tokens.curr),Z(";"),f.tokens.next.id!==";"&&Qt(nt(0)),it(f.tokens.curr),Z(";"),f.tokens.next.id===";"&&V("E021",f.tokens.next,")",";");if(f.tokens.next.id!==")")for(;;){nt(0,"for");if(f.tokens.next.id!==",")break;ot()}Z(")",t),Pt(!0,!0),v["(breakage)"]-=1,v["(loopage)"]-=1}return n&&v["(blockscope)"].unstack(),this}).labelled=!0,ft("break",function(){var e=f.tokens.next.value;return v["(breakage)"]===0&&W("W052",f.tokens.next,this.value),f.option.asi||it(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===f.tokens.next.line&&(v[e]!=="label"?W("W090",f.tokens.next,e):C[e]!==v&&W("W091",f.tokens.next,e),this.first=f.tokens.next,Z()),At(this),this}).exps=!0,ft("continue",function(){var e=f.tokens.next.value;return v["(breakage)"]===0&&W("W052",f.tokens.next,this.value),f.option.asi||it(this),f.tokens.next.id!==";"&&!f.tokens.next.reach?f.tokens.curr.line===f.tokens.next.line&&(v[e]!=="label"?W("W090",f.tokens.next,e):C[e]!==v&&W("W091",f.tokens.next,e),this.first=f.tokens.next,Z()):v["(loopage)"]||W("W052",f.tokens.next,this.value),At(this),this}).exps=!0,ft("return",function(){return this.line===f.tokens.next.line?f.tokens.next.id!==";"&&!f.tokens.next.reach&&(this.first=nt(0),this.first&&this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&X("W093",this.first.line,this.first.character)):f.tokens.next.type==="(punctuator)"&&["[","{","+","-"].indexOf(f.tokens.next.value)>-1&&it(this),At(this),this}).exps=!0,function(e){e.exps=!0,e.lbp=25}(ht("yield",function(){var e=f.tokens.prev;f.option.inESNext(!0)&&!v["(generator)"]?("(catch)"!==v["(name)"]||!v["(context)"]["(generator)"])&&V("E046",f.tokens.curr,"yield"):f.option.inESNext()||W("W104",f.tokens.curr,"yield"),v["(generator)"]="yielded";var t=!1;f.tokens.next.value==="*"&&(t=!0,Z("*"));if(this.line===f.tokens.next.line||!f.option.inMoz(!0)){if(t||f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.next.nud)rt(f.tokens.curr,f.tokens.next),this.first=nt(10),this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&X("W093",this.first.line,this.first.character);f.option.inMoz(!0)&&f.tokens.next.id!==")"&&(e.lbp>30||!e.assign&&!tt()||e.id==="yield")&&V("E050",this)}else f.option.asi||it(this);return this})),ft("throw",function(){return it(this),this.first=nt(20),At(this),this}).exps=!0,ft("import",function(){f.option.inESNext()||W("W119",f.tokens.curr,"import");if(f.tokens.next.type==="(string)")return Z("(string)"),this;if(f.tokens.next.identifier)this.name=Lt(),K(this.name,{type:"unused",token:f.tokens.curr});else if(f.tokens.next.id==="*")Z("*"),Z("as"),f.tokens.next.identifier&&(this.name=Lt(),K(this.name,{type:"unused",token:f.tokens.curr}));else{Z("{");for(;;){if(f.tokens.next.value==="}"){Z("}");break}var e;f.tokens.next.type==="default"?(e="default",Z("default")):e=Lt(),f.tokens.next.value==="as"&&(Z("as"),e=Lt()),K(e,{type:"unused",token:f.tokens.curr});if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){Z("}");break}V("E024",f.tokens.next,f.tokens.next.value);break}Z(",")}}return Z("from"),Z("(string)"),this}).exps=!0,ft("export",function(){var e=!0;f.option.inESNext()||(W("W119",f.tokens.curr,"export"),e=!1);if(!v["(global)"]||!v["(blockscope)"].atTop())V("E053",f.tokens.curr),e=!1;if(f.tokens.next.value==="*")return Z("*"),Z("from"),Z("(string)"),this;if(f.tokens.next.type==="default"){f.nameStack.set(f.tokens.next),Z("default");if(f.tokens.next.id==="function"||f.tokens.next.id==="class")this.block=!0;return this.exportee=nt(10),this}if(f.tokens.next.value==="{"){Z("{");for(;;){var t;p[t=Lt(!1,!1,e)]=e,e&&v["(blockscope)"].setExported(t);if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){Z("}");break}V("E024",f.tokens.next,f.tokens.next.value);break}Z(",")}return this}return f.tokens.next.id==="var"?(Z("var"),p[f.tokens.next.value]=e,f.tokens.next.exported=!0,f.syntax["var"].fud.call(f.syntax["var"].fud)):f.tokens.next.id==="let"?(Z("let"),p[f.tokens.next.value]=e,f.tokens.next.exported=!0,f.syntax.let.fud.call(f.syntax.let.fud)):f.tokens.next.id==="const"?(Z("const"),p[f.tokens.next.value]=e,f.tokens.next.exported=!0,f.syntax["const"].fud.call(f.syntax["const"].fud)):f.tokens.next.id==="function"?(this.block=!0,Z("function"),p[f.tokens.next.value]=e,f.tokens.next.exported=!0,f.syntax["function"].fud()):f.tokens.next.id==="class"?(this.block=!0,Z("class"),p[f.tokens.next.value]=e,f.tokens.next.exported=!0,f.syntax["class"].fud()):V("E024",f.tokens.next,f.tokens.next.value),this}).exps=!0,vt("abstract"),vt("boolean"),vt("byte"),vt("char"),vt("class",{es5:!0,nud:rn}),vt("double"),vt("enum",{es5:!0}),vt("export",{es5:!0}),vt("extends",{es5:!0}),vt("final"),vt("float"),vt("goto"),vt("implements",{es5:!0,strictOnly:!0}),vt("import",{es5:!0}),vt("int"),vt("interface",{es5:!0,strictOnly:!0}),vt("long"),vt("native"),vt("package",{es5:!0,strictOnly:!0}),vt("private",{es5:!0,strictOnly:!0}),vt("protected",{es5:!0,strictOnly:!0}),vt("public",{es5:!0,strictOnly:!0}),vt("short"),vt("static",{es5:!0,strictOnly:!0}),vt("super",{es5:!0}),vt("synchronized"),vt("transient"),vt("volatile");var un=function(){var e,t,n=-1,r=0,i={};cn(f.tokens.curr,["[","{"])&&(r+=1);do{e=n===-1?f.tokens.next:G(n),t=G(n+1),n+=1,cn(e,["[","{"])?r+=1:cn(e,["]","}"])&&(r-=1);if(e.identifier&&e.value==="for"&&r===1){i.isCompArray=!0,i.notJson=!0;break}if(cn(e,["}","]"])&&r===0){if(t.value==="="){i.isDestAssign=!0,i.notJson=!0;break}if(t.value==="."){i.notJson=!0;break}}e.value===";"&&(i.isBlock=!0,i.notJson=!0)}while(r>0&&e.id!=="(end)"&&n<15);return i},pn=function(){function i(e){var t=n.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length;return t!==0}function s(e){var t=n.variables.filter(function(t){if(t.value===e&&!t.undef)return t.unused===!0&&(t.unused=!1),e}).length;return t===0}var e=function(){this.mode="use",this.variables=[]},t=[],n;return{stack:function(){n=new e,t.push(n)},unstack:function(){n.variables.filter(function(e){e.unused&&W("W098",e.token,e.raw_text||e.value),e.undef&&U(e.funct,"W117",e.token,e.value)}),t.splice(-1,1),n=t[t.length-1]},setState:function(e){r.contains(["use","define","generate","filter"],e)&&(n.mode=e)},check:function(e){if(!n)return;return n&&n.mode==="use"?(s(e)&&n.variables.push({funct:v,token:f.tokens.curr,value:e,undef:!0,unused:!1}),!0):n&&n.mode==="define"?(i(e)||n.variables.push({funct:v,token:f.tokens.curr,value:e,undef:!1,unused:!0}),!0):n&&n.mode==="generate"?(U(v,"W117",f.tokens.curr,e),!0):n&&n.mode==="filter"?(s(e)&&U(v,"W117",f.tokens.curr,e),!0):!1}}},vn=function(){function n(){for(var t in e)if(e[t]["(type)"]==="unused"&&f.option.unused){var n=e[t]["(token)"];if(n.exported)continue;var r=n.line,i=n.character;X("W098",r,i,t)}}var e={},t=[e];return{stack:function(){e={},t.push(e)},unstack:function(){n(),t.splice(t.length-1,1),e=r.last(t)},getlabel:function(e){for(var n=t.length-1;n>=0;--n)if(r.has(t[n],e)&&!t[n][e]["(shadowed)"])return t[n]},shadow:function(e){for(var n=t.length-1;n>=0;n--)r.has(t[n],e)&&(t[n][e]["(shadowed)"]=!0)},unshadow:function(e){for(var n=t.length-1;n>=0;n--)r.has(t[n],e)&&(t[n][e]["(shadowed)"]=!1)},atTop:function(){return t.length===1},setExported:function(t){if(v["(blockscope)"].atTop()){var n=e[t];n&&n["(token)"]&&(n["(token)"].exported=!0)}},current:{has:function(t){return r.has(e,t)},add:function(t,n,r){e[t]={"(type)":n,"(token)":r,"(shadowed)":!1}}}}},mn=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},gn=function(t,i,o){function U(e,t){if(!e)return;!Array.isArray(e)&&typeof e=="object"&&(e=Object.keys(e)),e.forEach(t)}var a,l,c,d,H,B,j={},I={};i=r.clone(i),f.reset(),i&&i.scope?h.scope=i.scope:(h.errors=[],h.undefs=[],h.internals=[],h.blacklist={},h.scope="(main)"),N=Object.create(null),F(N,s.ecmaIdentifiers),F(N,s.reservedVars),F(N,o||{}),n=Object.create(null),p=Object.create(null);if(i){U(i.predef||null,function(e){var t,n;e[0]==="-"?(t=e.slice(1),h.blacklist[t]=t,delete N[t]):(n=Object.getOwnPropertyDescriptor(i.predef,e),N[e]=n?n.value:!1)}),U(i.exported||null,function(e){p[e]=!0}),delete i.predef,delete i.exported,B=Object.keys(i);for(c=0;c<B.length;c++)/^-W\d{3}$/g.test(B[c])?I[B[c].slice(1)]=!0:(j[B[c]]=i[B[c]],B[c]==="newcap"&&i[B[c]]===!1&&(j["(explicitNewcap)"]=!0))}f.option=j,f.ignored=I,f.option.indent=f.option.indent||4,f.option.maxerr=f.option.maxerr||50,w=1,g=Object.create(N),C=g,v=Xt("(global)",null,C,{"(global)":!0,"(blockscope)":vn(),"(comparray)":pn(),"(metrics)":Jt(f.tokens.next)}),m=[v],A=[],k=null,x={},T=null,y={},b=!1,E=[],L=[];if(!P(t)&&!Array.isArray(t))return $("E004",0),!1;e={get isJSON(){return f.jsonMode},getOption:function(e){return f.option[e]||null},getCache:function(e){return f.cache[e]},setCache:function(e,t){f.cache[e]=t},warn:function(e,t){X.apply(null,[e,t.line,t.char].concat(t.data))},on:function(e,t){e.split(" ").forEach(function(e){M.on(e,t)}.bind(this))}},M.removeAllListeners(),(O||[]).forEach(function(t){t(e)}),f.tokens.prev=f.tokens.curr=f.tokens.next=f.syntax["(begin)"],i&&i.ignoreDelimiters&&(Array.isArray(i.ignoreDelimiters)||(i.ignoreDelimiters=[i.ignoreDelimiters]),i.ignoreDelimiters.forEach(function(e){if(!e.start||!e.end)return;d=mn(e.start)+"[\\s\\S]*?"+mn(e.end),H=new RegExp(d,"ig"),t=t.replace(H,function(e){return e.replace(/./g," ")})})),S=new u(t),S.on("warning",function(e){X.apply(null,[e.code,e.line,e.character].concat(e.data))}),S.on("error",function(e){$.apply(null,[e.code,e.line,e.character].concat(e.data))}),S.on("fatal",function(e){R("E041",e.line,e.from)}),S.on("Identifier",function(e){M.emit("Identifier",e)}),S.on("String",function(e){M.emit("String",e)}),S.on("Number",function(e){M.emit("Number",e)}),S.start();for(var z in i)r.has(i,z)&&D(z,f.tokens.curr);q(),F(N,o||{}),ot.first=!0;try{Z();switch(f.tokens.next.id){case"{":case"[":hn();break;default:Dt(),f.directive["use strict"]&&(f.option.globalstrict||f.option.node||f.option.phantom||f.option.browserify||W("W097",f.tokens.prev)),_t()}Z(f.tokens.next&&f.tokens.next.value!=="."?"(end)":undefined),v["(blockscope)"].unstack();var V=function(e,t){do{if(typeof t[e]=="string")return t[e]==="unused"?t[e]="var":t[e]==="unction"&&(t[e]="closure"),!0;t=t["(context)"]}while(t);return!1},J=function(e,t){if(!y[e])return;var n=[];for(var r=0;r<y[e].length;r+=1)y[e][r]!==t&&n.push(y[e][r]);n.length===0?delete y[e]:y[e]=n},K=function(e,t,n,r){var i=t.line,s=t.from,o=t.raw_text||e;r===undefined&&(r=f.option.unused),r===!0&&(r="last-param");var u={vars:["var"],"last-param":["var","param"],strict:["var","param","last-param"]};r&&u[r]&&u[r].indexOf(n)!==-1&&(t.exported||X("W098",i,s,o)),L.push({name:e,line:i,character:s})},Q=function(e,t){var n=e[t],i=e["(tokens)"][t];if(t.charAt(0)==="(")return;if(n!=="unused"&&n!=="unction"&&n!=="const")return;if(e["(params)"]&&e["(params)"].indexOf(t)!==-1)return;if(e["(global)"]&&r.has(p,t))return;if(n==="const"&&!Wt(e,t,"unused"))return;K(t,i,"var")};for(a=0;a<h.undefs.length;a+=1)l=h.undefs[a].slice(0),V(l[2].value,l[0])||l[2].forgiveUndef?J(l[2].value,l[2].line):f.option.undef&&W.apply(W,l.slice(1));m.forEach(function(e){if(e["(unusedOption)"]===!1)return;for(var t in e)r.has(e,t)&&Q(e,t);if(!e["(params)"])return;var n=e["(params)"].slice(),i=n.pop(),s,o;while(i){s=e[i],o=e["(unusedOption)"]||f.option.unused,o=o===!0?"last-param":o;if(i==="undefined")return;if(s==="unused"||s==="unction")K(i,e["(tokens)"][i],"param",e["(unusedOption)"]);else if(o==="last-param")return;i=n.pop()}});for(var G in n)r.has(n,G)&&!r.has(g,G)&&!r.has(p,G)&&K(G,n[G],"var")}catch(Y){if(!Y||Y.name!=="JSHintError")throw Y;var et=f.tokens.next||{};h.errors.push({scope:"(main)",raw:Y.raw,code:Y.code,reason:Y.message,line:Y.line||et.line,character:Y.character||et.from},null)}if(h.scope==="(main)"){i=i||{};for(a=0;a<h.internals.length;a+=1)l=h.internals[a],i.scope=l.elem,gn(l.value,i,o)}return h.errors.length===0};return gn.addModule=function(e){O.push(e)},gn.addModule(l.register),gn.data=function(){var e={functions:[],options:f.option},t=[],n=[],i,s,o,u,a,l;gn.errors.length&&(e.errors=gn.errors),f.jsonMode&&(e.json=!0);for(a in y)r.has(y,a)&&t.push({name:a,line:y[a]});t.length>0&&(e.implieds=t),A.length>0&&(e.urls=A),l=Object.keys(C),l.length>0&&(e.globals=l);for(o=1;o<m.length;o+=1){s=m[o],i={};for(u=0;u<d.length;u+=1)i[d[u]]=[];for(u=0;u<d.length;u+=1)i[d[u]].length===0&&delete i[d[u]];i.name=s["(name)"],i.param=s["(params)"],i.line=s["(line)"],i.character=s["(character)"],i.last=s["(last)"],i.lastcharacter=s["(lastcharacter)"],i.metrics={complexity:s["(metrics)"].ComplexityCount,parameters:(s["(params)"]||[]).length,statements:s["(metrics)"].statementCount},e.functions.push(i)}L.length>0&&(e.unused=L),n=[];for(a in x)if(typeof x[a]=="number"){e.member=x;break}return e},gn.jshint=gn,gn}();typeof n=="object"&&n&&(n.JSHINT=h)},{"./lex.js":4,"./messages.js":5,"./options.js":7,"./reg.js":8,"./state.js":9,"./style.js":10,"./vars.js":11,events:12,underscore:2}],4:[function(e,t,n){"use strict";function c(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t<e.length;++t)e[t]();e.splice(0,e.length)}}}function h(e){var t=e;typeof t=="string"&&(t=t.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n")),t[0]&&t[0].substr(0,2)==="#!"&&(t[0].indexOf("node")!==-1&&(o.option.node=!0),t[0]=""),this.emitter=new i.EventEmitter,this.source=e,this.setLines(t),this.prereg=!0,this.line=0,this.char=1,this.from=1,this.input="",this.inComment=!1,this.inTemplate=!1,this.templateLine=null,this.templateChar=null;for(var n=0;n<o.option.indent;n+=1)o.tab+=" "}var r=e("underscore"),i=e("events"),s=e("./reg.js"),o=e("./state.js").state,u=e("../data/ascii-identifier-data.js"),a=u.asciiIdentifierStartTable,f=u.asciiIdentifierPartTable,l={Identifier:1,Punctuator:2,NumericLiteral:3,StringLiteral:4,Comment:5,Keyword:6,NullLiteral:7,BooleanLiteral:8,RegExp:9,TemplateHead:10,TemplateMiddle:11,TemplateTail:12};h.prototype={_lines:[],getLines:function(){return this._lines=o.lines,this._lines},setLines:function(e){this._lines=e,o.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e=this.peek(),t,n,r;switch(e){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if(this.peek(1)==="."&&this.peek(2)===".")return{type:l.Punctuator,value:"..."};case"(":case")":case";":case",":case"{":case"}":case"[":case"]":case":":case"~":case"?":return{type:l.Punctuator,value:e};case"#":return{type:l.Punctuator,value:e};case"":return null}return t=this.peek(1),n=this.peek(2),r=this.peek(3),e===">"&&t===">"&&n===">"&&r==="="?{type:l.Punctuator,value:">>>="}:e==="="&&t==="="&&n==="="?{type:l.Punctuator,value:"==="}:e==="!"&&t==="="&&n==="="?{type:l.Punctuator,value:"!=="}:e===">"&&t===">"&&n===">"?{type:l.Punctuator,value:">>>"}:e==="<"&&t==="<"&&n==="="?{type:l.Punctuator,value:"<<="}:e===">"&&t===">"&&n==="="?{type:l.Punctuator,value:">>="}:e==="="&&t===">"?{type:l.Punctuator,value:e+t}:e===t&&"+-<>&|".indexOf(e)>=0?{type:l.Punctuator,value:e+t}:"<>=!+-*%&|^".indexOf(e)>=0?t==="="?{type:l.Punctuator,value:e+t}:{type:l.Punctuator,value:e}:e==="/"?t==="="?{type:l.Punctuator,value:"/="}:{type:l.Punctuator,value:"/"}:null},scanComments:function(){function s(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,s=e+t,o="plain";return n=n||{},n.isMultiline&&(s+="*/"),t=t.replace(/\n/g," "),r.forEach(function(n){if(i)return;if(e==="//"&&n!=="jshint")return;t.charAt(n.length)===" "&&t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),!i&&t.charAt(0)===" "&&t.charAt(n.length+1)===" "&&t.substr(1,n.length)===n&&(i=!0,e=e+" "+n,t=t.substr(n.length+1));if(!i)return;switch(n){case"member":o="members";break;case"global":o="globals";break;default:o=n}}),{type:l.Comment,commentType:o,value:s,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var e=this.peek(),t=this.peek(1),n=this.input.substr(2),r=this.line,i=this.char;if(e==="*"&&t==="/")return this.trigger("error",{code:"E018",line:r,character:i}),this.skip(2),null;if(e!=="/"||t!=="*"&&t!=="/")return null;if(t==="/")return this.skip(this.input.length),s("//",n);var o="";if(t==="*"){this.inComment=!0,this.skip(2);while(this.peek()!=="*"||this.peek(1)!=="/")if(this.peek()===""){o+="\n";if(!this.nextLine())return this.trigger("error",{code:"E017",line:r,character:i}),this.inComment=!1,s("/*",o,{isMultiline:!0,isMalformed:!0})}else o+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,s("/*",o,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:l.Keyword,value:e[0]}:null},scanIdentifier:function(){function i(e){return e>256}function s(e){return e>256}function o(e){return/^[0-9a-fA-F]$/.test(e)}function p(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,function(e,t){return String.fromCharCode(parseInt(t,16))})}var e="",t=0,n,r,u=function(){t+=1;if(this.peek(t)!=="u")return null;var e=this.peek(t+1),n=this.peek(t+2),r=this.peek(t+3),i=this.peek(t+4),u;return o(e)&&o(n)&&o(r)&&o(i)?(u=parseInt(e+n+r+i,16),f[u]||s(u)?(t+=5,"\\u"+e+n+r+i):null):null}.bind(this),c=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?a[n]?(t+=1,e):null:i(n)?(t+=1,e):null}.bind(this),h=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?f[n]?(t+=1,e):null:s(n)?(t+=1,e):null}.bind(this);r=c();if(r===null)return null;e=r;for(;;){r=h();if(r===null)break;e+=r}switch(e){case"true":case"false":n=l.BooleanLiteral;break;case"null":n=l.NullLiteral;break;default:n=l.Identifier}return{type:n,value:p(e),text:e,tokenLength:e.length}},scanNumericLiteral:function(){function f(e){return/^[0-9]$/.test(e)}function c(e){return/^[0-7]$/.test(e)}function h(e){return/^[01]$/.test(e)}function p(e){return/^[0-9a-fA-F]$/.test(e)}function d(e){return e==="$"||e==="_"||e==="\\"||e>="a"&&e<="z"||e>="A"&&e<="Z"}var e=0,t="",n=this.input.length,r=this.peek(e),i,s=f,u=10,a=!1;if(r!=="."&&!f(r))return null;if(r!=="."){t=this.peek(e),e+=1,r=this.peek(e);if(t==="0"){if(r==="x"||r==="X")s=p,u=16,e+=1,t+=r;if(r==="o"||r==="O")s=c,u=8,o.option.esnext||this.trigger("warning",{code:"W119",line:this.line,character:this.char,data:["Octal integer literal"]}),e+=1,t+=r;if(r==="b"||r==="B")s=h,u=2,o.option.esnext||this.trigger("warning",{code:"W119",line:this.line,character:this.char,data:["Binary integer literal"]}),e+=1,t+=r;c(r)&&(s=c,u=8,a=!0,i=!1,e+=1,t+=r),!c(r)&&f(r)&&(e+=1,t+=r)}while(e<n){r=this.peek(e);if(a&&f(r))i=!0;else if(!s(r))break;t+=r,e+=1}if(s!==f){if(!a&&t.length<=2)return{type:l.NumericLiteral,value:t,isMalformed:!0};if(e<n){r=this.peek(e);if(d(r))return null}return{type:l.NumericLiteral,value:t,base:u,isLegacy:a,isMalformed:!1}}}if(r==="."){t+=r,e+=1;while(e<n){r=this.peek(e);if(!f(r))break;t+=r,e+=1}}if(r==="e"||r==="E"){t+=r,e+=1,r=this.peek(e);if(r==="+"||r==="-")t+=this.peek(e),e+=1;r=this.peek(e);if(!f(r))return null;t+=r,e+=1;while(e<n){r=this.peek(e);if(!f(r))break;t+=r,e+=1}}if(e<n){r=this.peek(e);if(d(r))return null}return{type:l.NumericLiteral,value:t,base:u,isMalformed:!isFinite(t)}},scanEscapeSequence:function(e){var t=!1,n=1;this.skip();var r=this.peek();switch(r){case"'":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\'"]},e,function(){return o.jsonMode});break;case"b":r="\\b";break;case"f":r="\\f";break;case"n":r="\\n";break;case"r":r="\\r";break;case"t":r="\\t";break;case"0":r="\\0";var i=parseInt(this.peek(1),10);this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return i>=0&&i<=7&&o.directive["use strict"]});break;case"u":r=String.fromCharCode(parseInt(this.input.substr(1,4),16)),n=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return o.jsonMode}),r="";break;case"x":var s=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return o.jsonMode}),r=String.fromCharCode(s),n=3;break;case"\\":r="\\\\";break;case'"':r='\\"';break;case"/":break;case"":t=!0,r=""}return{"char":r,jump:n,allowNewLine:t}},scanTemplateLiteral:function(e){var t,n="",r;if(!this.inTemplate){if(!o.option.esnext||this.peek()!=="`")return null;this.templateLine=this.line,this.templateChar=this.char,this.skip(1)}else if(this.peek()!=="}")return null;while(this.peek()!=="`"){while((r=this.peek())==="")if(!this.nextLine())return t=this.inTemplate?l.TemplateHead:l.TemplateMiddle,this.inTemplate=!1,this.trigger("error",{code:"E052",line:this.templateLine,character:this.templateChar}),{type:t,value:n,isUnclosed:!0};if(r==="$"&&this.peek(1)==="{")return n+="${",t=n.charAt(0)==="}"?l.TemplateMiddle:l.TemplateHead,this.skip(2),this.inTemplate=!0,{type:t,value:n,isUnclosed:!1};if(r==="\\"){var i=this.scanEscapeSequence(e);n+=i.char,this.skip(i.jump)}else{if(r==="`")break;n+=r,this.skip(1)}}return t=this.inTemplate?l.TemplateTail:l.StringLiteral,this.inTemplate=!1,this.skip(1),{type:t,value:n,isUnclosed:!1,quote:"`"}},scanStringLiteral:function(e){var t=this.peek();if(t!=='"'&&t!=="'")return null;this.triggerAsync("warning",{code:"W108",line:this.line,character:this.char},e,function(){return o.jsonMode&&t!=='"'});var n="",r=this.line,i=this.char,s=!1;this.skip();e:while(this.peek()!==t){while(this.peek()===""){s?(s=!1,this.triggerAsync("warning",{code:"W043",line:this.line,character:this.char},e,function(){return!o.option.multistr}),this.triggerAsync("warning",{code:"W042",line:this.line,character:this.char},e,function(){return o.jsonMode&&o.option.multistr})):this.trigger("warning",{code:"W112",line:this.line,character:this.char});if(!this.nextLine())return this.trigger("error",{code:"E029",line:r,character:i}),{type:l.StringLiteral,value:n,isUnclosed:!0,quote:t};if(this.peek()==t)break e}s=!1;var u=this.peek(),a=1;u<" "&&this.trigger("warning",{code:"W113",line:this.line,character:this.char,data:["<non-printable>"]});if(u==="\\"){var f=this.scanEscapeSequence(e);u=f.char,a=f.jump,s=f.allowNewLine}n+=u,this.skip(a)}return this.skip(),{type:l.StringLiteral,value:n,isUnclosed:!1,quote:t}},scanRegExp:function(){var e=0,t=this.input.length,n=this.peek(),r=n,i="",s=[],o=!1,u=!1,a,f=function(){n<" "&&(o=!0,this.trigger("warning",{code:"W048",line:this.line,character:this.char})),n==="<"&&(o=!0,this.trigger("warning",{code:"W049",line:this.line,character:this.char,data:[n]}))}.bind(this);if(!this.prereg||n!=="/")return null;e+=1,a=!1;while(e<t){n=this.peek(e),r+=n,i+=n;if(u){n==="]"&&(this.peek(e-1)!=="\\"||this.peek(e-2)==="\\")&&(u=!1),n==="\\"&&(e+=1,n=this.peek(e),i+=n,r+=n,f()),e+=1;continue}if(n==="\\"){e+=1,n=this.peek(e),i+=n,r+=n,f();if(n==="/"){e+=1;continue}if(n==="["){e+=1;continue}}if(n==="["){u=!0,e+=1;continue}if(n==="/"){i=i.substr(0,i.length-1),a=!0,e+=1;break}e+=1}if(!a)return this.trigger("error",{code:"E015",line:this.line,character:this.from}),void this.trigger("fatal",{line:this.line,from:this.from});while(e<t){n=this.peek(e);if(!/[gim]/.test(n))break;s.push(n),r+=n,e+=1}try{new RegExp(i,s.join(""))}catch(c){o=!0,this.trigger("error",{code:"E016",line:this.line,character:this.char,data:[c.message]})}return{type:l.RegExp,value:r,flags:s,isMalformed:o}},scanNonBreakingSpaces:function(){return o.option.nonbsp?this.input.search(/(\u00A0)/):-1},scanUnsafeChars:function(){return this.input.search(s.unsafeChars)},next:function(e){this.from=this.char;var t;if(/\s/.test(this.peek())){t=this.char;while(/\s/.test(this.peek()))this.from+=1,this.skip()}var n=this.scanComments()||this.scanStringLiteral(e)||this.scanTemplateLiteral(e);return n?n:(n=this.scanRegExp()||this.scanPunctuator()||this.scanKeyword()||this.scanIdentifier()||this.scanNumericLiteral(),n?(this.skip(n.tokenLength||n.value.length),n):null)},nextLine:function(){var e;if(this.line>=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var t=this.input.trim(),n=function(){return r.some(arguments,function(e){return t.indexOf(e)===0})},i=function(){return r.some(arguments,function(e){return t.indexOf(e,t.length-e.length)!==-1})};o.ignoreLinterErrors===!0&&!n("/*","//")&&(!this.inComment||!i("*/"))&&(this.input=""),e=this.scanNonBreakingSpaces(),e>=0&&this.trigger("warning",{code:"W125",line:this.line,character:e+1}),this.input=this.input.replace(/\t/g,o.tab),e=this.scanUnsafeChars(),e>=0&&this.trigger("warning",{code:"W100",line:this.line,character:e});if(o.option.maxlen&&o.option.maxlen<this.input.length){var u=this.inComment||n.call(t,"//")||n.call(t,"/*"),a=!u||!s.maxlenException.test(t);a&&this.trigger("warning",{code:"W101",line:this.line,character:this.input.length})}return!0},start:function(){this.nextLine()},token:function(){function n(e,t){if(!e.reserved)return!1;var n=e.meta;if(n&&n.isFutureReservedWord&&o.option.inES5()){if(!n.es5)return!1;if(n.strictOnly&&!o.option.strict&&!o.directive["use strict"])return!1;if(t)return!1}return!0}var e=c(),t,i=function(t,i,s,u){var a;t!=="(endline)"&&t!=="(end)"&&(this.prereg=!1);if(t==="(punctuator)"){switch(i){case".":case")":case"~":case"#":case"]":case"++":case"--":this.prereg=!1;break;default:this.prereg=!0}a=Object.create(o.syntax[i]||o.syntax["(error)"])}if(t==="(identifier)"){if(i==="return"||i==="case"||i==="typeof")this.prereg=!0;r.has(o.syntax,i)&&(a=Object.create(o.syntax[i]||o.syntax["(error)"]),n(a,s&&t==="(identifier)")||(a=null))}return a||(a=Object.create(o.syntax[t])),a.identifier=t==="(identifier)",a.type=a.type||t,a.value=i,a.line=this.line,a.character=this.char,a.from=this.from,a.identifier&&u&&(a.raw_text=u.text||u.value),s&&a.identifier&&(a.isProperty=s),a.check=e.check,a}.bind(this);for(;;){if(!this.input.length)return i(this.nextLine()?"(endline)":"(end)","");t=this.next(e);if(!t){this.input.length&&(this.trigger("error",{code:"E024",line:this.line,character:this.char,data:[this.peek()]}),this.input="");continue}switch(t.type){case l.StringLiteral:return this.triggerAsync("String",{line:this.line,"char":this.char,from:this.from,value:t.value,quote:t.quote},e,function(){return!0}),i("(string)",t.value);case l.TemplateHead:return this.trigger("TemplateHead",{line:this.line,"char":this.char,from:this.from,value:t.value}),i("(template)",t.value);case l.TemplateMiddle:return this.trigger("TemplateMiddle",{line:this.line,"char":this.char,from:this.from,value:t.value}),i("(template middle)",t.value);case l.TemplateTail:return this.trigger("TemplateTail",{line:this.line,"char":this.char,from:this.from,value:t.value}),i("(template tail)",t.value);case l.Identifier:this.trigger("Identifier",{line:this.line,"char":this.char,from:this.form,name:t.value,raw_name:t.text,isProperty:o.tokens.curr.id==="."});case l.Keyword:case l.NullLiteral:case l.BooleanLiteral:return i("(identifier)",t.value,o.tokens.curr.id===".",t);case l.NumericLiteral:return t.isMalformed&&this.trigger("warning",{code:"W045",line:this.line,character:this.char,data:[t.value]}),this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["0x-"]},e,function(){return t.base===16&&o.jsonMode}),this.triggerAsync("warning",{code:"W115",line:this.line,character:this.char},e,function(){return o.directive["use strict"]&&t.base===8&&t.isLegacy}),this.trigger("Number",{line:this.line,"char":this.char,from:this.from,value:t.value,base:t.base,isMalformed:t.malformed}),i("(number)",t.value);case l.RegExp:return i("(regexp)",t.value);case l.Comment:o.tokens.curr.comment=!0;if(t.isSpecial)return{id:"(comment)",value:t.value,body:t.body,type:t.commentType,isSpecial:t.isSpecial,line:this.line,character:this.char,from:this.from};break;case"":break;default:return i("(punctuator)",t.value)}}}},n.Lexer=h},{"../data/ascii-identifier-data.js":1,"./reg.js":8,"./state.js":9,events:12,underscore:2}],5:[function(e,t,n){"use strict";var r=e("underscore"),i={E001:"Bad option: '{a}'.",E002:"Bad option value.",E003:"Expected a JSON value.",E004:"Input is neither a string nor an array of strings.",E005:"Input is empty.",E006:"Unexpected early end of program.",E007:'Missing "use strict" statement.',E008:"Strict violation.",E009:"Option 'validthis' can't be used in a global scope.",E010:"'with' is not allowed in strict mode.",E011:"const '{a}' has already been declared.",E012:"const '{a}' is initialized to 'undefined'.",E013:"Attempting to override '{a}' which is a constant.",E014:"A regular expression literal can be confused with '/='.",E015:"Unclosed regular expression.",E016:"Invalid regular expression.",E017:"Unclosed comment.",E018:"Unbegun comment.",E019:"Unmatched '{a}'.",E020:"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",E021:"Expected '{a}' and instead saw '{b}'.",E022:"Line breaking error '{a}'.",E023:"Missing '{a}'.",E024:"Unexpected '{a}'.",E025:"Missing ':' on a case clause.",E026:"Missing '}' to match '{' from line {a}.",E027:"Missing ']' to match '[' from line {a}.",E028:"Illegal comma.",E029:"Unclosed string.",E030:"Expected an identifier and instead saw '{a}'.",E031:"Bad assignment.",E032:"Expected a small integer or 'false' and instead saw '{a}'.",E033:"Expected an operator and instead saw '{a}'.",E034:"get/set are ES5 features.",E035:"Missing property name.",E036:"Expected to see a statement and instead saw a block.",E037:null,E038:null,E039:"Function declarations are not invocable. Wrap the whole function invocation in parens.",E040:"Each value should have its own case label.",E041:"Unrecoverable syntax error.",E042:"Stopping.",E043:"Too many errors.",E044:null,E045:"Invalid for each loop.",E046:"A yield statement shall be within a generator function (with syntax: `function*`)",E047:null,E048:"Let declaration not directly within block.",E049:"A {a} cannot be named '{b}'.",E050:"Mozilla requires the yield expression to be parenthesized here.",E051:"Regular parameters cannot come after default parameters.",E052:"Unclosed template literal.",E053:"Export declaration must be in global scope.",E054:"Class properties must be methods. Expected '(' but instead saw '{a}'."},s={W001:"'hasOwnProperty' is a really bad name.",W002:"Value of '{a}' may be overwritten in IE 8 and earlier.",W003:"'{a}' was used before it was defined.",W004:"'{a}' is already defined.",W005:"A dot following a number can be confused with a decimal point.",W006:"Confusing minuses.",W007:"Confusing plusses.",W008:"A leading decimal point can be confused with a dot: '{a}'.",W009:"The array literal notation [] is preferable.",W010:"The object literal notation {} is preferable.",W011:null,W012:null,W013:null,W014:"Bad line breaking before '{a}'.",W015:null,W016:"Unexpected use of '{a}'.",W017:"Bad operand.",W018:"Confusing use of '{a}'.",W019:"Use the isNaN function to compare with NaN.",W020:"Read only.",W021:"'{a}' is a function.",W022:"Do not assign to the exception parameter.",W023:"Expected an identifier in an assignment and instead saw a function invocation.",W024:"Expected an identifier and instead saw '{a}' (a reserved word).",W025:"Missing name in function declaration.",W026:"Inner functions should be listed at the top of the outer function.",W027:"Unreachable '{a}' after '{b}'.",W028:"Label '{a}' on {b} statement.",W030:"Expected an assignment or function call and instead saw an expression.",W031:"Do not use 'new' for side effects.",W032:"Unnecessary semicolon.",W033:"Missing semicolon.",W034:'Unnecessary directive "{a}".',W035:"Empty block.",W036:"Unexpected /*member '{a}'.",W037:"'{a}' is a statement label.",W038:"'{a}' used out of scope.",W039:"'{a}' is not allowed.",W040:"Possible strict violation.",W041:"Use '{a}' to compare with '{b}'.",W042:"Avoid EOL escaping.",W043:"Bad escaping of EOL. Use option multistr if needed.",W044:"Bad or unnecessary escaping.",W045:"Bad number '{a}'.",W046:"Don't use extra leading zeros '{a}'.",W047:"A trailing decimal point can be confused with a dot: '{a}'.",W048:"Unexpected control character in regular expression.",W049:"Unexpected escaped character '{a}' in regular expression.",W050:"JavaScript URL.",W051:"Variables should not be deleted.",W052:"Unexpected '{a}'.",W053:"Do not use {a} as a constructor.",W054:"The Function constructor is a form of eval.",W055:"A constructor name should start with an uppercase letter.",W056:"Bad constructor.",W057:"Weird construction. Is 'new' necessary?",W058:"Missing '()' invoking a constructor.",W059:"Avoid arguments.{a}.",W060:"document.write can be a form of eval.",W061:"eval can be harmful.",W062:"Wrap an immediate function invocation in parens to assist the reader in understanding that the expression is the result of a function, and not the function itself.",W063:"Math is not a function.",W064:"Missing 'new' prefix when invoking a constructor.",W065:"Missing radix parameter.",W066:"Implied eval. Consider passing a function instead of a string.",W067:"Bad invocation.",W068:"Wrapping non-IIFE function literals in parens is unnecessary.",W069:"['{a}'] is better written in dot notation.",W070:"Extra comma. (it breaks older versions of IE)",W071:"This function has too many statements. ({a})",W072:"This function has too many parameters. ({a})",W073:"Blocks are nested too deeply. ({a})",W074:"This function's cyclomatic complexity is too high. ({a})",W075:"Duplicate {a} '{b}'.",W076:"Unexpected parameter '{a}' in get {b} function.",W077:"Expected a single parameter in set {a} function.",W078:"Setter is defined without getter.",W079:"Redefinition of '{a}'.",W080:"It's not necessary to initialize '{a}' to 'undefined'.",W081:null,W082:"Function declarations should not be placed in blocks. Use a function expression or move the statement to the top of the outer function.",W083:"Don't make functions within a loop.",W084:"Assignment in conditional expression",W085:"Don't use 'with'.",W086:"Expected a 'break' statement before '{a}'.",W087:"Forgotten 'debugger' statement?",W088:"Creating global 'for' variable. Should be 'for (var {a} ...'.",W089:"The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.",W090:"'{a}' is not a statement label.",W091:"'{a}' is out of scope.",W093:"Did you mean to return a conditional instead of an assignment?",W094:"Unexpected comma.",W095:"Expected a string and instead saw {a}.",W096:"The '{a}' key may produce unexpected results.",W097:'Use the function form of "use strict".',W098:"'{a}' is defined but never used.",W099:null,W100:"This character may get silently deleted by one or more browsers.",W101:"Line is too long.",W102:null,W103:"The '{a}' property is deprecated.",W104:"'{a}' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).",W105:"Unexpected {a} in '{b}'.",W106:"Identifier '{a}' is not in camel case.",W107:"Script URL.",W108:"Strings must use doublequote.",W109:"Strings must use singlequote.",W110:"Mixed double and single quotes.",W112:"Unclosed string.",W113:"Control character in string: {a}.",W114:"Avoid {a}.",W115:"Octal literals are not allowed in strict mode.",W116:"Expected '{a}' and instead saw '{b}'.",W117:"'{a}' is not defined.",W118:"'{a}' is only available in Mozilla JavaScript extensions (use moz option).",W119:"'{a}' is only available in ES6 (use esnext option).",W120:"You might be leaking a variable ({a}) here.",W121:"Extending prototype of native object: '{a}'.",W122:"Invalid typeof value '{a}'",W123:"'{a}' is already defined in outer scope.",W124:"A generator function shall contain a yield statement.",W125:"This line contains non-breaking spaces: http://jshint.com/doc/options/#nonbsp",W126:"Grouping operator is unnecessary for lone expressions.",W127:"Unexpected use of a comma operator.",W128:"Empty array elements require elision=true."},o={I001:"Comma warnings can be turned off with 'laxcomma'.",I002:null,I003:"ES5 option is now set per default"};n.errors={},n.warnings={},n.info={},r.each(i,function(e,t){n.errors[t]={code:t,desc:e}}),r.each(s,function(e,t){n.warnings[t]={code:t,desc:e}}),r.each(o,function(e,t){n.info[t]={code:t,desc:e}})},{underscore:2}],6:[function(e,t,n){"use strict";function r(){this._stack=[]}Object.defineProperty(r.prototype,"length",{get:function(){return this._stack.length}}),r.prototype.push=function(){this._stack.push(null)},r.prototype.pop=function(){this._stack.pop()},r.prototype.set=function(e){this._stack[this.length-1]=e},r.prototype.infer=function(){var e=this._stack[this.length-1],t="",n;if(!e||e.type==="class")e=this._stack[this.length-2];return e?(n=e.type,n!=="(string)"&&n!=="(number)"&&n!=="(identifier)"&&n!=="default"?"(expression)":(e.accessorType&&(t=e.accessorType+" "),t+e.value)):"(empty)"},t.exports=r},{}],7:[function(e,t,n){"use strict";n.bool={enforcing:{bitwise:!0,freeze:!0,camelcase:!0,curly:!0,eqeqeq:!0,notypeof:!0,es3:!0,es5:!0,forin:!0,funcscope:!0,globalstrict:!0,immed:!0,iterator:!0,newcap:!0,noarg:!0,nocomma:!0,noempty:!0,nonbsp:!0,nonew:!0,undef:!0,singleGroups:!1,enforceall:!1},relaxing:{asi:!0,multistr:!0,debug:!0,boss:!0,phantom:!0,evil:!0,plusplus:!0,proto:!0,scripturl:!0,strict:!0,sub:!0,supernew:!0,laxbreak:!0,laxcomma:!0,validthis:!0,withstmt:!0,moz:!0,noyield:!0,eqnull:!0,lastsemic:!0,loopfunc:!0,expr:!0,esnext:!0,elision:!0},environments:{mootools:!0,couch:!0,jasmine:!0,jquery:!0,node:!0,qunit:!0,rhino:!0,shelljs:!0,prototypejs:!0,yui:!0,mocha:!0,wsh:!0,worker:!0,nonstandard:!0,browser:!0,browserify:!0,devel:!0,dojo:!0,typed:!0},obsolete:{onecase:!0,regexp:!0,regexdash:!0}},n.val={maxlen:!1,indent:!1,maxerr:!1,predef:!1,globals:!1,quotmark:!1,scope:!1,maxstatements:!1,maxdepth:!1,maxparams:!1,maxcomplexity:!1,shadow:!1,unused:!0,latedef:!1,ignore:!1,ignoreDelimiters:!1},n.inverted={bitwise:!0,forin:!0,newcap:!0,plusplus:!0,regexp:!0,undef:!0,eqeqeq:!0,strict:!0},n.validNames=Object.keys(n.val).concat(Object.keys(n.bool.relaxing)).concat(Object.keys(n.bool.enforcing)).concat(Object.keys(n.bool.obsolete)).concat(Object.keys(n.bool.environments)),n.renamed={eqeq:"eqeqeq",windows:"wsh",sloppy:"strict"},n.removed={nomen:!0,onevar:!0,passfail:!0,white:!0,gcl:!0,smarttabs:!0,trailing:!0}},{}],8:[function(e,t,n){"use strict";n.unsafeString=/@cc|<\/?|script|\]\s*\]|<\s*!|&lt/i,n.unsafeChars=/[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,n.needEsc=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,n.needEscGlobal=/[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,n.starSlash=/\*\//,n.identifier=/^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,n.javascriptURL=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i,n.fallsThrough=/^\s*\/\*\s*falls?\sthrough\s*\*\/\s*$/,n.maxlenException=/^(?:(?:\/\/|\/\*|\*) ?)?[^ ]+$/},{}],9:[function(e,t,n){"use strict";var r=e("./name-stack.js"),i={syntax:{},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab="",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new r,this.ignoreLinterErrors=!1}};n.state=i},{"./name-stack.js":6}],10:[function(e,t,n){"use strict";n.register=function(e){e.on("Identifier",function(n){if(e.getOption("proto"))return;n.name==="__proto__"&&e.warn("W103",{line:n.line,"char":n.char,data:[n.name]})}),e.on("Identifier",function(n){if(e.getOption("iterator"))return;n.name==="__iterator__"&&e.warn("W104",{line:n.line,"char":n.char,data:[n.name]})}),e.on("Identifier",function(n){if(!e.getOption("camelcase"))return;n.name.replace(/^_+|_+$/g,"").indexOf("_")>-1&&!n.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:n.line,"char":n.from,data:[n.name]})}),e.on("String",function(n){var r=e.getOption("quotmark"),i=e.getOption("esnext"),s;if(!r)return;if(i&&n.quote==="`")return;r==="single"&&n.quote!=="'"&&(s="W109"),r==="double"&&n.quote!=='"'&&(s="W108"),r===!0&&(e.getCache("quotmark")||e.setCache("quotmark",n.quote),e.getCache("quotmark")!==n.quote&&(s="W110")),s&&e.warn(s,{line:n.line,"char":n.char})}),e.on("Number",function(n){n.value.charAt(0)==="."&&e.warn("W008",{line:n.line,"char":n.char,data:[n.value]}),n.value.substr(n.value.length-1)==="."&&e.warn("W047",{line:n.line,"char":n.char,data:[n.value]}),/^00+/.test(n.value)&&e.warn("W046",{line:n.line,"char":n.char,data:[n.value]})}),e.on("String",function(n){var r=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;if(e.getOption("scripturl"))return;r.test(n.value)&&e.warn("W107",{line:n.line,"char":n.char})})}},{}],11:[function(e,t,n){"use strict";n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,JSON:!1,Map:!1,Math:!1,Number:!1,Object:!1,Proxy:!1,Promise:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,Set:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1,WeakMap:!1,WeakSet:!1},n.newEcmaIdentifiers={Set:!1,Map:!1,WeakMap:!1,WeakSet:!1,Proxy:!1,Promise:!1,Reflect:!1,Symbol:!1,System:!1},n.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,print:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,postMessage:!0,self:!0,FileReaderSync:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,require:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},n.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,require:!1,Buffer:!0,exports:!0,process:!0},n.phantom={phantom:!0,require:!0,WebPage:!0,console:!0,exports:!0},n.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,"throws":!1},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1},n.mocha={describe:!1,it:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},n.jasmine={jasmine:!1,describe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1}},{}],12:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||undefined}function i(e){return typeof e=="function"}function s(e){return typeof e=="number"}function o(e){return typeof e=="object"&&e!==null}function u(e){return e===void 0}t.exports=r,r.EventEmitter=r,r.prototype._events=undefined,r.prototype._maxListeners=undefined,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,a,f;this._events||(this._events={});if(e==="error")if(!this._events.error||o(this._events.error)&&!this._events.error.length)throw t=arguments[1],t instanceof Error?t:TypeError('Uncaught, unspecified "error" event.');n=this._events[e];if(u(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];n.apply(this,s)}else if(o(n)){r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];f=n.slice(),r=f.length;for(a=0;a<r;a++)f[a].apply(this,s)}return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t;if(o(this._events[e])&&!this._events[e].warned){var n;u(this._maxListeners)?n=r.defaultMaxListeners:n=this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),typeof console.trace=="function"&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}]},{},[3])(3)}),ace.define("ace/mode/javascript_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/javascript/jshint"],function(require,exports,module){"use strict";function startRegex(e){return RegExp("^("+e.join("|")+")")}var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,lint=require("./javascript/jshint").JSHINT,disabledWarningsRe=startRegex(["Bad for in variable '(.+)'.",'Missing "use strict"']),errorsRe=startRegex(["Unexpected","Expected ","Confusing (plus|minus)","\\{a\\} unterminated regular expression","Unclosed ","Unmatched ","Unbegun comment","Bad invocation","Missing space after","Missing operator at"]),infoRe=startRegex(["Expected an assignment","Bad escapement of EOL","Unexpected comma","Unexpected space","Missing radix parameter.","A leading decimal point can","\\['{a}'\\] is better written in dot notation.","'{a}' used out of scope"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval("throw 0;"+str)}catch(e){if(e===0)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();e=e.replace(/^#!.*\n/,"\n");if(!e)return this.sender.emit("annotate",[]);var t=[],n=this.isValidJS(e)?"warning":"error";lint(e,this.options);var r=lint.errors,i=!1;for(var s=0;s<r.length;s++){var o=r[s];if(!o)continue;var u=o.raw,a="warning";if(u=="Missing semicolon."){var f=o.evidence.substr(o.character);f=f.charAt(f.search(/\S/)),n=="error"&&f&&/[\w\d{(['"]/.test(f)?(o.reason='Missing ";" before statement',a="error"):a="info"}else{if(disabledWarningsRe.test(u))continue;infoRe.test(u)?a="info":errorsRe.test(u)?(i=!0,a=n):u=="'{a}' is not defined."?a="warning":u=="'{a}' is defined but never used."&&(a="info")}t.push({row:o.line-1,column:o.character-1,text:o.reason,type:a,raw:u}),i}this.sender.emit("annotate",t)}}.call(JavaScriptWorker.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-json.js b/js/ace/worker-json.js
new file mode 100644
index 0000000..727a999
--- /dev/null
+++ b/js/ace/worker-json.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/json/json_parse",["require","exports","module"],function(e,t,n){"use strict";var r,i,s={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:"\n",r:"\r",t:"	"},o,u=function(e){throw{name:"SyntaxError",message:e,at:r,text:o}},a=function(e){return e&&e!==i&&u("Expected '"+e+"' instead of '"+i+"'"),i=o.charAt(r),r+=1,i},f=function(){var e,t="";i==="-"&&(t="-",a("-"));while(i>="0"&&i<="9")t+=i,a();if(i==="."){t+=".";while(a()&&i>="0"&&i<="9")t+=i}if(i==="e"||i==="E"){t+=i,a();if(i==="-"||i==="+")t+=i,a();while(i>="0"&&i<="9")t+=i,a()}e=+t;if(!isNaN(e))return e;u("Bad number")},l=function(){var e,t,n="",r;if(i==='"')while(a()){if(i==='"')return a(),n;if(i==="\\"){a();if(i==="u"){r=0;for(t=0;t<4;t+=1){e=parseInt(a(),16);if(!isFinite(e))break;r=r*16+e}n+=String.fromCharCode(r)}else{if(typeof s[i]!="string")break;n+=s[i]}}else n+=i}u("Bad string")},c=function(){while(i&&i<=" ")a()},h=function(){switch(i){case"t":return a("t"),a("r"),a("u"),a("e"),!0;case"f":return a("f"),a("a"),a("l"),a("s"),a("e"),!1;case"n":return a("n"),a("u"),a("l"),a("l"),null}u("Unexpected '"+i+"'")},p,d=function(){var e=[];if(i==="["){a("["),c();if(i==="]")return a("]"),e;while(i){e.push(p()),c();if(i==="]")return a("]"),e;a(","),c()}}u("Bad array")},v=function(){var e,t={};if(i==="{"){a("{"),c();if(i==="}")return a("}"),t;while(i){e=l(),c(),a(":"),Object.hasOwnProperty.call(t,e)&&u('Duplicate key "'+e+'"'),t[e]=p(),c();if(i==="}")return a("}"),t;a(","),c()}}u("Bad object")};return p=function(){c();switch(i){case"{":return v();case"[":return d();case'"':return l();case"-":return f();default:return i>="0"&&i<="9"?f():h()}},function(e,t){var n;return o=e,r=0,i=" ",n=p(),c(),i&&u("Syntax error"),typeof t=="function"?function s(e,n){var r,i,o=e[n];if(o&&typeof o=="object")for(r in o)Object.hasOwnProperty.call(o,r)&&(i=s(o,r),i!==undefined?o[r]=i:delete o[r]);return t.call(e,n,o)}({"":n},""):n}}),ace.define("ace/mode/json_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/json/json_parse"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./json/json_parse"),o=t.JsonWorker=function(e){i.call(this,e),this.setTimeout(200)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{e&&s(e)}catch(n){var r=this.doc.indexToPosition(n.at-1);t.push({row:r.row,column:r.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-lua.js b/js/ace/worker-lua.js
new file mode 100644
index 0000000..98f09d4
--- /dev/null
+++ b/js/ace/worker-lua.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/lua/luaparse",["require","exports","module"],function(e,t,n){(function(e,n,r){r(t)})(this,"luaparse",function(e){"use strict";function m(e){if(mt){var t=vt.pop();t.complete(),n.locations&&(e.loc=t.loc),n.ranges&&(e.range=t.range)}return e}function w(e,t,n){for(var r=0,i=e.length;r<i;r++)if(e[r][t]===n)return r;return-1}function E(e){var t=g.call(arguments,1);return e=e.replace(/%(\d)/g,function(e,n){return""+t[n-1]||""}),e}function S(){var e=g.call(arguments),t={},n,r;for(var i=0,s=e.length;i<s;i++){n=e[i];for(r in n)n.hasOwnProperty(r)&&(t[r]=n[r])}return t}function x(e){var t=E.apply(null,g.call(arguments,1)),n,r;throw"undefined"!=typeof e.line?(r=e.range[0]-e.lineStart,n=new SyntaxError(E("[%1:%2] %3",e.line,r,t)),n.line=e.line,n.index=e.range[0],n.column=r):(r=C-D+1,n=new SyntaxError(E("[%1:%2] %3",_,r,t)),n.index=C,n.line=_,n.column=r),n}function T(e,t){x(t,d.expectedToken,e,t.value)}function N(e,t){"undefined"==typeof t&&(t=A.value);if("undefined"!=typeof e.type){var n;switch(e.type){case o:n="string";break;case u:n="keyword";break;case a:n="identifier";break;case f:n="number";break;case l:n="symbol";break;case c:n="boolean";break;case h:return x(e,d.unexpected,"symbol","nil",t)}return x(e,d.unexpected,n,e.value,t)}return x(e,d.unexpected,"symbol",e,t)}function P(){H();while(45===t.charCodeAt(C)&&45===t.charCodeAt(C+1))X(),H();if(C>=r)return{type:s,value:"<eof>",line:_,lineStart:D,range:[C,C]};var e=t.charCodeAt(C),n=t.charCodeAt(C+1);M=C;if(et(e))return B();switch(e){case 39:case 34:return I();case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return R();case 46:if(Y(n))return R();if(46===n)return 46===t.charCodeAt(C+2)?F():j("..");return j(".");case 61:if(61===n)return j("==");return j("=");case 62:if(61===n)return j(">=");return j(">");case 60:if(61===n)return j("<=");return j("<");case 126:if(61===n)return j("~=");return x({},d.expected,"=","~");case 58:if(58===n)return j("::");return j(":");case 91:if(91===n||61===n)return q();return j("[");case 42:case 47:case 94:case 37:case 44:case 123:case 125:case 93:case 40:case 41:case 59:case 35:case 45:case 43:return j(t.charAt(C))}return N(t.charAt(C))}function H(){while(C<r){var e=t.charCodeAt(C);if(Q(e))C++;else{if(!G(e))break;_++,D=++C}}}function B(){var e,n;while(tt(t.charCodeAt(++C)));return e=t.slice(M,C),nt(e)?n=u:"true"===e||"false"===e?(n=c,e="true"===e):"nil"===e?(n=h,e=null):n=a,{type:n,value:e,line:_,lineStart:D,range:[M,C]}}function j(e){return C+=e.length,{type:l,value:e,line:_,lineStart:D,range:[M,C]}}function F(){return C+=3,{type:p,value:"...",line:_,lineStart:D,range:[M,C]}}function I(){var e=t.charCodeAt(C++),n=C,i="",s;while(C<r){s=t.charCodeAt(C++);if(e===s)break;if(92===s)i+=t.slice(n,C-1)+W(),n=C;else if(C>=r||G(s))i+=t.slice(n,C-1),x({},d.unfinishedString,i+String.fromCharCode(s))}return i+=t.slice(n,C-1),{type:o,value:i,line:_,lineStart:D,range:[M,C]}}function q(){var e=V();return!1===e&&x(k,d.expected,"[",k.value),{type:o,value:e,line:_,lineStart:D,range:[M,C]}}function R(){var e=t.charAt(C),n=t.charAt(C+1),r="0"===e&&"xX".indexOf(n||null)>=0?U():z();return{type:f,value:r,line:_,lineStart:D,range:[M,C]}}function U(){var e=0,n=1,r=1,i,s,o,u;u=C+=2,Z(t.charCodeAt(C))||x({},d.malformedNumber,t.slice(M,C));while(Z(t.charCodeAt(C)))C++;i=parseInt(t.slice(u,C),16);if("."===t.charAt(C)){s=++C;while(Z(t.charCodeAt(C)))C++;e=t.slice(s,C),e=s===C?0:parseInt(e,16)/Math.pow(16,C-s)}if("pP".indexOf(t.charAt(C)||null)>=0){C++,"+-".indexOf(t.charAt(C)||null)>=0&&(r="+"===t.charAt(C++)?1:-1),o=C,Y(t.charCodeAt(C))||x({},d.malformedNumber,t.slice(M,C));while(Y(t.charCodeAt(C)))C++;n=t.slice(o,C),n=Math.pow(2,n*r)}return(i+e)*n}function z(){while(Y(t.charCodeAt(C)))C++;if("."===t.charAt(C)){C++;while(Y(t.charCodeAt(C)))C++}if("eE".indexOf(t.charAt(C)||null)>=0){C++,"+-".indexOf(t.charAt(C)||null)>=0&&C++,Y(t.charCodeAt(C))||x({},d.malformedNumber,t.slice(M,C));while(Y(t.charCodeAt(C)))C++}return parseFloat(t.slice(M,C))}function W(){var e=C;switch(t.charAt(C)){case"n":return C++,"\n";case"r":return C++,"\r";case"t":return C++,"	";case"v":return C++,"";case"b":return C++,"\b";case"f":return C++,"\f";case"z":return C++,H(),"";case"x":if(Z(t.charCodeAt(C+1))&&Z(t.charCodeAt(C+2)))return C+=3,"\\"+t.slice(e,C);return"\\"+t.charAt(C++);default:if(Y(t.charCodeAt(C))){while(Y(t.charCodeAt(++C)));return"\\"+t.slice(e,C)}return t.charAt(C++)}}function X(){M=C,C+=2;var e=t.charAt(C),i="",s=!1,o=C,u=D,a=_;"["===e&&(i=V(),!1===i?i=e:s=!0);if(!s){while(C<r){if(G(t.charCodeAt(C)))break;C++}n.comments&&(i=t.slice(o,C))}if(n.comments){var f=v.comment(i,t.slice(M,C));n.locations&&(f.loc={start:{line:a,column:M-u},end:{line:_,column:C-D}}),n.ranges&&(f.range=[M,C]),O.push(f)}}function V(){var e=0,n="",i=!1,s,o;C++;while("="===t.charAt(C+e))e++;if("["!==t.charAt(C+e))return!1;C+=e+1,G(t.charCodeAt(C))&&(_++,D=C++),o=C;while(C<r){s=t.charAt(C++),G(s.charCodeAt(0))&&(_++,D=C);if("]"===s){i=!0;for(var u=0;u<e;u++)"="!==t.charAt(C+u)&&(i=!1);"]"!==t.charAt(C+e)&&(i=!1)}if(i)break}return n+=t.slice(o,C-1),C+=e+1,n}function $(){L=k,k=A,A=P()}function J(e){return e===k.value?($(),!0):!1}function K(e){e===k.value?$():x(k,d.expected,e,k.value)}function Q(e){return 9===e||32===e||11===e||12===e}function G(e){return 10===e||13===e}function Y(e){return e>=48&&e<=57}function Z(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function et(e){return e>=65&&e<=90||e>=97&&e<=122||95===e}function tt(e){return e>=65&&e<=90||e>=97&&e<=122||95===e||e>=48&&e<=57}function nt(e){switch(e.length){case 2:return"do"===e||"if"===e||"in"===e||"or"===e;case 3:return"and"===e||"end"===e||"for"===e||"not"===e;case 4:return"else"===e||"goto"===e||"then"===e;case 5:return"break"===e||"local"===e||"until"===e||"while"===e;case 6:return"elseif"===e||"repeat"===e||"return"===e;case 8:return"function"===e}return!1}function rt(e){return l===e.type?"#-".indexOf(e.value)>=0:u===e.type?"not"===e.value:!1}function it(e){switch(e.type){case"CallExpression":case"TableCallExpression":case"StringCallExpression":return!0}return!1}function st(e){if(s===e.type)return!0;if(u!==e.type)return!1;switch(e.value){case"else":case"elseif":case"end":case"until":return!0;default:return!1}}function ft(){ot.push(Array.apply(null,ot[ut++]))}function lt(){ot.pop(),ut--}function ct(e){if(-1!==b(ot[ut],e))return;ot[ut].push(e)}function ht(e){ct(e.name),pt(e,!0)}function pt(e,t){!t&&-1===w(at,"name",e.name)&&at.push(e),e.isLocal=t}function dt(e){return-1!==b(ot[ut],e)}function gt(){return new yt(k)}function yt(e){n.locations&&(this.loc={start:{line:e.line,column:e.range[0]-e.lineStart},end:{line:0,column:0}}),n.ranges&&(this.range=[e.range[0],0])}function bt(){mt&&vt.push(gt())}function wt(e){mt&&vt.push(e)}function Et(){$(),bt();var e=St();return s!==k.type&&N(k),mt&&!e.length&&(L=k),m(v.chunk(e))}function St(e){var t=[],r;n.scope&&ft();while(!st(k)){if("return"===k.value){t.push(xt());break}r=xt(),r&&t.push(r)}return n.scope&&lt(),t}function xt(){bt();if(u===k.type)switch(k.value){case"local":return $(),Dt();case"if":return $(),Mt();case"return":return $(),Ot();case"function":$();var e=jt();return Bt(e);case"while":return $(),Lt();case"for":return $(),_t();case"repeat":return $(),At();case"break":return $(),Nt();case"do":return $(),kt();case"goto":return $(),Ct()}if(l===k.type&&J("::"))return Tt();mt&&vt.pop();if(J(";"))return;return Pt()}function Tt(){var e=k.value,t=Ht();return n.scope&&(ct("::"+e+"::"),pt(t,!0)),K("::"),m(v.labelStatement(t))}function Nt(){return m(v.breakStatement())}function Ct(){var e=k.value,t=Ht();return n.scope&&(t.isLabel=dt("::"+e+"::")),m(v.gotoStatement(t))}function kt(){var e=St();return K("end"),m(v.doStatement(e))}function Lt(){var e=qt();K("do");var t=St();return K("end"),m(v.whileStatement(e,t))}function At(){var e=St();K("until");var t=qt();return m(v.repeatStatement(t,e))}function Ot(){var e=[];if("end"!==k.value){var t=It();null!=t&&e.push(t);while(J(","))t=qt(),e.push(t);J(";")}return m(v.returnStatement(e))}function Mt(){var e=[],t,n,r;mt&&(r=vt[vt.length-1],vt.push(r)),t=qt(),K("then"),n=St(),e.push(m(v.ifClause(t,n))),mt&&(r=gt());while(J("elseif"))wt(r),t=qt(),K("then"),n=St(),e.push(m(v.elseifClause(t,n))),mt&&(r=gt());return J("else")&&(mt&&(r=new yt(L),vt.push(r)),n=St(),e.push(m(v.elseClause(n)))),K("end"),m(v.ifStatement(e))}function _t(){var e=Ht(),t;n.scope&&ht(e);if(J("=")){var r=qt();K(",");var i=qt(),s=J(",")?qt():null;return K("do"),t=St(),K("end"),m(v.forNumericStatement(e,r,i,s,t))}var o=[e];while(J(","))e=Ht(),n.scope&&ht(e),o.push(e);K("in");var u=[];do{var a=qt();u.push(a)}while(J(","));return K("do"),t=St(),K("end"),m(v.forGenericStatement(o,u,t))}function Dt(){var e;if(a===k.type){var t=[],r=[];do e=Ht(),t.push(e);while(J(","));if(J("="))do{var i=qt();r.push(i)}while(J(","));if(n.scope)for(var s=0,o=t.length;s<o;s++)ht(t[s]);return m(v.localStatement(t,r))}if(J("function"))return e=Ht(),n.scope&&ht(e),Bt(e,!0);T("<name>",k)}function Pt(){var e=k,t,n;mt&&(n=gt()),t=zt();if(null==t)return N(k);if(",=".indexOf(k.value)>=0){var r=[t],i=[],s;while(J(","))s=zt(),null==s&&T("<expression>",k),r.push(s);K("=");do s=qt(),i.push(s);while(J(","));return wt(n),m(v.assignmentStatement(r,i))}return it(t)?(wt(n),m(v.callStatement(t))):N(e)}function Ht(){bt();var e=k.value;return a!==k.type&&T("<name>",k),$(),m(v.identifier(e))}function Bt(e,t){var r=[];K("(");if(!J(")"))for(;;)if(a===k.type){var i=Ht();n.scope&&ht(i),r.push(i);if(J(","))continue;if(J(")"))break}else{if(p===k.type){r.push(Xt()),K(")");break}T("<name> or '...'",k)}var s=St();return K("end"),t=t||!1,m(v.functionStatement(e,r,t,s))}function jt(){var e,t,r;mt&&(r=gt()),e=Ht(),n.scope&&pt(e,!1);while(J("."))wt(r),t=Ht(),n.scope&&pt(t,!1),e=m(v.memberExpression(e,".",t));return J(":")&&(wt(r),t=Ht(),n.scope&&pt(t,!1),e=m(v.memberExpression(e,":",t))),e}function Ft(){var e=[],t,n;for(;;){bt();if(l===k.type&&J("["))t=qt(),K("]"),K("="),n=qt(),e.push(m(v.tableKey(t,n)));else if(a===k.type)t=qt(),J("=")?(n=qt(),e.push(m(v.tableKeyString(t,n)))):e.push(m(v.tableValue(t)));else{if(null==(n=It())){vt.pop();break}e.push(m(v.tableValue(n)))}if(",;".indexOf(k.value)>=0){$();continue}if("}"===k.value)break}return K("}"),m(v.tableConstructorExpression(e))}function It(){var e=Ut(0);return e}function qt(){var e=It();if(null!=e)return e;T("<expression>",k)}function Rt(e){var t=e.charCodeAt(0),n=e.length;if(1===n)switch(t){case 94:return 10;case 42:case 47:case 37:return 7;case 43:case 45:return 6;case 60:case 62:return 3}else if(2===n)switch(t){case 46:return 5;case 60:case 62:case 61:case 126:return 3;case 111:return 1}else if(97===t&&"and"===e)return 2;return 0}function Ut(e){var t=k.value,n,r;mt&&(r=gt());if(rt(k)){bt(),$();var i=Ut(8);i==null&&T("<expression>",k),n=m(v.unaryExpression(t,i))}null==n&&(n=Xt(),null==n&&(n=zt()));if(null==n)return null;var s;for(;;){t=k.value,s=l===k.type||u===k.type?Rt(t):0;if(s===0||s<=e)break;("^"===t||".."===t)&&s--,$();var o=Ut(s);null==o&&T("<expression>",k),mt&&vt.push(r),n=m(v.binaryExpression(t,n,o))}return n}function zt(){var e,t,r,i;mt&&(r=gt());if(a===k.type)t=k.value,e=Ht(),n.scope&&pt(e,i=dt(t));else{if(!J("("))return null;e=qt(),K(")"),n.scope&&(i=e.isLocal)}var s,u;for(;;)if(l===k.type)switch(k.value){case"[":wt(r),$(),s=qt(),e=m(v.indexExpression(e,s)),K("]");break;case".":wt(r),$(),u=Ht(),n.scope&&pt(u,i),e=m(v.memberExpression(e,".",u));break;case":":wt(r),$(),u=Ht(),n.scope&&pt(u,i),e=m(v.memberExpression(e,":",u)),wt(r),e=Wt(e);break;case"(":case"{":wt(r),e=Wt(e);break;default:return e}else{if(o!==k.type)break;wt(r),e=Wt(e)}return e}function Wt(e){if(l===k.type)switch(k.value){case"(":$();var t=[],n=It();null!=n&&t.push(n);while(J(","))n=qt(),t.push(n);return K(")"),m(v.callExpression(e,t));case"{":bt(),$();var r=Ft();return m(v.tableCallExpression(e,r))}else if(o===k.type)return m(v.stringCallExpression(e,Xt()));T("function arguments",k)}function Xt(){var e=o|f|c|h|p,n=k.value,r=k.type,i;mt&&(i=gt());if(r&e){wt(i);var s=t.slice(k.range[0],k.range[1]);return $(),m(v.literal(r,n,s))}if(u===r&&"function"===n)return wt(i),$(),Bt(null);if(J("{"))return wt(i),Ft()}function Vt(s,o){return"undefined"==typeof o&&"object"==typeof s&&(o=s,s=undefined),o||(o={}),t=s||"",n=S(i,o),C=0,_=1,D=0,r=t.length,ot=[[]],ut=0,at=[],vt=[],n.comments&&(O=[]),n.wait?e:Jt()}function $t(n){return t+=String(n),r=t.length,e}function Jt(e){"undefined"!=typeof e&&$t(e),r=t.length,mt=n.locations||n.ranges,A=P();var i=Et();n.comments&&(i.comments=O),n.scope&&(i.globals=at);if(vt.length>0)throw new Error("Location tracking failed. This is most likely a bug in luaparse");return i}e.version="0.1.4";var t,n,r,i=e.defaultOptions={wait:!1,comments:!0,scope:!1,locations:!1,ranges:!1},s=1,o=2,u=4,a=8,f=16,l=32,c=64,h=128,p=256;e.tokenTypes={EOF:s,StringLiteral:o,Keyword:u,Identifier:a,NumericLiteral:f,Punctuator:l,BooleanLiteral:c,NilLiteral:h,VarargLiteral:p};var d=e.errors={unexpected:"Unexpected %1 '%2' near '%3'",expected:"'%1' expected near '%2'",expectedToken:"%1 expected near '%2'",unfinishedString:"unfinished string near '%1'",malformedNumber:"malformed number near '%1'"},v=e.ast={labelStatement:function(e){return{type:"LabelStatement",label:e}},breakStatement:function(){return{type:"BreakStatement"}},gotoStatement:function(e){return{type:"GotoStatement",label:e}},returnStatement:function(e){return{type:"ReturnStatement",arguments:e}},ifStatement:function(e){return{type:"IfStatement",clauses:e}},ifClause:function(e,t){return{type:"IfClause",condition:e,body:t}},elseifClause:function(e,t){return{type:"ElseifClause",condition:e,body:t}},elseClause:function(e){return{type:"ElseClause",body:e}},whileStatement:function(e,t){return{type:"WhileStatement",condition:e,body:t}},doStatement:function(e){return{type:"DoStatement",body:e}},repeatStatement:function(e,t){return{type:"RepeatStatement",condition:e,body:t}},localStatement:function(e,t){return{type:"LocalStatement",variables:e,init:t}},assignmentStatement:function(e,t){return{type:"AssignmentStatement",variables:e,init:t}},callStatement:function(e){return{type:"CallStatement",expression:e}},functionStatement:function(e,t,n,r){return{type:"FunctionDeclaration",identifier:e,isLocal:n,parameters:t,body:r}},forNumericStatement:function(e,t,n,r,i){return{type:"ForNumericStatement",variable:e,start:t,end:n,step:r,body:i}},forGenericStatement:function(e,t,n){return{type:"ForGenericStatement",variables:e,iterators:t,body:n}},chunk:function(e){return{type:"Chunk",body:e}},identifier:function(e){return{type:"Identifier",name:e}},literal:function(e,t,n){return e=e===o?"StringLiteral":e===f?"NumericLiteral":e===c?"BooleanLiteral":e===h?"NilLiteral":"VarargLiteral",{type:e,value:t,raw:n}},tableKey:function(e,t){return{type:"TableKey",key:e,value:t}},tableKeyString:function(e,t){return{type:"TableKeyString",key:e,value:t}},tableValue:function(e){return{type:"TableValue",value:e}},tableConstructorExpression:function(e){return{type:"TableConstructorExpression",fields:e}},binaryExpression:function(e,t,n){var r="and"===e||"or"===e?"LogicalExpression":"BinaryExpression";return{type:r,operator:e,left:t,right:n}},unaryExpression:function(e,t){return{type:"UnaryExpression",operator:e,argument:t}},memberExpression:function(e,t,n){return{type:"MemberExpression",indexer:t,identifier:n,base:e}},indexExpression:function(e,t){return{type:"IndexExpression",base:e,index:t}},callExpression:function(e,t){return{type:"CallExpression",base:e,arguments:t}},tableCallExpression:function(e,t){return{type:"TableCallExpression",base:e,arguments:t}},stringCallExpression:function(e,t){return{type:"StringCallExpression",base:e,argument:t}},comment:function(e,t){return{type:"Comment",value:e,raw:t}}},g=Array.prototype.slice,y=Object.prototype.toString,b=function(t,n){for(var r=0,i=t.length;r<i;r++)if(t[r]===n)return r;return-1},C,k,L,A,O,M,_,D;e.lex=P;var ot,ut,at,vt=[],mt;yt.prototype.complete=function(){n.locations&&(this.loc.end.line=L.line,this.loc.end.column=L.range[1]-L.lineStart),n.ranges&&(this.range[1]=L.range[1])},e.parse=Vt,e.write=$t,e.end=Jt})}),ace.define("ace/mode/lua_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/lua/luaparse"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("../mode/lua/luaparse"),o=t.Worker=function(e){i.call(this,e),this.setTimeout(500)};r.inherits(o,i),function(){this.onUpdate=function(){var e=this.doc.getValue(),t=[];try{s.parse(e)}catch(n){n instanceof SyntaxError&&t.push({row:n.line-1,column:n.column,text:n.message,type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-php.js b/js/ace/worker-php.js
new file mode 100644
index 0000000..5f42505
--- /dev/null
+++ b/js/ace/worker-php.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/php/php",["require","exports","module"],function(e,t,n){var r={Constants:{}};r.Constants.T_INCLUDE=262,r.Constants.T_INCLUDE_ONCE=261,r.Constants.T_EVAL=260,r.Constants.T_REQUIRE=259,r.Constants.T_REQUIRE_ONCE=258,r.Constants.T_LOGICAL_OR=263,r.Constants.T_LOGICAL_XOR=264,r.Constants.T_LOGICAL_AND=265,r.Constants.T_PRINT=266,r.Constants.T_PLUS_EQUAL=277,r.Constants.T_MINUS_EQUAL=276,r.Constants.T_MUL_EQUAL=275,r.Constants.T_DIV_EQUAL=274,r.Constants.T_CONCAT_EQUAL=273,r.Constants.T_MOD_EQUAL=272,r.Constants.T_AND_EQUAL=271,r.Constants.T_OR_EQUAL=270,r.Constants.T_XOR_EQUAL=269,r.Constants.T_SL_EQUAL=268,r.Constants.T_SR_EQUAL=267,r.Constants.T_BOOLEAN_OR=278,r.Constants.T_BOOLEAN_AND=279,r.Constants.T_IS_EQUAL=283,r.Constants.T_IS_NOT_EQUAL=282,r.Constants.T_IS_IDENTICAL=281,r.Constants.T_IS_NOT_IDENTICAL=280,r.Constants.T_IS_SMALLER_OR_EQUAL=285,r.Constants.T_IS_GREATER_OR_EQUAL=284,r.Constants.T_SL=287,r.Constants.T_SR=286,r.Constants.T_INSTANCEOF=288,r.Constants.T_INC=297,r.Constants.T_DEC=296,r.Constants.T_INT_CAST=295,r.Constants.T_DOUBLE_CAST=294,r.Constants.T_STRING_CAST=293,r.Constants.T_ARRAY_CAST=292,r.Constants.T_OBJECT_CAST=291,r.Constants.T_BOOL_CAST=290,r.Constants.T_UNSET_CAST=289,r.Constants.T_NEW=299,r.Constants.T_CLONE=298,r.Constants.T_EXIT=300,r.Constants.T_IF=301,r.Constants.T_ELSEIF=302,r.Constants.T_ELSE=303,r.Constants.T_ENDIF=304,r.Constants.T_LNUMBER=305,r.Constants.T_DNUMBER=306,r.Constants.T_STRING=307,r.Constants.T_STRING_VARNAME=308,r.Constants.T_VARIABLE=309,r.Constants.T_NUM_STRING=310,r.Constants.T_INLINE_HTML=311,r.Constants.T_CHARACTER=312,r.Constants.T_BAD_CHARACTER=313,r.Constants.T_ENCAPSED_AND_WHITESPACE=314,r.Constants.T_CONSTANT_ENCAPSED_STRING=315,r.Constants.T_ECHO=316,r.Constants.T_DO=317,r.Constants.T_WHILE=318,r.Constants.T_ENDWHILE=319,r.Constants.T_FOR=320,r.Constants.T_ENDFOR=321,r.Constants.T_FOREACH=322,r.Constants.T_ENDFOREACH=323,r.Constants.T_DECLARE=324,r.Constants.T_ENDDECLARE=325,r.Constants.T_AS=326,r.Constants.T_SWITCH=327,r.Constants.T_ENDSWITCH=328,r.Constants.T_CASE=329,r.Constants.T_DEFAULT=330,r.Constants.T_BREAK=331,r.Constants.T_CONTINUE=332,r.Constants.T_GOTO=333,r.Constants.T_FUNCTION=334,r.Constants.T_CONST=335,r.Constants.T_RETURN=336,r.Constants.T_TRY=337,r.Constants.T_CATCH=338,r.Constants.T_THROW=339,r.Constants.T_USE=340,r.Constants.T_GLOBAL=341,r.Constants.T_STATIC=347,r.Constants.T_ABSTRACT=346,r.Constants.T_FINAL=345,r.Constants.T_PRIVATE=344,r.Constants.T_PROTECTED=343,r.Constants.T_PUBLIC=342,r.Constants.T_VAR=348,r.Constants.T_UNSET=349,r.Constants.T_ISSET=350,r.Constants.T_EMPTY=351,r.Constants.T_HALT_COMPILER=352,r.Constants.T_CLASS=353,r.Constants.T_TRAIT=382,r.Constants.T_INTERFACE=354,r.Constants.T_EXTENDS=355,r.Constants.T_IMPLEMENTS=356,r.Constants.T_OBJECT_OPERATOR=357,r.Constants.T_DOUBLE_ARROW=358,r.Constants.T_LIST=359,r.Constants.T_ARRAY=360,r.Constants.T_CLASS_C=361,r.Constants.T_TRAIT_C=381,r.Constants.T_METHOD_C=362,r.Constants.T_FUNC_C=363,r.Constants.T_LINE=364,r.Constants.T_FILE=365,r.Constants.T_COMMENT=366,r.Constants.T_DOC_COMMENT=367,r.Constants.T_OPEN_TAG=368,r.Constants.T_OPEN_TAG_WITH_ECHO=369,r.Constants.T_CLOSE_TAG=370,r.Constants.T_WHITESPACE=371,r.Constants.T_START_HEREDOC=372,r.Constants.T_END_HEREDOC=373,r.Constants.T_DOLLAR_OPEN_CURLY_BRACES=374,r.Constants.T_CURLY_OPEN=375,r.Constants.T_PAAMAYIM_NEKUDOTAYIM=376,r.Constants.T_DOUBLE_COLON=376,r.Constants.T_NAMESPACE=377,r.Constants.T_NS_C=378,r.Constants.T_DIR=379,r.Constants.T_NS_SEPARATOR=380,r.Lexer=function(e,t){var n,i=function(e){if(e.match(/\n/)!==null){var t=e.substring(0,1);e="["+e.split(/\n/).join(t+","+t)+'].join("\\n")'}return e},s,o=t===undefined||/^(on|true|1)$/i.test(t.short_open_tag)?/(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i:/(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i,u=t===undefined||/^(on|true|1)$/i.test(t.short_open_tag)?/^(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i:/^(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i,a=[{value:r.Constants.T_NAMESPACE,re:/^namespace(?=\s)/i},{value:r.Constants.T_USE,re:/^use(?=\s)/i},{value:r.Constants.T_ABSTRACT,re:/^abstract(?=\s)/i},{value:r.Constants.T_IMPLEMENTS,re:/^implements(?=\s)/i},{value:r.Constants.T_INTERFACE,re:/^interface(?=\s)/i},{value:r.Constants.T_CONST,re:/^const(?=\s)/i},{value:r.Constants.T_STATIC,re:/^static(?=\s)/i},{value:r.Constants.T_FINAL,re:/^final(?=\s)/i},{value:r.Constants.T_VAR,re:/^var(?=\s)/i},{value:r.Constants.T_GLOBAL,re:/^global(?=\s)/i},{value:r.Constants.T_CLONE,re:/^clone(?=\s)/i},{value:r.Constants.T_THROW,re:/^throw(?=\s)/i},{value:r.Constants.T_EXTENDS,re:/^extends(?=\s)/i},{value:r.Constants.T_AND_EQUAL,re:/^&=/},{value:r.Constants.T_AS,re:/^as(?=\s)/i},{value:r.Constants.T_ARRAY_CAST,re:/^\(array\)/i},{value:r.Constants.T_BOOL_CAST,re:/^\((bool|boolean)\)/i},{value:r.Constants.T_DOUBLE_CAST,re:/^\((real|float|double)\)/i},{value:r.Constants.T_INT_CAST,re:/^\((int|integer)\)/i},{value:r.Constants.T_OBJECT_CAST,re:/^\(object\)/i},{value:r.Constants.T_STRING_CAST,re:/^\(string\)/i},{value:r.Constants.T_UNSET_CAST,re:/^\(unset\)/i},{value:r.Constants.T_TRY,re:/^try(?=\s*{)/i},{value:r.Constants.T_CATCH,re:/^catch(?=\s*\()/i},{value:r.Constants.T_INSTANCEOF,re:/^instanceof(?=\s)/i},{value:r.Constants.T_LOGICAL_OR,re:/^or(?=\s)/i},{value:r.Constants.T_LOGICAL_AND,re:/^and(?=\s)/i},{value:r.Constants.T_LOGICAL_XOR,re:/^xor(?=\s)/i},{value:r.Constants.T_BOOLEAN_AND,re:/^&&/},{value:r.Constants.T_BOOLEAN_OR,re:/^\|\|/},{value:r.Constants.T_CONTINUE,re:/^continue(?=\s|;)/i},{value:r.Constants.T_BREAK,re:/^break(?=\s|;)/i},{value:r.Constants.T_ENDDECLARE,re:/^enddeclare(?=\s|;)/i},{value:r.Constants.T_ENDFOR,re:/^endfor(?=\s|;)/i},{value:r.Constants.T_ENDFOREACH,re:/^endforeach(?=\s|;)/i},{value:r.Constants.T_ENDIF,re:/^endif(?=\s|;)/i},{value:r.Constants.T_ENDSWITCH,re:/^endswitch(?=\s|;)/i},{value:r.Constants.T_ENDWHILE,re:/^endwhile(?=\s|;)/i},{value:r.Constants.T_CASE,re:/^case(?=\s)/i},{value:r.Constants.T_DEFAULT,re:/^default(?=\s|:)/i},{value:r.Constants.T_SWITCH,re:/^switch(?=[ (])/i},{value:r.Constants.T_EXIT,re:/^(exit|die)(?=[ \(;])/i},{value:r.Constants.T_CLOSE_TAG,re:/^(\?\>|\%\>|\<\/script\>)\s?\s?/i,func:function(e){return c=!1,e}},{value:r.Constants.T_DOUBLE_ARROW,re:/^\=\>/},{value:r.Constants.T_DOUBLE_COLON,re:/^\:\:/},{value:r.Constants.T_METHOD_C,re:/^__METHOD__/},{value:r.Constants.T_LINE,re:/^__LINE__/},{value:r.Constants.T_FILE,re:/^__FILE__/},{value:r.Constants.T_FUNC_C,re:/^__FUNCTION__/},{value:r.Constants.T_NS_C,re:/^__NAMESPACE__/},{value:r.Constants.T_TRAIT_C,re:/^__TRAIT__/},{value:r.Constants.T_DIR,re:/^__DIR__/},{value:r.Constants.T_CLASS_C,re:/^__CLASS__/},{value:r.Constants.T_INC,re:/^\+\+/},{value:r.Constants.T_DEC,re:/^\-\-/},{value:r.Constants.T_CONCAT_EQUAL,re:/^\.\=/},{value:r.Constants.T_DIV_EQUAL,re:/^\/\=/},{value:r.Constants.T_XOR_EQUAL,re:/^\^\=/},{value:r.Constants.T_MUL_EQUAL,re:/^\*\=/},{value:r.Constants.T_MOD_EQUAL,re:/^\%\=/},{value:r.Constants.T_SL_EQUAL,re:/^<<=/},{value:r.Constants.T_START_HEREDOC,re:/^<<<[A-Z_0-9]+\s/i,func:function(e){return n=e.substring(3,e.length-1),e}},{value:r.Constants.T_SL,re:/^<</},{value:r.Constants.T_IS_SMALLER_OR_EQUAL,re:/^<=/},{value:r.Constants.T_SR_EQUAL,re:/^>>=/},{value:r.Constants.T_SR,re:/^>>/},{value:r.Constants.T_IS_GREATER_OR_EQUAL,re:/^>=/},{value:r.Constants.T_OR_EQUAL,re:/^\|\=/},{value:r.Constants.T_PLUS_EQUAL,re:/^\+\=/},{value:r.Constants.T_MINUS_EQUAL,re:/^-\=/},{value:r.Constants.T_OBJECT_OPERATOR,re:/^\-\>/i},{value:r.Constants.T_CLASS,re:/^class(?=[\s\{])/i,afterWhitespace:!0},{value:r.Constants.T_TRAIT,re:/^trait(?=[\s]+[A-Za-z])/i},{value:r.Constants.T_PUBLIC,re:/^public(?=[\s])/i},{value:r.Constants.T_PRIVATE,re:/^private(?=[\s])/i},{value:r.Constants.T_PROTECTED,re:/^protected(?=[\s])/i},{value:r.Constants.T_ARRAY,re:/^array(?=\s*?\()/i},{value:r.Constants.T_EMPTY,re:/^empty(?=[ \(])/i},{value:r.Constants.T_ISSET,re:/^isset(?=[ \(])/i},{value:r.Constants.T_UNSET,re:/^unset(?=[ \(])/i},{value:r.Constants.T_RETURN,re:/^return(?=[ "'(;])/i},{value:r.Constants.T_FUNCTION,re:/^function(?=[ "'(;])/i},{value:r.Constants.T_ECHO,re:/^echo(?=[ "'(;])/i},{value:r.Constants.T_LIST,re:/^list(?=\s*?\()/i},{value:r.Constants.T_PRINT,re:/^print(?=[ "'(;])/i},{value:r.Constants.T_INCLUDE,re:/^include(?=[ "'(;])/i},{value:r.Constants.T_INCLUDE_ONCE,re:/^include_once(?=[ "'(;])/i},{value:r.Constants.T_REQUIRE,re:/^require(?=[ "'(;])/i},{value:r.Constants.T_REQUIRE_ONCE,re:/^require_once(?=[ "'(;])/i},{value:r.Constants.T_NEW,re:/^new(?=[ ])/i},{value:r.Constants.T_COMMENT,re:/^\/\*([\S\s]*?)(?:\*\/|$)/},{value:r.Constants.T_COMMENT,re:/^\/\/.*(\s)?/},{value:r.Constants.T_COMMENT,re:/^\#.*(\s)?/},{value:r.Constants.T_ELSEIF,re:/^elseif(?=[\s(])/i},{value:r.Constants.T_GOTO,re:/^goto(?=[\s(])/i},{value:r.Constants.T_ELSE,re:/^else(?=[\s{:])/i},{value:r.Constants.T_IF,re:/^if(?=[\s(])/i},{value:r.Constants.T_DO,re:/^do(?=[ {])/i},{value:r.Constants.T_WHILE,re:/^while(?=[ (])/i},{value:r.Constants.T_FOREACH,re:/^foreach(?=[ (])/i},{value:r.Constants.T_ISSET,re:/^isset(?=[ (])/i},{value:r.Constants.T_IS_IDENTICAL,re:/^===/},{value:r.Constants.T_IS_EQUAL,re:/^==/},{value:r.Constants.T_IS_NOT_IDENTICAL,re:/^\!==/},{value:r.Constants.T_IS_NOT_EQUAL,re:/^(\!=|\<\>)/},{value:r.Constants.T_FOR,re:/^for(?=[ (])/i},{value:r.Constants.T_DNUMBER,re:/^[0-9]*\.[0-9]+([eE][-]?[0-9]*)?/},{value:r.Constants.T_LNUMBER,re:/^(0x[0-9A-F]+|[0-9]+)/i},{value:r.Constants.T_OPEN_TAG_WITH_ECHO,re:/^(\<\?=|\<\%=)/i},{value:r.Constants.T_OPEN_TAG,re:u},{value:r.Constants.T_VARIABLE,re:/^\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{value:r.Constants.T_WHITESPACE,re:/^\s+/},{value:r.Constants.T_CONSTANT_ENCAPSED_STRING,re:/^("(?:[^"\\]|\\[\s\S])*"|'(?:[^'\\]|\\[\s\S])*')/,func:function(e,t){var n=0,i,s=0;if(e.substring(0,1)==="'")return e;var o=e.match(/(?:[^\\]|\\.)*[^\\]\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/g);if(o!==null){while(e.length>0){i=e.length,o=e.match(/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\@\^\%\"\'\{\}]/),o!==null&&(f.push(o[0]),e=e.substring(1),n>0&&o[0]==="}"&&n--,o[0]==="["&&s++,o[0]==="]"&&s--),o=e.match(/^\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/);if(o!==null){f.push([parseInt(r.Constants.T_VARIABLE,10),o[0],l]),e=e.substring(o[0].length),o=e.match(/^(\-\>)\s*([a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*)\s*(\()/),o!==null&&(f.push([parseInt(r.Constants.T_OBJECT_OPERATOR,10),o[1],l]),f.push([parseInt(r.Constants.T_STRING,10),o[2],l]),o[3]&&f.push(o[3]),e=e.substring(o[0].length));if(e.match(/^\[/g)!==null)continue}var u;n>0?u=/^([^\\\$"{}\]\(\)\->]|\\.)+/g:u=/^([^\\\$"{]|\\.|{[^\$]|\$(?=[^a-zA-Z_\x7f-\uffff]))+/g;var a,c;while((o=e.match(u))!==null){if(e.length===1)throw new Error(o);a=0,n>0?(c=o[0].match(/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\$\~]/))?f.push(c[0]):a=r.Constants.T_STRING:a=r.Constants.T_ENCAPSED_AND_WHITESPACE,a&&f.push([parseInt(a,10),o[0].replace(/\n/g,"\\n").replace(/\r/g,""),l]),l+=o[0].split("\n").length-1,e=e.substring(o[0].length)}n>0&&e.match(/^\->/)!==null&&(f.push([parseInt(r.Constants.T_OBJECT_OPERATOR,10),"->",l]),e=e.substring(2)),e.match(/^{\$/)!==null&&(f.push([parseInt(r.Constants.T_CURLY_OPEN,10),"{",l]),e=e.substring(1),n++);if(i===e.length&&(o=e.match(/^(([^\\]|\\.)*?[^\\]\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*)/g))!==null)return}return undefined}return e=e.replace(/\r/g,""),e}},{value:r.Constants.T_NS_SEPARATOR,re:/^\\(?=[a-zA-Z_])/},{value:r.Constants.T_STRING,re:/^[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{value:-1,re:/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\"\'\$\~]/}],f=[],l=1,c=!1,h=!0;if(e===null)return f;typeof e!="string"&&(e=e.toString());while(e.length>0&&h===!0)if(c===!0)if(n!==undefined){var p=new RegExp("([\\S\\s]*?)(\\r\\n|\\n|\\r)("+n+")(;|\\r\\n|\\n)","i"),d=e.match(p);d!==null&&(f.push([parseInt(r.Constants.T_ENCAPSED_AND_WHITESPACE,10),d[1].replace(/^\n/g,"").replace(/\\\$/g,"$")+"\n",l]),l+=d[1].split("\n").length,f.push([parseInt(r.Constants.T_END_HEREDOC,10),d[3],l]),e=e.substring(d[1].length+d[2].length+d[3].length),n=undefined);if(d===null)throw Error("sup")}else h=a.some(function(t){if(t.afterWhitespace===!0){var n=f[f.length-1];if(!Array.isArray(n)||n[0]!==r.Constants.T_WHITESPACE&&n[0]!==r.Constants.T_OPEN_TAG&&n[0]!==r.Constants.T_COMMENT)return!1}var i=e.match(t.re);if(i!==null){if(t.value!==-1){var s=i[0];t.func!==undefined&&(s=t.func(s,t)),s!==undefined&&(f.push([parseInt(t.value,10),s,l]),l+=s.split("\n").length-1)}else f.push(i[0]);return e=e.substring(i[0].length),!0}return!1});else{var d=o.exec(e);if(d===null)return f.push([parseInt(r.Constants.T_INLINE_HTML,10),e.replace(/^\n/,""),l]),f;if(d.index>0){var v=e.substring(0,d.index);f.push([parseInt(r.Constants.T_INLINE_HTML,10),v,l]),l+=v.split("\n").length-1,e=e.substring(d.index)}c=!0}return f},r.Parser=function(e,t){var n=this.yybase,i=this.yydefault,s=this.yycheck,o=this.yyaction,u=this.yylen,a=this.yygbase,f=this.yygcheck,l=this.yyp,c=this.yygoto,h=this.yylhs,p=this.terminals,d=this.translate,v=this.yygdefault;this.pos=-1,this.line=1,this.tokenMap=this.createTokenMap(),this.dropTokens={},this.dropTokens[r.Constants.T_WHITESPACE]=1,this.dropTokens[r.Constants.T_OPEN_TAG]=1;var m=[];e.forEach(function(e,t){typeof e=="object"&&e[0]===r.Constants.T_OPEN_TAG_WITH_ECHO?(m.push([r.Constants.T_OPEN_TAG,e[1],e[2]]),m.push([r.Constants.T_ECHO,e[1],e[2]])):m.push(e)}),this.tokens=m;var g=this.TOKEN_NONE;this.startAttributes={startLine:1},this.endAttributes={};var y=[this.startAttributes],b=0,w=[b];this.yyastk=[],this.stackPos=0;var E,S;for(;;){if(n[b]===0)E=i[b];else{g===this.TOKEN_NONE&&(S=this.getNextToken(),g=S>=0&&S<this.TOKEN_MAP_SIZE?d[S]:this.TOKEN_INVALID,y[this.stackPos]=this.startAttributes);if(((E=n[b]+g)>=0&&E<this.YYLAST&&s[E]===g||b<this.YY2TBLSTATE&&(E=n[b+this.YYNLSTATES]+g)>=0&&E<this.YYLAST&&s[E]===g)&&(E=o[E])!==this.YYDEFAULT)if(E>0){++this.stackPos,w[this.stackPos]=b=E,this.yyastk[this.stackPos]=this.tokenValue,y[this.stackPos]=this.startAttributes,g=this.TOKEN_NONE;if(E<this.YYNLSTATES)continue;E-=this.YYNLSTATES}else E=-E;else E=i[b]}for(;;){if(E===0)return this.yyval;if(E===this.YYUNEXPECTED){if(t!==!0){var N=[];for(var C=0;C<this.TOKEN_MAP_SIZE;++C)if((E=n[b]+C)>=0&&E<this.YYLAST&&s[E]==C||b<this.YY2TBLSTATE&&(E=n[b+this.YYNLSTATES]+C)&&E<this.YYLAST&&s[E]==C)if(o[E]!=this.YYUNEXPECTED){if(N.length==4){N=[];break}N.push(this.terminals[C])}var k="";throw N.length&&(k=", expecting "+N.join(" or ")),new r.ParseError("syntax error, unexpected "+p[g]+k,this.startAttributes.startLine)}return this.startAttributes.startLine}for(var x in this.endAttributes)y[this.stackPos-u[E]][x]=this.endAttributes[x];try{this["yyn"+E](y[this.stackPos-u[E]])}catch(T){throw T}this.stackPos-=u[E],E=h[E],(l=a[E]+w[this.stackPos])>=0&&l<this.YYGLAST&&f[l]===E?b=c[l]:b=v[E],++this.stackPos,w[this.stackPos]=b,this.yyastk[this.stackPos]=this.yyval,y[this.stackPos]=this.startAttributes;if(b<this.YYNLSTATES)break;E=b-this.YYNLSTATES}}},r.ParseError=function(e,t){this.message=e,this.line=t},r.Parser.prototype.MODIFIER_PUBLIC=1,r.Parser.prototype.MODIFIER_PROTECTED=2,r.Parser.prototype.MODIFIER_PRIVATE=4,r.Parser.prototype.MODIFIER_STATIC=8,r.Parser.prototype.MODIFIER_ABSTRACT=16,r.Parser.prototype.MODIFIER_FINAL=32,r.Parser.prototype.getNextToken=function(){this.startAttributes={},this.endAttributes={};var e,t;while(this.tokens[++this.pos]!==undefined){e=this.tokens[this.pos];if(typeof e=="string")return this.startAttributes.startLine=this.line,this.endAttributes.endLine=this.line,'b"'===e?(this.tokenValue='b"','"'.charCodeAt(0)):(this.tokenValue=e,e.charCodeAt(0));this.line+=(t=e[1].match(/\n/g))===null?0:t.length;if(r.Constants.T_COMMENT===e[0])Array.isArray(this.startAttributes.comments)||(this.startAttributes.comments=[]),this.startAttributes.comments.push({type:"comment",comment:e[1],line:e[2]});else if(r.Constants.T_DOC_COMMENT===e[0])this.startAttributes.comments.push(new PHPParser_Comment_Doc(e[1],e[2]));else if(this.dropTokens[e[0]]===undefined)return this.tokenValue=e[1],this.startAttributes.startLine=e[2],this.endAttributes.endLine=this.line,this.tokenMap[e[0]]}return this.startAttributes.startLine=this.line,0},r.Parser.prototype.tokenName=function(e){var t=["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR"],n="UNKNOWN";return t.some(function(t){return r.Constants[t]===e?(n=t,!0):!1}),n},r.Parser.prototype.createTokenMap=function(){var e={},t,n,i=r.Constants.T_PAAMAYIM_NEKUDOTAYIM;for(n=256;n<1e3;++n)i===n?e[n]=this.T_PAAMAYIM_NEKUDOTAYIM:r.Constants.T_OPEN_TAG_WITH_ECHO===n?e[n]=r.Constants.T_ECHO:r.Constants.T_CLOSE_TAG===n?e[n]=59:"UNKNOWN"!==(t=this.tokenName(n))&&(e[n]=this[t]);return e};var i=function(){this.yyval=this.yyastk[this.stackPos-0]};r.Parser.prototype.MakeArray=function(e){return Array.isArray(e)?e:[e]},r.Parser.prototype.parseString=function(e){var t=0;return"b"===e[0]&&(t=1),"'"===e[t]?e=e.replace(["\\\\","\\'"],["\\","'"]):e=this.parseEscapeSequences(e,'"'),e},r.Parser.prototype.parseEscapeSequences=function(e,t){undefined!==t&&(e=e.replace(new RegExp("\\"+t,"g"),t));var n={"\\":"\\",$:"$",n:"\n",r:"\r",t:"	",f:"\f",v:"",e:""};return e.replace(/~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3})~/g,function(e){var t=e[1];return n[t]!==undefined?n[t]:"x"===t[0]||"X"===t[0]?chr(hexdec(t)):chr(octdec(t))})},r.Parser.prototype.TOKEN_NONE=-1,r.Parser.prototype.TOKEN_INVALID=149,r.Parser.prototype.TOKEN_MAP_SIZE=384,r.Parser.prototype.YYLAST=913,r.Parser.prototype.YY2TBLSTATE=328,r.Parser.prototype.YYGLAST=415,r.Parser.prototype.YYNLSTATES=544,r.Parser.prototype.YYUNEXPECTED=32767,r.Parser.prototype.YYDEFAULT=-32766,r.Parser.prototype.YYERRTOK=256,r.Parser.prototype.T_INCLUDE=257,r.Parser.prototype.T_INCLUDE_ONCE=258,r.Parser.prototype.T_EVAL=259,r.Parser.prototype.T_REQUIRE=260,r.Parser.prototype.T_REQUIRE_ONCE=261,r.Parser.prototype.T_LOGICAL_OR=262,r.Parser.prototype.T_LOGICAL_XOR=263,r.Parser.prototype.T_LOGICAL_AND=264,r.Parser.prototype.T_PRINT=265,r.Parser.prototype.T_PLUS_EQUAL=266,r.Parser.prototype.T_MINUS_EQUAL=267,r.Parser.prototype.T_MUL_EQUAL=268,r.Parser.prototype.T_DIV_EQUAL=269,r.Parser.prototype.T_CONCAT_EQUAL=270,r.Parser.prototype.T_MOD_EQUAL=271,r.Parser.prototype.T_AND_EQUAL=272,r.Parser.prototype.T_OR_EQUAL=273,r.Parser.prototype.T_XOR_EQUAL=274,r.Parser.prototype.T_SL_EQUAL=275,r.Parser.prototype.T_SR_EQUAL=276,r.Parser.prototype.T_BOOLEAN_OR=277,r.Parser.prototype.T_BOOLEAN_AND=278,r.Parser.prototype.T_IS_EQUAL=279,r.Parser.prototype.T_IS_NOT_EQUAL=280,r.Parser.prototype.T_IS_IDENTICAL=281,r.Parser.prototype.T_IS_NOT_IDENTICAL=282,r.Parser.prototype.T_IS_SMALLER_OR_EQUAL=283,r.Parser.prototype.T_IS_GREATER_OR_EQUAL=284,r.Parser.prototype.T_SL=285,r.Parser.prototype.T_SR=286,r.Parser.prototype.T_INSTANCEOF=287,r.Parser.prototype.T_INC=288,r.Parser.prototype.T_DEC=289,r.Parser.prototype.T_INT_CAST=290,r.Parser.prototype.T_DOUBLE_CAST=291,r.Parser.prototype.T_STRING_CAST=292,r.Parser.prototype.T_ARRAY_CAST=293,r.Parser.prototype.T_OBJECT_CAST=294,r.Parser.prototype.T_BOOL_CAST=295,r.Parser.prototype.T_UNSET_CAST=296,r.Parser.prototype.T_NEW=297,r.Parser.prototype.T_CLONE=298,r.Parser.prototype.T_EXIT=299,r.Parser.prototype.T_IF=300,r.Parser.prototype.T_ELSEIF=301,r.Parser.prototype.T_ELSE=302,r.Parser.prototype.T_ENDIF=303,r.Parser.prototype.T_LNUMBER=304,r.Parser.prototype.T_DNUMBER=305,r.Parser.prototype.T_STRING=306,r.Parser.prototype.T_STRING_VARNAME=307,r.Parser.prototype.T_VARIABLE=308,r.Parser.prototype.T_NUM_STRING=309,r.Parser.prototype.T_INLINE_HTML=310,r.Parser.prototype.T_CHARACTER=311,r.Parser.prototype.T_BAD_CHARACTER=312,r.Parser.prototype.T_ENCAPSED_AND_WHITESPACE=313,r.Parser.prototype.T_CONSTANT_ENCAPSED_STRING=314,r.Parser.prototype.T_ECHO=315,r.Parser.prototype.T_DO=316,r.Parser.prototype.T_WHILE=317,r.Parser.prototype.T_ENDWHILE=318,r.Parser.prototype.T_FOR=319,r.Parser.prototype.T_ENDFOR=320,r.Parser.prototype.T_FOREACH=321,r.Parser.prototype.T_ENDFOREACH=322,r.Parser.prototype.T_DECLARE=323,r.Parser.prototype.T_ENDDECLARE=324,r.Parser.prototype.T_AS=325,r.Parser.prototype.T_SWITCH=326,r.Parser.prototype.T_ENDSWITCH=327,r.Parser.prototype.T_CASE=328,r.Parser.prototype.T_DEFAULT=329,r.Parser.prototype.T_BREAK=330,r.Parser.prototype.T_CONTINUE=331,r.Parser.prototype.T_GOTO=332,r.Parser.prototype.T_FUNCTION=333,r.Parser.prototype.T_CONST=334,r.Parser.prototype.T_RETURN=335,r.Parser.prototype.T_TRY=336,r.Parser.prototype.T_CATCH=337,r.Parser.prototype.T_THROW=338,r.Parser.prototype.T_USE=339,r.Parser.prototype.T_INSTEADOF=340,r.Parser.prototype.T_GLOBAL=341,r.Parser.prototype.T_STATIC=342,r.Parser.prototype.T_ABSTRACT=343,r.Parser.prototype.T_FINAL=344,r.Parser.prototype.T_PRIVATE=345,r.Parser.prototype.T_PROTECTED=346,r.Parser.prototype.T_PUBLIC=347,r.Parser.prototype.T_VAR=348,r.Parser.prototype.T_UNSET=349,r.Parser.prototype.T_ISSET=350,r.Parser.prototype.T_EMPTY=351,r.Parser.prototype.T_HALT_COMPILER=352,r.Parser.prototype.T_CLASS=353,r.Parser.prototype.T_TRAIT=354,r.Parser.prototype.T_INTERFACE=355,r.Parser.prototype.T_EXTENDS=356,r.Parser.prototype.T_IMPLEMENTS=357,r.Parser.prototype.T_OBJECT_OPERATOR=358,r.Parser.prototype.T_DOUBLE_ARROW=359,r.Parser.prototype.T_LIST=360,r.Parser.prototype.T_ARRAY=361,r.Parser.prototype.T_CALLABLE=362,r.Parser.prototype.T_CLASS_C=363,r.Parser.prototype.T_TRAIT_C=364,r.Parser.prototype.T_METHOD_C=365,r.Parser.prototype.T_FUNC_C=366,r.Parser.prototype.T_LINE=367,r.Parser.prototype.T_FILE=368,r.Parser.prototype.T_COMMENT=369,r.Parser.prototype.T_DOC_COMMENT=370,r.Parser.prototype.T_OPEN_TAG=371,r.Parser.prototype.T_OPEN_TAG_WITH_ECHO=372,r.Parser.prototype.T_CLOSE_TAG=373,r.Parser.prototype.T_WHITESPACE=374,r.Parser.prototype.T_START_HEREDOC=375,r.Parser.prototype.T_END_HEREDOC=376,r.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES=377,r.Parser.prototype.T_CURLY_OPEN=378,r.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM=379,r.Parser.prototype.T_NAMESPACE=380,r.Parser.prototype.T_NS_C=381,r.Parser.prototype.T_DIR=382,r.Parser.prototype.T_NS_SEPARATOR=383,r.Parser.prototype.terminals=["$EOF","error","T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","','","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","'='","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","'?'","':'","T_BOOLEAN_OR","T_BOOLEAN_AND","'|'","'^'","'&'","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","'<'","T_IS_SMALLER_OR_EQUAL","'>'","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","'+'","'-'","'.'","'*'","'/'","'%'","'!'","T_INSTANCEOF","'~'","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","'@'","'['","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR","';'","'{'","'}'","'('","')'","'$'","']'","'`'","'\"'","???"],r.Parser.prototype.translate=[0,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,47,148,149,145,46,30,149,143,144,44,41,7,42,43,45,149,149,149,149,149,149,149,149,149,149,25,140,35,12,37,24,59,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,60,149,146,29,149,147,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,141,28,142,49,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,1,2,3,4,5,6,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,26,27,31,32,33,34,36,38,39,40,48,50,51,52,53,54,55,56,57,58,61,62,63,64,65,66,67,68,69,70,71,72,73,74,149,149,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,149,149,149,149,149,149,131,132,133,134,135,136,137,138,139],r.Parser.prototype.yyaction=[61,62,363,63,64,-32766,-32766,-32766,509,65,708,709,710,707,706,705,-32766,-32766,-32766,-32766,-32766,-32766,132,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767,-32766,335,-32766,-32766,-32766,-32766,-32766,66,67,351,663,664,40,68,548,69,232,233,70,71,72,73,74,75,76,77,30,246,78,336,364,-112,0,469,833,834,365,641,890,436,590,41,835,53,27,366,294,367,687,368,921,369,923,922,370,-32766,-32766,-32766,42,43,371,339,126,44,372,337,79,297,349,292,293,-32766,918,-32766,-32766,373,374,375,376,377,391,199,361,338,573,613,378,379,380,381,845,839,840,841,842,836,837,253,-32766,87,88,89,391,843,838,338,597,519,128,80,129,273,332,257,261,47,673,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,799,247,884,108,109,110,226,247,21,-32766,310,-32766,-32766,-32766,642,548,-32766,-32766,-32766,-32766,56,353,-32766,-32766,-32766,55,-32766,-32766,-32766,-32766,-32766,58,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766,557,-32766,-32766,518,-32766,548,890,-32766,390,-32766,228,252,-32766,-32766,-32766,-32766,-32766,275,-32766,234,-32766,587,588,-32766,-32766,-32766,-32766,-32766,-32766,-32766,46,236,-32766,-32766,281,-32766,682,348,-32766,390,-32766,346,333,521,-32766,-32766,-32766,271,911,262,237,446,911,-32766,894,59,700,358,135,548,123,538,35,-32766,333,122,-32766,-32766,-32766,271,-32766,124,-32766,692,-32766,-32766,-32766,-32766,700,273,22,-32766,-32766,-32766,-32766,239,-32766,-32766,612,-32766,548,134,-32766,390,-32766,462,354,-32766,-32766,-32766,-32766,-32766,227,-32766,238,-32766,845,542,-32766,856,611,200,-32766,-32766,-32766,259,280,-32766,-32766,201,-32766,855,129,-32766,390,130,202,333,206,-32766,-32766,-32766,271,-32766,-32766,-32766,125,601,-32766,136,299,700,489,28,548,105,106,107,-32766,498,499,-32766,-32766,-32766,207,-32766,133,-32766,525,-32766,-32766,-32766,-32766,663,664,527,-32766,-32766,-32766,-32766,528,-32766,-32766,610,-32766,548,427,-32766,390,-32766,532,539,-32766,-32766,-32766,-32766,-32766,240,-32766,247,-32766,697,543,-32766,554,523,608,-32766,-32766,-32766,686,535,-32766,-32766,54,-32766,57,60,-32766,390,246,-155,278,345,-32766,-32766,-32766,506,347,-152,471,402,403,-32766,405,404,272,493,416,548,318,417,505,-32766,517,548,-32766,-32766,-32766,549,-32766,562,-32766,916,-32766,-32766,-32766,-32766,564,826,848,-32766,-32766,-32766,-32766,694,-32766,-32766,485,-32766,548,487,-32766,390,-32766,504,802,-32766,-32766,-32766,-32766,-32766,279,-32766,911,-32766,502,492,-32766,413,483,269,-32766,-32766,-32766,243,337,-32766,-32766,418,-32766,454,229,-32766,390,274,373,374,344,-32766,-32766,-32766,360,614,-32766,573,613,378,379,-274,548,615,-332,844,-32766,258,51,-32766,-32766,-32766,270,-32766,346,-32766,52,-32766,260,0,-32766,-333,-32766,-32766,-32766,-32766,-32766,-32766,205,-32766,-32766,49,-32766,548,424,-32766,390,-32766,-266,264,-32766,-32766,-32766,-32766,-32766,409,-32766,343,-32766,265,312,-32766,470,513,-275,-32766,-32766,-32766,920,337,-32766,-32766,530,-32766,531,600,-32766,390,592,373,374,578,581,-32766,-32766,644,629,-32766,573,613,378,379,635,548,636,576,627,-32766,625,693,-32766,-32766,-32766,691,-32766,591,-32766,582,-32766,203,204,-32766,584,583,-32766,-32766,-32766,-32766,586,599,-32766,-32766,589,-32766,690,558,-32766,390,197,683,919,86,520,522,-32766,524,833,834,529,533,-32766,534,537,541,835,48,111,112,113,114,115,116,117,118,119,120,121,127,31,633,337,330,634,585,-32766,32,291,337,330,478,373,374,917,291,891,889,875,373,374,553,613,378,379,737,739,887,553,613,378,379,824,451,675,839,840,841,842,836,837,320,895,277,885,23,33,843,838,556,277,337,330,-32766,34,-32766,555,291,36,37,38,373,374,39,45,50,81,82,83,84,553,613,378,379,-32767,-32767,-32767,-32767,103,104,105,106,107,337,85,131,137,337,138,198,224,225,277,373,374,-332,230,373,374,24,337,231,573,613,378,379,573,613,378,379,373,374,235,248,249,250,337,251,0,573,613,378,379,276,329,331,373,374,-32766,337,574,490,792,337,609,573,613,378,379,373,374,25,300,373,374,319,337,795,573,613,378,379,573,613,378,379,373,374,516,355,359,445,482,796,507,573,613,378,379,508,548,337,890,775,791,337,604,803,808,806,698,373,374,888,807,373,374,-32766,-32766,-32766,573,613,378,379,573,613,378,379,873,832,804,872,851,-32766,809,-32766,-32766,-32766,-32766,805,20,26,29,298,480,515,770,778,827,457,0,900,455,774,0,0,0,874,870,886,823,915,852,869,488,0,391,793,0,338,0,0,0,340,0,273],r.Parser.prototype.yycheck=[2,3,4,5,6,8,9,10,70,11,104,105,106,107,108,109,8,9,10,8,9,24,60,26,27,28,29,30,31,32,33,34,24,7,26,27,28,29,30,41,42,7,123,124,7,47,70,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,144,0,75,68,69,70,25,72,70,74,7,76,77,78,79,7,81,142,83,70,85,72,73,88,8,9,10,92,93,94,95,7,97,98,95,100,7,7,103,104,24,142,26,27,105,106,111,112,113,136,7,7,139,114,115,116,117,122,123,132,125,126,127,128,129,130,131,8,8,9,10,136,137,138,139,140,141,25,143,141,145,142,147,148,24,72,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,144,48,72,44,45,46,30,48,144,64,72,8,9,10,140,70,8,9,10,74,60,25,77,78,79,60,81,24,83,26,85,60,24,88,26,27,28,92,93,94,64,140,97,98,70,100,70,72,103,104,74,145,7,77,78,79,111,81,7,83,30,85,140,140,88,8,9,10,92,93,94,133,134,97,98,145,100,140,7,103,104,24,139,96,141,140,141,111,101,75,75,30,70,75,64,70,60,110,121,12,70,141,25,143,74,96,141,77,78,79,101,81,141,83,140,85,140,141,88,110,145,144,92,93,94,64,7,97,98,142,100,70,141,103,104,74,145,141,77,78,79,111,81,7,83,30,85,132,25,88,132,142,12,92,93,94,120,60,97,98,12,100,148,141,103,104,141,12,96,12,140,141,111,101,8,9,10,141,25,64,90,91,110,65,66,70,41,42,43,74,65,66,77,78,79,12,81,25,83,25,85,140,141,88,123,124,25,92,93,94,64,25,97,98,142,100,70,120,103,104,74,25,25,77,78,79,111,81,30,83,48,85,140,141,88,140,141,30,92,93,94,140,141,97,98,60,100,60,60,103,104,61,72,75,70,140,141,111,67,70,87,99,70,70,64,70,72,102,89,70,70,71,70,70,74,70,70,77,78,79,70,81,70,83,70,85,140,141,88,70,144,70,92,93,94,64,70,97,98,72,100,70,72,103,104,74,72,72,77,78,79,111,81,75,83,75,85,89,86,88,79,101,118,92,93,94,87,95,97,98,87,100,87,87,103,104,118,105,106,95,140,141,111,95,115,64,114,115,116,117,135,70,115,120,132,74,120,140,77,78,79,119,81,139,83,140,85,120,-1,88,120,140,141,92,93,94,64,121,97,98,121,100,70,122,103,104,74,135,135,77,78,79,111,81,139,83,139,85,135,135,88,135,135,135,92,93,94,142,95,97,98,140,100,140,140,103,104,140,105,106,140,140,141,111,140,140,64,114,115,116,117,140,70,140,140,140,74,140,140,77,78,79,140,81,140,83,140,85,41,42,88,140,140,141,92,93,94,140,140,97,98,140,100,140,140,103,104,60,140,142,141,141,141,111,141,68,69,141,141,72,141,141,141,76,12,13,14,15,16,17,18,19,20,21,22,23,141,143,142,95,96,142,140,141,143,101,95,96,142,105,106,142,101,142,142,142,105,106,114,115,116,117,50,51,142,114,115,116,117,142,123,142,125,126,127,128,129,130,131,142,136,142,144,143,137,138,142,136,95,96,143,143,145,142,101,143,143,143,105,106,143,143,143,143,143,143,143,114,115,116,117,35,36,37,38,39,40,41,42,43,95,143,143,143,95,143,143,143,143,136,105,106,120,143,105,106,144,95,143,114,115,116,117,114,115,116,117,105,106,143,143,143,143,95,143,-1,114,115,116,117,143,143,143,105,106,143,95,142,80,146,95,142,114,115,116,117,105,106,144,144,105,106,144,95,142,114,115,116,117,114,115,116,117,105,106,82,144,144,144,144,142,84,114,115,116,117,144,70,95,72,144,144,95,142,144,146,144,142,105,106,146,144,105,106,8,9,10,114,115,116,117,114,115,116,117,144,144,144,144,144,24,104,26,27,28,29,144,144,144,144,144,144,144,144,144,144,144,-1,144,144,144,-1,-1,-1,146,146,146,146,146,146,146,146,-1,136,147,-1,139,-1,-1,-1,143,-1,145],r.Parser.prototype.yybase=[0,574,581,623,655,2,718,402,747,659,672,688,743,701,705,483,483,483,483,483,351,356,366,366,367,366,344,-2,-2,-2,200,200,231,231,231,231,231,231,231,231,200,231,451,482,532,316,370,115,146,285,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,401,44,474,429,476,481,487,488,739,740,741,734,733,416,736,539,541,342,542,543,552,557,559,536,567,737,755,569,735,738,123,123,123,123,123,123,123,123,123,122,11,336,336,336,336,336,336,336,336,336,336,336,336,336,336,336,227,227,173,577,577,577,577,577,577,577,577,577,577,577,79,178,846,8,-3,-3,-3,-3,642,706,706,706,706,157,179,242,431,431,360,431,525,368,767,767,767,767,767,767,767,767,767,767,767,767,350,375,315,315,652,652,-81,-81,-81,-81,251,185,188,184,-62,348,195,195,195,408,392,410,1,192,129,129,129,-24,-24,-24,-24,499,-24,-24,-24,113,108,108,12,161,349,526,271,398,529,438,130,206,265,427,76,414,427,288,295,76,166,44,262,422,141,491,372,494,413,71,92,93,267,135,100,34,415,745,746,742,-38,420,-10,135,147,744,498,107,26,493,144,377,363,369,332,363,400,377,588,377,376,377,360,37,582,376,377,374,376,388,363,364,412,369,377,441,443,390,106,332,377,390,377,400,64,590,591,323,592,589,593,649,608,362,500,399,407,620,625,636,365,354,614,524,425,359,355,423,570,578,357,406,414,394,352,403,531,433,403,653,434,385,417,411,444,310,318,501,425,668,757,380,637,684,403,609,387,87,325,638,382,403,639,403,696,503,615,403,697,384,435,425,352,352,352,700,66,699,583,702,707,704,748,721,749,584,750,358,583,722,751,682,215,613,422,436,389,447,221,257,752,403,403,506,499,403,395,685,397,426,753,392,391,647,683,403,418,754,221,723,587,724,450,568,507,648,509,327,725,353,497,610,454,622,455,461,404,510,373,732,612,247,361,664,463,405,692,641,464,465,511,343,437,335,409,396,665,293,467,468,472,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,0,0,0,0,0,0,0,0,0,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,123,767,767,767,767,767,767,767,767,767,767,767,123,123,123,123,123,123,123,123,0,129,129,129,129,-94,-94,-94,767,767,767,767,767,767,0,0,0,0,0,0,0,0,0,0,0,0,-94,-94,129,129,767,767,-24,-24,-24,-24,-24,108,108,108,-24,108,145,145,145,108,108,108,100,100,0,0,0,0,0,0,0,145,0,0,0,376,0,0,0,145,260,260,221,260,260,135,0,0,425,376,0,364,376,0,0,0,0,0,0,531,0,87,637,241,425,0,0,0,0,0,0,0,425,289,289,306,0,358,0,0,0,306,241,0,0,221],r.Parser.prototype.yydefault=[3,32767,32767,1,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,104,96,110,95,106,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,358,358,122,122,122,122,122,122,122,122,316,32767,32767,32767,32767,32767,32767,32767,32767,32767,173,173,173,32767,348,348,348,348,348,348,348,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,363,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,232,233,235,236,172,125,349,362,171,199,201,250,200,177,182,183,184,185,186,187,188,189,190,191,192,176,229,228,197,313,313,316,32767,32767,32767,32767,32767,32767,32767,32767,198,202,204,203,219,220,217,218,175,221,222,223,224,157,157,157,357,357,32767,357,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,158,32767,211,212,276,276,117,117,117,117,117,32767,32767,32767,32767,284,32767,32767,32767,32767,32767,286,32767,32767,206,207,205,32767,32767,32767,32767,32767,32767,32767,32767,32767,285,32767,32767,32767,32767,32767,32767,32767,32767,334,321,272,32767,32767,32767,265,32767,107,109,32767,32767,32767,32767,302,339,32767,32767,32767,17,32767,32767,32767,370,334,32767,32767,19,32767,32767,32767,32767,227,32767,338,332,32767,32767,32767,32767,32767,32767,63,32767,32767,32767,32767,32767,63,281,63,32767,63,32767,315,287,32767,63,74,32767,72,32767,32767,76,32767,63,93,93,254,315,54,63,254,63,32767,32767,32767,32767,4,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,267,32767,323,32767,337,336,324,32767,265,32767,215,194,266,32767,196,32767,32767,270,273,32767,32767,32767,134,32767,268,180,32767,32767,32767,32767,365,32767,32767,174,32767,32767,32767,130,32767,61,332,32767,32767,355,32767,32767,332,269,208,209,210,32767,121,32767,310,32767,32767,32767,32767,32767,32767,327,32767,333,32767,32767,32767,32767,111,32767,302,32767,32767,32767,75,32767,32767,178,126,32767,32767,364,32767,32767,32767,320,32767,32767,32767,32767,32767,62,32767,32767,77,32767,32767,32767,32767,332,32767,32767,32767,115,32767,169,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,32767,332,32767,32767,32767,32767,32767,32767,32767,4,32767,151,32767,32767,32767,32767,32767,32767,32767,25,25,3,137,3,137,25,101,25,25,137,93,93,25,25,25,144,25,25,25,25,25,25,25,25],r.Parser.prototype.yygoto=[141,141,173,173,173,173,173,173,173,173,141,173,142,143,144,148,153,155,181,175,172,172,172,172,174,174,174,174,174,174,174,168,169,170,171,179,757,758,392,760,781,782,783,784,785,786,787,789,725,145,146,147,149,150,151,152,154,177,178,180,196,208,209,210,211,212,213,214,215,217,218,219,220,244,245,266,267,268,430,431,432,182,183,184,185,186,187,188,189,190,191,192,156,157,158,159,176,160,194,161,162,163,164,195,165,193,139,166,167,452,452,452,452,452,452,452,452,452,452,452,453,453,453,453,453,453,453,453,453,453,453,551,551,551,464,491,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,394,407,552,552,552,810,810,662,662,662,662,662,594,283,595,510,399,399,567,679,632,849,850,863,660,714,426,222,622,622,622,622,223,617,623,494,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,395,465,472,514,904,398,398,425,425,459,425,419,322,421,421,393,396,412,422,428,460,463,473,481,501,5,476,284,327,1,15,2,6,7,550,550,550,8,9,10,668,16,11,17,12,18,13,19,14,704,328,881,881,643,628,626,626,624,626,526,401,652,647,847,847,847,847,847,847,847,847,847,847,847,437,438,441,447,477,479,497,290,910,910,400,400,486,880,880,263,913,910,303,255,723,306,822,821,306,896,896,896,861,304,323,410,913,913,897,316,420,769,658,559,879,671,536,324,466,565,311,311,311,801,241,676,496,439,440,442,444,448,475,631,858,311,285,286,603,495,712,0,406,321,0,0,0,314,0,0,429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,411],r.Parser.prototype.yygcheck=[15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,35,35,35,35,35,35,35,35,35,35,35,86,86,86,86,86,86,86,86,86,86,86,6,6,6,21,21,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,71,7,7,7,35,35,35,35,35,35,35,29,44,29,35,86,86,12,12,12,12,12,12,12,12,75,40,35,35,35,35,40,35,35,35,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,36,36,36,104,82,82,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,13,42,42,42,2,13,2,13,13,5,5,5,13,13,13,54,13,13,13,13,13,13,13,13,67,67,83,83,5,5,5,5,5,5,5,5,5,5,93,93,93,93,93,93,93,93,93,93,93,52,52,52,52,52,52,52,4,105,105,89,89,94,84,84,92,105,105,26,92,71,4,91,91,4,84,84,84,97,30,70,30,105,105,102,27,30,72,50,10,84,55,46,9,30,11,90,90,90,80,30,56,30,85,85,85,85,85,85,43,96,90,44,44,34,77,69,-1,4,90,-1,-1,-1,4,-1,-1,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,71],r.Parser.prototype.yygbase=[0,0,-286,0,10,239,130,154,0,-10,25,-23,-29,-289,0,-30,0,0,0,0,0,83,0,0,0,0,245,84,-11,142,-28,0,0,0,-13,-88,-42,0,0,0,-344,0,-38,-12,-188,0,23,0,0,0,66,0,247,0,205,24,-18,0,0,0,0,0,0,0,0,0,0,13,0,-15,85,74,70,0,0,148,0,-14,0,0,-6,0,-35,11,47,278,-77,0,0,44,68,43,38,72,94,0,-16,109,0,0,0,0,87,0,170,34,0],r.Parser.prototype.yygdefault=[-32768,362,3,546,382,570,571,572,307,305,560,566,467,4,568,140,295,575,296,500,577,414,579,580,308,309,415,315,216,593,503,313,596,357,602,301,449,383,350,461,221,423,456,630,282,638,540,646,649,450,657,352,433,434,667,672,677,680,334,325,474,684,685,256,689,511,512,703,242,711,317,724,342,788,790,397,408,484,797,326,800,384,385,386,387,435,818,815,289,866,287,443,254,853,468,356,903,862,288,388,389,302,898,341,905,912,458],r.Parser.prototype.yylhs=[0,1,2,2,4,4,3,3,3,3,3,3,3,3,3,8,8,10,10,10,10,9,9,11,13,13,14,14,14,14,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,33,33,34,27,27,30,30,6,7,7,7,37,37,37,38,38,41,41,39,39,42,42,22,22,29,29,32,32,31,31,43,23,23,23,23,44,44,45,45,46,46,20,20,16,16,47,18,18,48,17,17,19,19,36,36,49,49,50,50,51,51,51,51,52,52,53,53,54,54,24,24,55,55,55,25,25,56,56,40,40,57,57,57,57,62,62,63,63,64,64,64,64,65,66,66,61,61,58,58,60,60,68,68,67,67,67,67,67,67,59,59,69,69,26,26,21,21,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,71,77,77,79,79,80,81,81,81,81,81,81,86,86,35,35,35,72,72,87,87,82,82,88,88,88,88,88,73,73,73,76,76,76,78,78,93,93,93,93,93,93,93,93,93,93,93,93,93,93,12,12,12,12,12,12,74,74,74,74,94,94,96,96,95,95,97,97,28,28,28,28,99,99,98,98,98,98,98,100,100,84,84,89,89,83,83,101,101,101,101,90,90,90,90,85,85,91,91,91,70,70,102,102,102,75,75,103,103,104,104,104,104,92,92,92,92,105,105,105,105,105,105,105,106,106,106],r.Parser.prototype.yylen=[1,1,2,0,1,3,1,1,1,1,3,5,4,3,3,3,1,1,3,2,4,3,1,3,2,0,1,1,1,1,3,7,10,5,7,9,5,2,3,2,3,2,3,3,3,3,1,2,5,7,8,10,5,1,5,3,3,2,1,2,8,1,3,0,1,9,7,6,5,1,2,2,0,2,0,2,0,2,1,3,1,4,1,4,1,4,1,3,3,3,4,4,5,0,2,4,3,1,1,1,4,0,2,5,0,2,6,0,2,0,3,1,0,1,3,3,5,0,1,1,1,1,0,1,3,1,2,3,1,1,2,4,3,1,1,3,2,0,3,3,8,3,1,3,0,2,4,5,4,4,3,1,1,1,3,1,1,0,1,1,2,1,1,1,1,1,1,1,3,1,3,3,1,0,1,1,6,3,4,4,1,2,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,5,4,4,4,2,2,4,2,2,2,2,2,2,2,2,2,2,2,1,4,3,3,2,9,10,3,0,4,1,3,2,4,6,8,4,4,4,1,1,1,2,3,1,1,1,1,1,1,0,3,3,4,4,0,2,3,0,1,1,0,3,1,1,1,1,1,1,1,1,1,1,1,3,2,1,1,3,2,2,4,3,1,3,3,3,0,2,0,1,3,1,3,1,1,1,1,1,6,4,3,6,4,4,4,1,3,1,2,1,1,4,1,3,6,4,4,4,4,1,4,0,1,1,3,1,3,1,1,4,0,0,2,3,1,3,1,4,2,2,2,1,2,1,4,3,3,3,6,3,1,1,1],r.Parser.prototype.yyn0=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn1=function(e){this.yyval=this.Stmt_Namespace_postprocess(this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn2=function(e){Array.isArray(this.yyastk[this.stackPos-0])?this.yyval=this.yyastk[this.stackPos-1].concat(this.yyastk[this.stackPos-0]):(this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1])},r.Parser.prototype.yyn3=function(e){this.yyval=[]},r.Parser.prototype.yyn4=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn5=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn6=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn7=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn8=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn9=function(e){this.yyval=this.Node_Stmt_HaltCompiler(e)},r.Parser.prototype.yyn10=function(e){this.yyval=this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[this.stackPos-1],e),null,e)},r.Parser.prototype.yyn11=function(e){this.yyval=this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[this.stackPos-3],e),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn12=function(e){this.yyval=this.Node_Stmt_Namespace(null,this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn13=function(e){this.yyval=this.Node_Stmt_Use(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn14=function(e){this.yyval=this.Node_Stmt_Const(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn15=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn16=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn17=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-0],e),null,e)},r.Parser.prototype.yyn18=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-2],e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn19=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-0],e),null,e)},r.Parser.prototype.yyn20=function(e){this.yyval=this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[this.stackPos-2],e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn21=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn22=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn23=function(e){this.yyval=this.Node_Const(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn24=function(e){Array.isArray(this.yyastk[this.stackPos-0])?this.yyval=this.yyastk[this.stackPos-1].concat(this.yyastk[this.stackPos-0]):(this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1])},r.Parser.prototype.yyn25=function(e){this.yyval=[]},r.Parser.prototype.yyn26=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn27=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn28=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn29=function(e){throw new Error("__halt_compiler() can only be used from the outermost scope")},r.Parser.prototype.yyn30=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn31=function(e){this.yyval=this.Node_Stmt_If(this.yyastk[this.stackPos-4],{stmts:Array.isArray(this.yyastk[this.stackPos-2])?this.yyastk[this.stackPos-2]:[this.yyastk[this.stackPos-2]],elseifs:this.yyastk[this.stackPos-1],Else:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn32=function(e){this.yyval=this.Node_Stmt_If(this.yyastk[this.stackPos-7],{stmts:this.yyastk[this.stackPos-4],elseifs:this.yyastk[this.stackPos-3],"else":this.yyastk[this.stackPos-2]},e)},r.Parser.prototype.yyn33=function(e){this.yyval=this.Node_Stmt_While(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn34=function(e){this.yyval=this.Node_Stmt_Do(this.yyastk[this.stackPos-2],Array.isArray(this.yyastk[this.stackPos-5])?this.yyastk[this.stackPos-5]:[this.yyastk[this.stackPos-5]],e)},r.Parser.prototype.yyn35=function(e){this.yyval=this.Node_Stmt_For({init:this.yyastk[this.stackPos-6],cond:this.yyastk[this.stackPos-4],loop:this.yyastk[this.stackPos-2],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn36=function(e){this.yyval=this.Node_Stmt_Switch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn37=function(e){this.yyval=this.Node_Stmt_Break(null,e)},r.Parser.prototype.yyn38=function(e){this.yyval=this.Node_Stmt_Break(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn39=function(e){this.yyval=this.Node_Stmt_Continue(null,e)},r.Parser.prototype.yyn40=function(e){this.yyval=this.Node_Stmt_Continue(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn41=function(e){this.yyval=this.Node_Stmt_Return(null,e)},r.Parser.prototype.yyn42=function(e){this.yyval=this.Node_Stmt_Return(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn43=function(e){this.yyval=this.Node_Stmt_Global(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn44=function(e){this.yyval=this.Node_Stmt_Static(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn45=function(e){this.yyval=this.Node_Stmt_Echo(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn46=function(e){this.yyval=this.Node_Stmt_InlineHTML(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn47=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn48=function(e){this.yyval=this.Node_Stmt_Unset(this.yyastk[this.stackPos-2],e)},r.Parser.prototype.yyn49=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-2],{keyVar:null,byRef:!1,stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn50=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-2],{keyVar:null,byRef:!0,stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn51=function(e){this.yyval=this.Node_Stmt_Foreach(this.yyastk[this.stackPos-7],this.yyastk[this.stackPos-2],{keyVar:this.yyastk[this.stackPos-5],byRef:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn52=function(e){this.yyval=this.Node_Stmt_Declare(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn53=function(e){this.yyval=[]},r.Parser.prototype.yyn54=function(e){this.yyval=this.Node_Stmt_TryCatch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn55=function(e){this.yyval=this.Node_Stmt_Throw(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn56=function(e){this.yyval=this.Node_Stmt_Goto(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn57=function(e){this.yyval=this.Node_Stmt_Label(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn58=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn59=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn60=function(e){this.yyval=this.Node_Stmt_Catch(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-4].substring(1),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn61=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn62=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn63=function(e){this.yyval=!1},r.Parser.prototype.yyn64=function(e){this.yyval=!0},r.Parser.prototype.yyn65=function(e){this.yyval=this.Node_Stmt_Function(this.yyastk[this.stackPos-6],{byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-4],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn66=function(e){this.yyval=this.Node_Stmt_Class(this.yyastk[this.stackPos-5],{type:this.yyastk[this.stackPos-6],Extends:this.yyastk[this.stackPos-4],Implements:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn67=function(e){this.yyval=this.Node_Stmt_Interface(this.yyastk[this.stackPos-4],{Extends:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn68=function(e){this.yyval=this.Node_Stmt_Trait(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn69=function(e){this.yyval=0},r.Parser.prototype.yyn70=function(e){this.yyval=this.MODIFIER_ABSTRACT},r.Parser.prototype.yyn71=function(e){this.yyval=this.MODIFIER_FINAL},r.Parser.prototype.yyn72=function(e){this.yyval=null},r.Parser.prototype.yyn73=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn74=function(e){this.yyval=[]},r.Parser.prototype.yyn75=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn76=function(e){this.yyval=[]},r.Parser.prototype.yyn77=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn78=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn79=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn80=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn81=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn82=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn83=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn84=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn85=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn86=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn87=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn88=function(e){this.yyval=this.Node_Stmt_DeclareDeclare(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn89=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn90=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn91=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn92=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn93=function(e){this.yyval=[]},r.Parser.prototype.yyn94=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn95=function(e){this.yyval=this.Node_Stmt_Case(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn96=function(e){this.yyval=this.Node_Stmt_Case(null,this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn97=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn98=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn99=function(e){this.yyval=Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn100=function(e){this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn101=function(e){this.yyval=[]},r.Parser.prototype.yyn102=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn103=function(e){this.yyval=this.Node_Stmt_ElseIf(this.yyastk[this.stackPos-2],Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]],e)},r.Parser.prototype.yyn104=function(e){this.yyval=[]},r.Parser.prototype.yyn105=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn106=function(e){this.yyval=this.Node_Stmt_ElseIf(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn107=function(e){this.yyval=null},r.Parser.prototype.yyn108=function(e){this.yyval=this.Node_Stmt_Else(Array.isArray(this.yyastk[this.stackPos-0])?this.yyastk[this.stackPos-0]:[this.yyastk[this.stackPos-0]],e)},r.Parser.prototype.yyn109=function(e){this.yyval=null},r.Parser.prototype.yyn110=function(e){this.yyval=this.Node_Stmt_Else(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn111=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn112=function(e){this.yyval=[]},r.Parser.prototype.yyn113=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn114=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn115=function(e){this.yyval=this.Node_Param(this.yyastk[this.stackPos-0].substring(1),null,this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn116=function(e){this.yyval=this.Node_Param(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-3],e)},r.Parser.prototype.yyn117=function(e){this.yyval=null},r.Parser.prototype.yyn118=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn119=function(e){this.yyval="array"},r.Parser.prototype.yyn120=function(e){this.yyval="callable"},r.Parser.prototype.yyn121=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn122=function(e){this.yyval=[]},r.Parser.prototype.yyn123=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn124=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn125=function(e){this.yyval=this.Node_Arg(this.yyastk[this.stackPos-0],!1,e)},r.Parser.prototype.yyn126=function(e){this.yyval=this.Node_Arg(this.yyastk[this.stackPos-0],!0,e)},r.Parser.prototype.yyn127=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn128=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn129=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn130=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn131=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn132=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn133=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn134=function(e){this.yyval=this.Node_Stmt_StaticVar(this.yyastk[this.stackPos-0].substring(1),null,e)},r.Parser.prototype.yyn135=function(e){this.yyval=this.Node_Stmt_StaticVar(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn136=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn137=function(e){this.yyval=[]},r.Parser.prototype.yyn138=function(e){this.yyval=this.Node_Stmt_Property(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn139=function(e){this.yyval=this.Node_Stmt_ClassConst(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn140=function(e){this.yyval=this.Node_Stmt_ClassMethod(this.yyastk[this.stackPos-4],{type:this.yyastk[this.stackPos-7],byRef:this.yyastk[this.stackPos-5],params:this.yyastk[this.stackPos-2],stmts:this.yyastk[this.stackPos-0]},e)},r.Parser.prototype.yyn141=function(e){this.yyval=this.Node_Stmt_TraitUse(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn142=function(e){this.yyval=[]},r.Parser.prototype.yyn143=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn144=function(e){this.yyval=[]},r.Parser.prototype.yyn145=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn146=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Precedence(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn147=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-4][0],this.yyastk[this.stackPos-4][1],this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn148=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],this.yyastk[this.stackPos-1],null,e)},r.Parser.prototype.yyn149=function(e){this.yyval=this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[this.stackPos-3][0],this.yyastk[this.stackPos-3][1],null,this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn150=function(e){this.yyval=array(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn151=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn152=function(e){this.yyval=array(null,this.yyastk[this.stackPos-0])},r.Parser.prototype.yyn153=function(e){this.yyval=null},r.Parser.prototype.yyn154=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn155=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn156=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn157=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn158=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn159=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn160=function(e){this.Stmt_Class_verifyModifier(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]|this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn161=function(e){this.yyval=this.MODIFIER_PUBLIC},r.Parser.prototype.yyn162=function(e){this.yyval=this.MODIFIER_PROTECTED},r.Parser.prototype.yyn163=function(e){this.yyval=this.MODIFIER_PRIVATE},r.Parser.prototype.yyn164=function(e){this.yyval=this.MODIFIER_STATIC},r.Parser.prototype.yyn165=function(e){this.yyval=this.MODIFIER_ABSTRACT},r.Parser.prototype.yyn166=function(e){this.yyval=this.MODIFIER_FINAL},r.Parser.prototype.yyn167=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn168=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn169=function(e){this.yyval=this.Node_Stmt_PropertyProperty(this.yyastk[this.stackPos-0].substring(1),null,e)},r.Parser.prototype.yyn170=function(e){this.yyval=this.Node_Stmt_PropertyProperty(this.yyastk[this.stackPos-2].substring(1),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn171=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn172=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn173=function(e){this.yyval=[]},r.Parser.prototype.yyn174=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn175=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn176=function(e){this.yyval=this.Node_Expr_AssignList(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn177=function(e){this.yyval=this.Node_Expr_Assign(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn178=function(e){this.yyval=this.Node_Expr_AssignRef(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn179=function(e){this.yyval=this.Node_Expr_AssignRef(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn180=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn181=function(e){this.yyval=this.Node_Expr_Clone(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn182=function(e){this.yyval=this.Node_Expr_AssignPlus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn183=function(e){this.yyval=this.Node_Expr_AssignMinus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn184=function(e){this.yyval=this.Node_Expr_AssignMul(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn185=function(e){this.yyval=this.Node_Expr_AssignDiv(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn186=function(e){this.yyval=this.Node_Expr_AssignConcat(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn187=function(e){this.yyval=this.Node_Expr_AssignMod(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn188=function(e){this.yyval=this.Node_Expr_AssignBitwiseAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn189=function(e){this.yyval=this.Node_Expr_AssignBitwiseOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn190=function(e){this.yyval=this.Node_Expr_AssignBitwiseXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn191=function(e){this.yyval=this.Node_Expr_AssignShiftLeft(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn192=function(e){this.yyval=this.Node_Expr_AssignShiftRight(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn193=function(e){this.yyval=this.Node_Expr_PostInc(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn194=function(e){this.yyval=this.Node_Expr_PreInc(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn195=function(e){this.yyval=this.Node_Expr_PostDec(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn196=function(e){this.yyval=this.Node_Expr_PreDec(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn197=function(e){this.yyval=this.Node_Expr_BooleanOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn198=function(e){this.yyval=this.Node_Expr_BooleanAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn199=function(e){this.yyval=this.Node_Expr_LogicalOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn200=function(e){this.yyval=this.Node_Expr_LogicalAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn201=function(e){this.yyval=this.Node_Expr_LogicalXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn202=function(e){this.yyval=this.Node_Expr_BitwiseOr(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn203=function(e){this.yyval=this.Node_Expr_BitwiseAnd(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn204=function(e){this.yyval=this.Node_Expr_BitwiseXor(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn205=function(e){this.yyval=this.Node_Expr_Concat(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn206=function(e){this.yyval=this.Node_Expr_Plus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn207=function(e){this.yyval=this.Node_Expr_Minus(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn208=function(e){this.yyval=this.Node_Expr_Mul(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn209=function(e){this.yyval=this.Node_Expr_Div(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn210=function(e){this.yyval=this.Node_Expr_Mod(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn211=function(e){this.yyval=this.Node_Expr_ShiftLeft(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn212=function(e){this.yyval=this.Node_Expr_ShiftRight(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn213=function(e){this.yyval=this.Node_Expr_UnaryPlus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn214=function(e){this.yyval=this.Node_Expr_UnaryMinus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn215=function(e){this.yyval=this.Node_Expr_BooleanNot(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn216=function(e){this.yyval=this.Node_Expr_BitwiseNot(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn217=function(e){this.yyval=this.Node_Expr_Identical(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn218=function(e){this.yyval=this.Node_Expr_NotIdentical(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn219=function(e){this.yyval=this.Node_Expr_Equal(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn220=function(e){this.yyval=this.Node_Expr_NotEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn221=function(e){this.yyval=this.Node_Expr_Smaller(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn222=function(e){this.yyval=this.Node_Expr_SmallerOrEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn223=function(e){this.yyval=this.Node_Expr_Greater(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn224=function(e){this.yyval=this.Node_Expr_GreaterOrEqual(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn225=function(e){this.yyval=this.Node_Expr_Instanceof(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn226=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn227=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn228=function(e){this.yyval=this.Node_Expr_Ternary(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn229=function(e){this.yyval=this.Node_Expr_Ternary(this.yyastk[this.stackPos-3],null,this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn230=function(e){this.yyval=this.Node_Expr_Isset(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn231=function(e){this.yyval=this.Node_Expr_Empty(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn232=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_Include",e)},r.Parser.prototype.yyn233=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_IncludeOnce",e)},r.Parser.prototype.yyn234=function(e){this.yyval=this.Node_Expr_Eval(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn235=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_Require",e)},r.Parser.prototype.yyn236=function(e){this.yyval=this.Node_Expr_Include(this.yyastk[this.stackPos-0],"Node_Expr_RequireOnce",e)},r.Parser.prototype.yyn237=function(e){this.yyval=this.Node_Expr_Cast_Int(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn238=function(e){this.yyval=this.Node_Expr_Cast_Double(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn239=function(e){this.yyval=this.Node_Expr_Cast_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn240=function(e){this.yyval=this.Node_Expr_Cast_Array(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn241=function(e){this.yyval=this.Node_Expr_Cast_Object(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn242=function(e){this.yyval=this.Node_Expr_Cast_Bool(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn243=function(e){this.yyval=this.Node_Expr_Cast_Unset(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn244=function(e){this.yyval=this.Node_Expr_Exit(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn245=function(e){this.yyval=this.Node_Expr_ErrorSuppress(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn246=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn247=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn248=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn249=function(e){this.yyval=this.Node_Expr_ShellExec(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn250=function(e){this.yyval=this.Node_Expr_Print(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn251=function(e){this.yyval=this.Node_Expr_Closure({"static":!1,byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-5],uses:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn252=function(e){this.yyval=this.Node_Expr_Closure({"static":!0,byRef:this.yyastk[this.stackPos-7],params:this.yyastk[this.stackPos-5],uses:this.yyastk[this.stackPos-3],stmts:this.yyastk[this.stackPos-1]},e)},r.Parser.prototype.yyn253=function(e){this.yyval=this.Node_Expr_New(this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn254=function(e){this.yyval=[]},r.Parser.prototype.yyn255=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn256=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn257=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn258=function(e){this.yyval=this.Node_Expr_ClosureUse(this.yyastk[this.stackPos-0].substring(1),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn259=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn260=function(e){this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn261=function(e){this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-7],this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn262=function(e){if(this.yyastk[this.stackPos-3].type==="Node_Expr_StaticPropertyFetch")this.yyval=this.Node_Expr_StaticCall(this.yyastk[this.stackPos-3].Class,this.Node_Expr_Variable(this.yyastk[this.stackPos-3].name,e),this.yyastk[this.stackPos-1],e);else{if(this.yyastk[this.stackPos-3].type!=="Node_Expr_ArrayDimFetch")throw new Exception;var t=this.yyastk[this.stackPos-3];while(t.variable.type==="Node_Expr_ArrayDimFetch")t=t.variable;this.yyval=this.Node_Expr_StaticCall(t.variable.Class,this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e),t.variable=this.Node_Expr_Variable(t.variable.name,e)}},r.Parser.prototype.yyn263=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn264=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn265=function(e){this.yyval=this.Node_Name("static",e)},r.Parser.prototype.yyn266=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn267=function(e){this.yyval=this.Node_Name(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn268=function(e){this.yyval=this.Node_Name_FullyQualified(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn269=function(e){this.yyval=this.Node_Name_Relative(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn270=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn271=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn272=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn273=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn274=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn275=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn276=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn277=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn278=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn279=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn280=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn281=function(e){this.yyval=null},r.Parser.prototype.yyn282=function(e){this.yyval=null},r.Parser.prototype.yyn283=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn284=function(e){this.yyval=[]},r.Parser.prototype.yyn285=function(e){this.yyval=[this.Scalar_String_parseEscapeSequences(this.yyastk[this.stackPos-0],"`")]},r.Parser.prototype.yyn286=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn287=function(e){this.yyval=[]},r.Parser.prototype.yyn288=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn289=function(e){this.yyval=this.Node_Scalar_LNumber(this.Scalar_LNumber_parse(this.yyastk[this.stackPos-0]),e)},r.Parser.prototype.yyn290=function(e){this.yyval=this.Node_Scalar_DNumber(this.Scalar_DNumber_parse(this.yyastk[this.stackPos-0]),e)},r.Parser.prototype.yyn291=function(e){this.yyval=this.Scalar_String_create(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn292=function(e){this.yyval={type:"Node_Scalar_LineConst",attributes:e}},r.Parser.prototype.yyn293=function(e){this.yyval={type:"Node_Scalar_FileConst",attributes:e}},r.Parser.prototype.yyn294=function(e){this.yyval={type:"Node_Scalar_DirConst",attributes:e}},r.Parser.prototype.yyn295=function(e){this.yyval={type:"Node_Scalar_ClassConst",attributes:e}},r.Parser.prototype.yyn296=function(e){this.yyval={type:"Node_Scalar_TraitConst",attributes:e}},r.Parser.prototype.yyn297=function(e){this.yyval={type:"Node_Scalar_MethodConst",attributes:e}},r.Parser.prototype.yyn298=function(e){this.yyval={type:"Node_Scalar_FuncConst",attributes:e}},r.Parser.prototype.yyn299=function(e){this.yyval={type:"Node_Scalar_NSConst",attributes:e}},r.Parser.prototype.yyn300=function(e){this.yyval=this.Node_Scalar_String(this.Scalar_String_parseDocString(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-1]),e)},r.Parser.prototype.yyn301=function(e){this.yyval=this.Node_Scalar_String("",e)},r.Parser.prototype.yyn302=function(e){this.yyval=this.Node_Expr_ConstFetch(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn303=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn304=function(e){this.yyval=this.Node_Expr_ClassConstFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn305=function(e){this.yyval=this.Node_Expr_UnaryPlus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn306=function(e){this.yyval=this.Node_Expr_UnaryMinus(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn307=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn308=function(e){this.yyval=this.Node_Expr_Array(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn309=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn310=function(e){this.yyval=this.Node_Expr_ClassConstFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn311=function(e){this.yyval=this.Node_Scalar_Encapsed(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn312=function(e){this.yyval=this.Node_Scalar_Encapsed(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn313=function(e){this.yyval=[]},r.Parser.prototype.yyn314=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn315=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn316=function(){this.yyval=this.yyastk[this.stackPos]},r.Parser.prototype.yyn317=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn318=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn319=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-2],!1,e)},r.Parser.prototype.yyn320=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!1,e)},r.Parser.prototype.yyn321=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn322=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn323=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn324=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn325=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-4],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn326=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn327=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn328=function(e){this.yyval=this.Node_Expr_MethodCall(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn329=function(e){this.yyval=this.Node_Expr_FuncCall(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn330=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn331=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn332=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn333=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn334=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn335=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn336=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn337=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn338=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn339=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn340=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-2],this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn341=function(e){this.yyval=this.Node_Expr_StaticPropertyFetch(this.yyastk[this.stackPos-5],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn342=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn343=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn344=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn345=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.yyastk[this.stackPos-3],this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn346=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn347=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn348=function(e){this.yyval=null},r.Parser.prototype.yyn349=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn350=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn351=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn352=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn353=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn354=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn355=function(e){this.yyval=this.yyastk[this.stackPos-0]},r.Parser.prototype.yyn356=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn357=function(e){this.yyval=null},r.Parser.prototype.yyn358=function(e){this.yyval=[]},r.Parser.prototype.yyn359=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn360=function(e){this.yyastk[this.stackPos-2].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-2]},r.Parser.prototype.yyn361=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn362=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-2],!1,e)},r.Parser.prototype.yyn363=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!1,e)},r.Parser.prototype.yyn364=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],this.yyastk[this.stackPos-3],!0,e)},r.Parser.prototype.yyn365=function(e){this.yyval=this.Node_Expr_ArrayItem(this.yyastk[this.stackPos-0],null,!0,e)},r.Parser.prototype.yyn366=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn367=function(e){this.yyastk[this.stackPos-1].push(this.yyastk[this.stackPos-0]),this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn368=function(e){this.yyval=[this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn369=function(e){this.yyval=[this.yyastk[this.stackPos-1],this.yyastk[this.stackPos-0]]},r.Parser.prototype.yyn370=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.yyn371=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-3].substring(1),e),this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn372=function(e){this.yyval=this.Node_Expr_PropertyFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-2].substring(1),e),this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn373=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn374=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-1],e)},r.Parser.prototype.yyn375=function(e){this.yyval=this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[this.stackPos-4],e),this.yyastk[this.stackPos-2],e)},r.Parser.prototype.yyn376=function(e){this.yyval=this.yyastk[this.stackPos-1]},r.Parser.prototype.yyn377=function(e){this.yyval=this.Node_Scalar_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn378=function(e){this.yyval=this.Node_Scalar_String(this.yyastk[this.stackPos-0],e)},r.Parser.prototype.yyn379=function(e){this.yyval=this.Node_Expr_Variable(this.yyastk[this.stackPos-0].substring(1),e)},r.Parser.prototype.Stmt_Namespace_postprocess=function(e){return e},r.Parser.prototype.Node_Stmt_Echo=function(){return{type:"Node_Stmt_Echo",exprs:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_If=function(){return{type:"Node_Stmt_If",cond:arguments[0],stmts:arguments[1].stmts,elseifs:arguments[1].elseifs,Else:arguments[1].Else||null,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_For=function(){return{type:"Node_Stmt_For",init:arguments[0].init,cond:arguments[0].cond,loop:arguments[0].loop,stmts:arguments[0].stmts,attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Function=function(){return{type:"Node_Stmt_Function",name:arguments[0],byRef:arguments[1].byRef,params:arguments[1].params,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Stmt_Class_verifyModifier=function(){},r.Parser.prototype.Node_Stmt_Namespace=function(){return{type:"Node_Stmt_Namespace",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Use=function(){return{type:"Node_Stmt_Use",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_UseUse=function(){return{type:"Node_Stmt_UseUse",name:arguments[0],as:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_TraitUseAdaptation_Precedence=function(){return{type:"Node_Stmt_TraitUseAdaptation_Precedence",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_TraitUseAdaptation_Alias=function(){return{type:"Node_Stmt_TraitUseAdaptation_Alias",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Trait=function(){return{type:"Node_Stmt_Trait",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_TraitUse=function(){return{type:"Node_Stmt_TraitUse",name:arguments[0],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Class=function(){return{type:"Node_Stmt_Class",name:arguments[0],Type:arguments[1].type,Extends:arguments[1].Extends,Implements:arguments[1].Implements,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_ClassMethod=function(){return{type:"Node_Stmt_ClassMethod",name:arguments[0],Type:arguments[1].type,byRef:arguments[1].byRef,params:arguments[1].params,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_ClassConst=function(){return{type:"Node_Stmt_ClassConst",consts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Interface=function(){return{type:"Node_Stmt_Interface",name:arguments[0],Extends:arguments[1].Extends,stmts:arguments[1].stmts,attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Throw=function(){return{type:"Node_Stmt_Throw",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Catch=function(){return{type:"Node_Stmt_Catch",Type:arguments[0],variable:arguments[1],stmts:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Stmt_TryCatch=function(){return{type:"Node_Stmt_TryCatch",stmts:arguments[0],catches:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Foreach=function(){return{type:"Node_Stmt_Foreach",expr:arguments[0],valueVar:arguments[1],keyVar:arguments[2].keyVar,byRef:arguments[2].byRef,stmts:arguments[2].stmts,attributes:arguments[3]}},r.Parser.prototype.Node_Stmt_While=function(){return{type:"Node_Stmt_While",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Do=function(){return{type:"Node_Stmt_Do",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Break=function(){return{type:"Node_Stmt_Break",num:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Continue=function(){return{type:"Node_Stmt_Continue",num:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Return=function(){return{type:"Node_Stmt_Return",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Case=function(){return{type:"Node_Stmt_Case",cond:arguments[0],stmts:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Switch=function(){return{type:"Node_Stmt_Switch",cond:arguments[0],cases:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Else=function(){return{type:"Node_Stmt_Else",stmts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_ElseIf=function(){return{type:"Node_Stmt_ElseIf",cond:arguments[0],stmts:arguments[1],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_InlineHTML=function(){return{type:"Node_Stmt_InlineHTML",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_StaticVar=function(){return{type:"Node_Stmt_StaticVar",name:arguments[0],def:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Static=function(){return{type:"Node_Stmt_Static",vars:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_Global=function(){return{type:"Node_Stmt_Global",vars:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Stmt_PropertyProperty=function(){return{type:"Node_Stmt_PropertyProperty",name:arguments[0],def:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Property=function(){return{type:"Node_Stmt_Property",Type:arguments[0],props:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Stmt_Unset=function(){return{type:"Node_Stmt_Unset",variables:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Variable=function(e){return{type:"Node_Expr_Variable",name:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_FuncCall=function(){return{type:"Node_Expr_FuncCall",func:arguments[0],args:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_MethodCall=function(){return{type:"Node_Expr_MethodCall",variable:arguments[0],name:arguments[1],args:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_StaticCall=function(){return{type:"Node_Expr_StaticCall",Class:arguments[0],func:arguments[1],args:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_Ternary=function(){return{type:"Node_Expr_Ternary",cond:arguments[0],If:arguments[1],Else:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_AssignList=function(){return{type:"Node_Expr_AssignList",assignList:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Assign=function(){return{type:"Node_Expr_Assign",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignConcat=function(){return{type:"Node_Expr_AssignConcat",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMinus=function(){return{type:"Node_Expr_AssignMinus",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignPlus=function(){return{type:"Node_Expr_AssignPlus",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignDiv=function(){return{type:"Node_Expr_AssignDiv",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignRef=function(){return{type:"Node_Expr_AssignRef",variable:arguments[0],refVar:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMul=function(){return{type:"Node_Expr_AssignMul",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_AssignMod=function(){return{type:"Node_Expr_AssignMod",variable:arguments[0],expr:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Plus=function(){return{type:"Node_Expr_Plus",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Minus=function(){return{type:"Node_Expr_Minus",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Mul=function(){return{type:"Node_Expr_Mul",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Div=function(){return{type:"Node_Expr_Div",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Mod=function(){return{type:"Node_Expr_Mod",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Greater=function(){return{type:"Node_Expr_Greater",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Equal=function(){return{type:"Node_Expr_Equal",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_NotEqual=function(){return{type:"Node_Expr_NotEqual",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Identical=function(){return{type:"Node_Expr_Identical",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_NotIdentical=function(){return{type:"Node_Expr_NotIdentical",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_GreaterOrEqual=function(){return{type:"Node_Expr_GreaterOrEqual",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_SmallerOrEqual=function(){return{type:"Node_Expr_SmallerOrEqual",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Concat=function(){return{type:"Node_Expr_Concat",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Smaller=function(){return{type:"Node_Expr_Smaller",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_PostInc=function(){return{type:"Node_Expr_PostInc",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PostDec=function(){return{type:"Node_Expr_PostDec",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PreInc=function(){return{type:"Node_Expr_PreInc",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PreDec=function(){return{type:"Node_Expr_PreDec",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Include=function(){return{expr:arguments[0],type:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ArrayDimFetch=function(){return{type:"Node_Expr_ArrayDimFetch",variable:arguments[0],dim:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_StaticPropertyFetch=function(){return{type:"Node_Expr_StaticPropertyFetch",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ClassConstFetch=function(){return{type:"Node_Expr_ClassConstFetch",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_StaticPropertyFetch=function(){return{type:"Node_Expr_StaticPropertyFetch",Class:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_ConstFetch=function(){return{type:"Node_Expr_ConstFetch",name:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_ArrayItem=function(){return{type:"Node_Expr_ArrayItem",value:arguments[0],key:arguments[1],byRef:arguments[2],attributes:arguments[3]}},r.Parser.prototype.Node_Expr_Array=function(){return{type:"Node_Expr_Array",items:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_PropertyFetch=function(){return{type:"Node_Expr_PropertyFetch",variable:arguments[0],name:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_New=function(){return{type:"Node_Expr_New",Class:arguments[0],args:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Print=function(){return{type:"Node_Expr_Print",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Exit=function(){return{type:"Node_Expr_Exit",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Bool=function(){return{type:"Node_Expr_Cast_Bool",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Int=function(){return{type:"Node_Expr_Cast_Int",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_String=function(){return{type:"Node_Expr_Cast_String",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Double=function(){return{type:"Node_Expr_Cast_Double",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Array=function(){return{type:"Node_Expr_Cast_Array",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Cast_Object=function(){return{type:"Node_Expr_Cast_Object",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_ErrorSuppress=function(){return{type:"Node_Expr_ErrorSuppress",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Isset=function(){return{type:"Node_Expr_Isset",variables:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_UnaryMinus=function(){return{type:"Node_Expr_UnaryMinus",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_UnaryPlus=function(){return{type:"Node_Expr_UnaryPlus",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_Empty=function(){return{type:"Node_Expr_Empty",variable:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanOr=function(){return{type:"Node_Expr_BooleanOr",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalOr=function(){return{type:"Node_Expr_LogicalOr",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalAnd=function(){return{type:"Node_Expr_LogicalAnd",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_LogicalXor=function(){return{type:"Node_Expr_LogicalXor",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseAnd=function(){return{type:"Node_Expr_BitwiseAnd",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseOr=function(){return{type:"Node_Expr_BitwiseOr",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseXor=function(){return{type:"Node_Expr_BitwiseXor",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_BitwiseNot=function(){return{type:"Node_Expr_BitwiseNot",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanNot=function(){return{type:"Node_Expr_BooleanNot",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Expr_BooleanAnd=function(){return{type:"Node_Expr_BooleanAnd",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Instanceof=function(){return{type:"Node_Expr_Instanceof",left:arguments[0],right:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Expr_Clone=function(){return{type:"Node_Expr_Clone",expr:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Scalar_LNumber_parse=function(e){return e},r.Parser.prototype.Scalar_DNumber_parse=function(e){return e},r.Parser.prototype.Scalar_String_parseDocString=function(){return'"'+arguments[1].replace(/([^"\\]*(?:\\.[^"\\]*)*)"/g,'$1\\"')+'"'},r.Parser.prototype.Node_Scalar_String=function(){return{type:"Node_Scalar_String",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Scalar_String_create=function(){return{type:"Node_Scalar_String",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_LNumber=function(){return{type:"Node_Scalar_LNumber",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_DNumber=function(){return{type:"Node_Scalar_DNumber",value:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Scalar_Encapsed=function(){return{type:"Node_Scalar_Encapsed",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name=function(){return{type:"Node_Name",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name_FullyQualified=function(){return{type:"Node_Name_FullyQualified",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Name_Relative=function(){return{type:"Node_Name_Relative",parts:arguments[0],attributes:arguments[1]}},r.Parser.prototype.Node_Param=function(){return{type:"Node_Param",name:arguments[0],def:arguments[1],Type:arguments[2],byRef:arguments[3],attributes:arguments[4]}},r.Parser.prototype.Node_Arg=function(){return{type:"Node_Name",value:arguments[0],byRef:arguments[1],attributes:arguments[2]}},r.Parser.prototype.Node_Const=function(){return{type:"Node_Const",name:arguments[0],value:arguments[1],attributes:arguments[2]}},t.PHP=r}),ace.define("ace/mode/php_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/php/php"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./php/php").PHP,o=t.PhpWorker=function(e){i.call(this,e),this.setTimeout(500)};r.inherits(o,i),function(){this.setOptions=function(e){this.inlinePhp=e&&e.inline},this.onUpdate=function(){var e=this.doc.getValue(),t=[];this.inlinePhp&&(e="<?"+e+"?>");var n=s.Lexer(e,{short_open_tag:1});try{new s.Parser(n)}catch(r){t.push({row:r.line-1,column:null,text:r.message.charAt(0).toUpperCase()+r.message.substring(1),type:"error"})}this.sender.emit("annotate",t)}}.call(o.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-xml.js b/js/ace/worker-xml.js
new file mode 100644
index 0000000..5b949e1
--- /dev/null
+++ b/js/ace/worker-xml.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/xml/sax",["require","exports","module"],function(e,t,n){function d(){}function v(e,t,n,r,i){function s(e){if(e>65535){e-=65536;var t=55296+(e>>10),n=56320+(e&1023);return String.fromCharCode(t,n)}return String.fromCharCode(e)}function o(e){var t=e.slice(1,-1);return t in n?n[t]:t.charAt(0)==="#"?s(parseInt(t.substr(1).replace("x","0x"))):(i.error("entity not found:"+e),e)}function u(t){var n=e.substring(v,t).replace(/&#?\w+;/g,o);h&&a(v),r.characters(n,0,t-v),v=t}function a(t,n){while(t>=l&&(n=c.exec(e)))f=n.index,l=f+n[0].length,h.lineNumber++;h.columnNumber=t-f+1}var f=0,l=0,c=/.+(?:\r\n?|\n)|.*$/g,h=r.locator,p=[{currentNSMap:t}],d={},v=0;for(;;){var E=e.indexOf("<",v);if(E<0){if(!e.substr(v).match(/^\s*$/)){var N=r.document,C=N.createTextNode(e.substr(v));N.appendChild(C),r.currentElement=C}return}E>v&&u(E);switch(e.charAt(E+1)){case"/":var k=e.indexOf(">",E+3),L=e.substring(E+2,k),A;if(!(p.length>1)){i.fatalError("end tag name not found for: "+L);break}A=p.pop();var O=A.localNSMap;A.tagName!=L&&i.fatalError("end tag name: "+L+" does not match the current start tagName: "+A.tagName),r.endElement(A.uri,A.localName,L);if(O)for(var M in O)r.endPrefixMapping(M);k++;break;case"?":h&&a(E),k=x(e,E,r);break;case"!":h&&a(E),k=S(e,E,r,i);break;default:try{h&&a(E);var _=new T,k=g(e,E,_,o,i),D=_.length;if(D&&h){var P=m(h,{});for(var E=0;E<D;E++){var H=_[E];a(H.offset),H.offset=m(h,{})}m(P,h)}!_.closed&&w(e,k,_.tagName,d)&&(_.closed=!0,n.nbsp||i.warning("unclosed xml attribute")),y(_,r,p),_.uri==="http://www.w3.org/1999/xhtml"&&!_.closed?k=b(e,k,_.tagName,o,r):k++}catch(B){i.error("element parse error: "+B),k=-1}}k<0?u(E+1):v=k}}function m(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function g(e,t,n,r,i){var s,d,v=++t,m=o;for(;;){var g=e.charAt(v);switch(g){case"=":if(m===u)s=e.slice(t,v),m=f;else{if(m!==a)throw new Error("attribute equal must after attrName");m=f}break;case"'":case'"':if(m===f){t=v+1,v=e.indexOf(g,t);if(!(v>0))throw new Error("attribute value no end '"+g+"' match");d=e.slice(t,v).replace(/&#?\w+;/g,r),n.add(s,d,t-1),m=c}else{if(m!=l)throw new Error('attribute value must after "="');d=e.slice(t,v).replace(/&#?\w+;/g,r),n.add(s,d,t),i.warning('attribute "'+s+'" missed start quot('+g+")!!"),t=v+1,m=c}break;case"/":switch(m){case o:n.setTagName(e.slice(t,v));case c:case h:case p:m=p,n.closed=!0;case l:case u:case a:break;default:throw new Error("attribute invalid close char('/')")}break;case"":i.error("unexpected end of input");case">":switch(m){case o:n.setTagName(e.slice(t,v));case c:case h:case p:break;case l:case u:d=e.slice(t,v),d.slice(-1)==="/"&&(n.closed=!0,d=d.slice(0,-1));case a:m===a&&(d=s),m==l?(i.warning('attribute "'+d+'" missed quot(")!!'),n.add(s,d.replace(/&#?\w+;/g,r),t)):(i.warning('attribute "'+d+'" missed value!! "'+d+'" instead!!'),n.add(d,d,t));break;case f:throw new Error("attribute value missed!!")}return v;case"\u0080":g=" ";default:if(g<=" ")switch(m){case o:n.setTagName(e.slice(t,v)),m=h;break;case u:s=e.slice(t,v),m=a;break;case l:var d=e.slice(t,v).replace(/&#?\w+;/g,r);i.warning('attribute "'+d+'" missed quot(")!!'),n.add(s,d,t);case c:m=h}else switch(m){case a:i.warning('attribute "'+s+'" missed value!! "'+s+'" instead!!'),n.add(s,s,t),t=v,m=u;break;case c:i.warning('attribute space is required"'+s+'"!!');case h:m=u,t=v;break;case f:m=l,t=v;break;case p:throw new Error("elements closed character '/' and '>' must be connected to")}}v++}}function y(e,t,n){var r=e.tagName,i=null,s=n[n.length-1].currentNSMap,o=e.length;while(o--){var u=e[o],a=u.qName,f=u.value,l=a.indexOf(":");if(l>0)var c=u.prefix=a.slice(0,l),h=a.slice(l+1),p=c==="xmlns"&&h;else h=a,c=null,p=a==="xmlns"&&"";u.localName=h,p!==!1&&(i==null&&(i={},E(s,s={})),s[p]=i[p]=f,u.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(p,f))}var o=e.length;while(o--){u=e[o];var c=u.prefix;c&&(c==="xml"&&(u.uri="http://www.w3.org/XML/1998/namespace"),c!=="xmlns"&&(u.uri=s[c]))}var l=r.indexOf(":");l>0?(c=e.prefix=r.slice(0,l),h=e.localName=r.slice(l+1)):(c=null,h=e.localName=r);var d=e.uri=s[c||""];t.startElement(d,h,r,e);if(e.closed){t.endElement(d,h,r);if(i)for(c in i)t.endPrefixMapping(c)}else e.currentNSMap=s,e.localNSMap=i,n.push(e)}function b(e,t,n,r,i){if(/^(?:script|textarea)$/i.test(n)){var s=e.indexOf("</"+n+">",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(n)?(i.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,r),i.characters(o,0,o.length),s)}return t+1}function w(e,t,n,r){var i=r[n];return i==null&&(i=r[n]=e.lastIndexOf("</"+n+">")),i<t}function E(e,t){for(var n in e)t[n]=e[n]}function S(e,t,n,r){var i=e.charAt(t+2);switch(i){case"-":if(e.charAt(t+3)==="-"){var s=e.indexOf("-->",t+4);return s>t?(n.comment(e,t+4,s-t-4),s+3):(r.error("Unclosed comment"),-1)}return-1;default:if(e.substr(t+3,6)=="CDATA["){var s=e.indexOf("]]>",t+9);return n.startCDATA(),n.characters(e,t+9,s-t-9),n.endCDATA(),s+3}var o=C(e,t),u=o.length;if(u>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],f=u>3&&/^public$/i.test(o[2][0])&&o[3][0],l=u>4&&o[4][0],c=o[u-1];return n.startDTD(a,f&&f.replace(/^(['"])(.*?)\1$/,"$2"),l&&l.replace(/^(['"])(.*?)\1$/,"$2")),n.endDTD(),c.index+c[0].length}}return-1}function x(e,t,n){var r=e.indexOf("?>",t);if(r){var i=e.substring(t,r).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(i){var s=i[0].length;return n.processingInstruction(i[1],i[2]),r+2}return-1}return-1}function T(e){}function N(e,t){return e.__proto__=t,e}function C(e,t){var n,r=[],i=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;i.lastIndex=t,i.exec(e);while(n=i.exec(e)){r.push(n);if(n[1])return r}}var r=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,i=new RegExp("[\\-\\.0-9"+r.source.slice(1,-1)+"\u00b7\u0300-\u036f\\ux203F-\u2040]"),s=new RegExp("^"+r.source+i.source+"*(?::"+r.source+i.source+"*)?$"),o=0,u=1,a=2,f=3,l=4,c=5,h=6,p=7;return d.prototype={parse:function(e,t,n){var r=this.domBuilder;r.startDocument(),E(t,t={}),v(e,t,n,r,this.errorHandler),r.endDocument()}},T.prototype={setTagName:function(e){if(!s.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,n){if(!s.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:n}},length:0,getLocalName:function(e){return this[e].localName},getOffset:function(e){return this[e].offset},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},N({},N.prototype)instanceof N||(N=function(e,t){function n(){}n.prototype=t,n=new n;for(t in e)n[t]=e[t];return n}),d}),ace.define("ace/mode/xml/dom",["require","exports","module"],function(e,t,n){function r(e,t){for(var n in e)t[n]=e[n]}function i(e,t){var n=e.prototype;if(Object.create){var i=Object.create(t.prototype);n.__proto__=i}if(!(n instanceof t)){function s(){}s.prototype=t.prototype,s=new s,r(n,s),e.prototype=n=s}n.constructor!=e&&(typeof e!="function"&&console.error("unknow Class:"+e),n.constructor=e)}function B(e,t){if(t instanceof Error)var n=t;else n=this,Error.call(this,w[e]),this.message=w[e],Error.captureStackTrace&&Error.captureStackTrace(this,B);return n.code=e,t&&(this.message=this.message+": "+t),n}function j(){}function F(e,t){this._node=e,this._refresh=t,I(this)}function I(e){var t=e._node._inc||e._node.ownerDocument._inc;if(e._inc!=t){var n=e._refresh(e._node);gt(e,"length",n.length),r(n,e),e._inc=t}}function q(){}function R(e,t){var n=e.length;while(n--)if(e[n]===t)return n}function U(e,t,n,r){r?t[R(t,r)]=n:t[t.length++]=n;if(e){n.ownerElement=e;var i=e.ownerDocument;i&&(r&&Q(i,e,r),K(i,e,n))}}function z(e,t,n){var r=R(t,n);if(!(r>=0))throw B(L,new Error);var i=t.length-1;while(r<i)t[r]=t[++r];t.length=i;if(e){var s=e.ownerDocument;s&&(Q(s,e,n),n.ownerElement=null)}}function W(e){this._features={};if(e)for(var t in e)this._features=e[t]}function X(){}function V(e){return e=="<"&&"&lt;"||e==">"&&"&gt;"||e=="&"&&"&amp;"||e=='"'&&"&quot;"||"&#"+e.charCodeAt()+";"}function $(e,t){if(t(e))return!0;if(e=e.firstChild)do if($(e,t))return!0;while(e=e.nextSibling)}function J(){}function K(e,t,n){e&&e._inc++;var r=n.namespaceURI;r=="http://www.w3.org/2000/xmlns/"&&(t._nsMap[n.prefix?n.localName:""]=n.value)}function Q(e,t,n,r){e&&e._inc++;var i=n.namespaceURI;i=="http://www.w3.org/2000/xmlns/"&&delete t._nsMap[n.prefix?n.localName:""]}function G(e,t,n){if(e&&e._inc){e._inc++;var r=t.childNodes;if(n)r[r.length++]=n;else{var i=t.firstChild,s=0;while(i)r[s++]=i,i=i.nextSibling;r.length=s}}}function Y(e,t){var n=t.previousSibling,r=t.nextSibling;return n?n.nextSibling=r:e.firstChild=r,r?r.previousSibling=n:e.lastChild=n,G(e.ownerDocument,e),t}function Z(e,t,n){var r=t.parentNode;r&&r.removeChild(t);if(t.nodeType===g){var i=t.firstChild;if(i==null)return t;var s=t.lastChild}else i=s=t;var o=n?n.previousSibling:e.lastChild;i.previousSibling=o,s.nextSibling=n,o?o.nextSibling=i:e.firstChild=i,n==null?e.lastChild=s:n.previousSibling=s;do i.parentNode=e;while(i!==s&&(i=i.nextSibling));return G(e.ownerDocument||e,e),t.nodeType==g&&(t.firstChild=t.lastChild=null),t}function et(e,t){var n=t.parentNode;if(n){var r=e.lastChild;n.removeChild(t);var r=e.lastChild}var r=e.lastChild;return t.parentNode=e,t.previousSibling=r,t.nextSibling=null,r?r.nextSibling=t:e.firstChild=t,e.lastChild=t,G(e.ownerDocument,e,t),t}function tt(){this._nsMap={}}function nt(){}function rt(){}function it(){}function st(){}function ot(){}function ut(){}function at(){}function ft(){}function lt(){}function ct(){}function ht(){}function pt(){}function dt(e,t){switch(e.nodeType){case u:var n=e.attributes,r=n.length,i=e.firstChild,o=e.tagName,h=s===e.namespaceURI;t.push("<",o);for(var y=0;y<r;y++)dt(n.item(y),t,h);if(i||h&&!/^(?:meta|link|img|br|hr|input|button)$/i.test(o)){t.push(">");if(h&&/^script$/i.test(o))i&&t.push(i.data);else while(i)dt(i,t),i=i.nextSibling;t.push("</",o,">")}else t.push("/>");return;case v:case g:var i=e.firstChild;while(i)dt(i,t),i=i.nextSibling;return;case a:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,V),'"');case f:return t.push(e.data.replace(/[<&]/g,V));case l:return t.push("<![CDATA[",e.data,"]]>");case d:return t.push("<!--",e.data,"-->");case m:var b=e.publicId,w=e.systemId;t.push("<!DOCTYPE ",e.name);if(b)t.push(' PUBLIC "',b),w&&w!="."&&t.push('" "',w),t.push('">');else if(w&&w!=".")t.push(' SYSTEM "',w,'">');else{var E=e.internalSubset;E&&t.push(" [",E,"]"),t.push(">")}return;case p:return t.push("<?",e.target," ",e.data,"?>");case c:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function vt(e,t,n){var r;switch(t.nodeType){case u:r=t.cloneNode(!1),r.ownerDocument=e;case g:break;case a:n=!0}r||(r=t.cloneNode(!1)),r.ownerDocument=e,r.parentNode=null;if(n){var i=t.firstChild;while(i)r.appendChild(vt(e,i,n)),i=i.nextSibling}return r}function mt(e,t,n){var r=new t.constructor;for(var i in t){var s=t[i];typeof s!="object"&&s!=r[i]&&(r[i]=s)}t.childNodes&&(r.childNodes=new j),r.ownerDocument=e;switch(r.nodeType){case u:var o=t.attributes,f=r.attributes=new q,l=o.length;f._ownerElement=r;for(var c=0;c<l;c++)r.setAttributeNode(mt(e,o.item(c),!0));break;case a:n=!0}if(n){var h=t.firstChild;while(h)r.appendChild(mt(e,h,n)),h=h.nextSibling}return r}function gt(e,t,n){e[t]=n}var s="http://www.w3.org/1999/xhtml",o={},u=o.ELEMENT_NODE=1,a=o.ATTRIBUTE_NODE=2,f=o.TEXT_NODE=3,l=o.CDATA_SECTION_NODE=4,c=o.ENTITY_REFERENCE_NODE=5,h=o.ENTITY_NODE=6,p=o.PROCESSING_INSTRUCTION_NODE=7,d=o.COMMENT_NODE=8,v=o.DOCUMENT_NODE=9,m=o.DOCUMENT_TYPE_NODE=10,g=o.DOCUMENT_FRAGMENT_NODE=11,y=o.NOTATION_NODE=12,b={},w={},E=b.INDEX_SIZE_ERR=(w[1]="Index size error",1),S=b.DOMSTRING_SIZE_ERR=(w[2]="DOMString size error",2),x=b.HIERARCHY_REQUEST_ERR=(w[3]="Hierarchy request error",3),T=b.WRONG_DOCUMENT_ERR=(w[4]="Wrong document",4),N=b.INVALID_CHARACTER_ERR=(w[5]="Invalid character",5),C=b.NO_DATA_ALLOWED_ERR=(w[6]="No data allowed",6),k=b.NO_MODIFICATION_ALLOWED_ERR=(w[7]="No modification allowed",7),L=b.NOT_FOUND_ERR=(w[8]="Not found",8),A=b.NOT_SUPPORTED_ERR=(w[9]="Not supported",9),O=b.INUSE_ATTRIBUTE_ERR=(w[10]="Attribute in use",10),M=b.INVALID_STATE_ERR=(w[11]="Invalid state",11),_=b.SYNTAX_ERR=(w[12]="Syntax error",12),D=b.INVALID_MODIFICATION_ERR=(w[13]="Invalid modification",13),P=b.NAMESPACE_ERR=(w[14]="Invalid namespace",14),H=b.INVALID_ACCESS_ERR=(w[15]="Invalid access",15);B.prototype=Error.prototype,r(b,B),j.prototype={length:0,item:function(e){return this[e]||null}},F.prototype.item=function(e){return I(this),this[e]},i(F,j),q.prototype={length:0,item:j.prototype.item,getNamedItem:function(e){var t=this.length;while(t--){var n=this[t];if(n.nodeName==e)return n}},setNamedItem:function(e){var t=e.ownerElement;if(t&&t!=this._ownerElement)throw new B(O);var n=this.getNamedItem(e.nodeName);return U(this._ownerElement,this,e,n),n},setNamedItemNS:function(e){var t=e.ownerElement,n;if(t&&t!=this._ownerElement)throw new B(O);return n=this.getNamedItemNS(e.namespaceURI,e.localName),U(this._ownerElement,this,e,n),n},removeNamedItem:function(e){var t=this.getNamedItem(e);return z(this._ownerElement,this,t),t},removeNamedItemNS:function(e,t){var n=this.getNamedItemNS(e,t);return z(this._ownerElement,this,n),n},getNamedItemNS:function(e,t){var n=this.length;while(n--){var r=this[n];if(r.localName==t&&r.namespaceURI==e)return r}return null}},W.prototype={hasFeature:function(e,t){var n=this._features[e.toLowerCase()];return n&&(!t||t in n)?!0:!1},createDocument:function(e,t,n){var r=new J;r.implementation=this,r.childNodes=new j,r.doctype=n,n&&r.appendChild(n);if(t){var i=r.createElementNS(e,t);r.appendChild(i)}return r},createDocumentType:function(e,t,n){var r=new ut;return r.name=e,r.nodeName=e,r.publicId=t,r.systemId=n,r}},X.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(e,t){return Z(this,e,t)},replaceChild:function(e,t){this.insertBefore(e,t),t&&this.removeChild(t)},removeChild:function(e){return Y(this,e)},appendChild:function(e){return this.insertBefore(e,null)},hasChildNodes:function(){return this.firstChild!=null},cloneNode:function(e){return mt(this.ownerDocument||this,this,e)},normalize:function(){var e=this.firstChild;while(e){var t=e.nextSibling;t&&t.nodeType==f&&e.nodeType==f?(this.removeChild(t),e.appendData(t.data)):(e.normalize(),e=t)}},isSupported:function(e,t){return this.ownerDocument.implementation.hasFeature(e,t)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(e){var t=this;while(t){var n=t._nsMap;if(n)for(var r in n)if(n[r]==e)return r;t=t.nodeType==2?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){var t=this;while(t){var n=t._nsMap;if(n&&e in n)return n[e];t=t.nodeType==2?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){var t=this.lookupPrefix(e);return t==null}},r(o,X),r(o,X.prototype),J.prototype={nodeName:"#document",nodeType:v,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==g){var n=e.firstChild;while(n){var r=n.nextSibling;this.insertBefore(n,t),n=r}return e}return this.documentElement==null&&e.nodeType==1&&(this.documentElement=e),Z(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),Y(this,e)},importNode:function(e,t){return vt(this,e,t)},getElementById:function(e){var t=null;return $(this.documentElement,function(n){if(n.nodeType==1&&n.getAttribute("id")==e)return t=n,!0}),t},createElement:function(e){var t=new tt;t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new j;var n=t.attributes=new q;return n._ownerElement=t,t},createDocumentFragment:function(){var e=new ct;return e.ownerDocument=this,e.childNodes=new j,e},createTextNode:function(e){var t=new it;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new st;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new ot;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var n=new ht;return n.ownerDocument=this,n.tagName=n.target=e,n.nodeValue=n.data=t,n},createAttribute:function(e){var t=new nt;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new lt;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var n=new tt,r=t.split(":"),i=n.attributes=new q;return n.childNodes=new j,n.ownerDocument=this,n.nodeName=t,n.tagName=t,n.namespaceURI=e,r.length==2?(n.prefix=r[0],n.localName=r[1]):n.localName=t,i._ownerElement=n,n},createAttributeNS:function(e,t){var n=new nt,r=t.split(":");return n.ownerDocument=this,n.nodeName=t,n.name=t,n.namespaceURI=e,n.specified=!0,r.length==2?(n.prefix=r[0],n.localName=r[1]):n.localName=t,n}},i(J,X),tt.prototype={nodeType:u,hasAttribute:function(e){return this.getAttributeNode(e)!=null},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var n=this.ownerDocument.createAttribute(e);n.value=n.nodeValue=""+t,this.setAttributeNode(n)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===g?this.insertBefore(e,null):et(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);n&&this.removeAttributeNode(n)},hasAttributeNS:function(e,t){return this.getAttributeNodeNS(e,t)!=null},getAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);return n&&n.value||""},setAttributeNS:function(e,t,n){var r=this.ownerDocument.createAttributeNS(e,t);r.value=r.nodeValue=""+n,this.setAttributeNode(r)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new F(this,function(t){var n=[];return $(t,function(r){r!==t&&r.nodeType==u&&(e==="*"||r.tagName==e)&&n.push(r)}),n})},getElementsByTagNameNS:function(e,t){return new F(this,function(n){var r=[];return $(n,function(i){i!==n&&i.nodeType===u&&(e==="*"||i.namespaceURI===e)&&(t==="*"||i.localName==t)&&r.push(i)}),r})}},J.prototype.getElementsByTagName=tt.prototype.getElementsByTagName,J.prototype.getElementsByTagNameNS=tt.prototype.getElementsByTagNameNS,i(tt,X),nt.prototype.nodeType=a,i(nt,X),rt.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(w[3])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,n){var r=this.data.substring(0,e),i=this.data.substring(e+t);n=r+n+i,this.nodeValue=this.data=n,this.length=n.length}},i(rt,X),it.prototype={nodeName:"#text",nodeType:f,splitText:function(e){var t=this.data,n=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var r=this.ownerDocument.createTextNode(n);return this.parentNode&&this.parentNode.insertBefore(r,this.nextSibling),r}},i(it,rt),st.prototype={nodeName:"#comment",nodeType:d},i(st,rt),ot.prototype={nodeName:"#cdata-section",nodeType:l},i(ot,rt),ut.prototype.nodeType=m,i(ut,X),at.prototype.nodeType=y,i(at,X),ft.prototype.nodeType=h,i(ft,X),lt.prototype.nodeType=c,i(lt,X),ct.prototype.nodeName="#document-fragment",ct.prototype.nodeType=g,i(ct,X),ht.prototype.nodeType=p,i(ht,X),pt.prototype.serializeToString=function(e){var t=[];return dt(e,t),t.join("")},X.prototype.toString=function(){return pt.prototype.serializeToString(this)};try{if(Object.defineProperty){Object.defineProperty(F.prototype,"length",{get:function(){return I(this),this.$$length}}),Object.defineProperty(X.prototype,"textContent",{get:function(){return yt(this)},set:function(e){switch(this.nodeType){case 1:case 11:while(this.firstChild)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=value,this.nodeValue=e}}});function yt(e){switch(e.nodeType){case 1:case 11:var t=[];e=e.firstChild;while(e)e.nodeType!==7&&e.nodeType!==8&&t.push(yt(e)),e=e.nextSibling;return t.join("");default:return e.nodeValue}}gt=function(e,t,n){e["$$"+t]=n}}}catch(bt){}return W}),ace.define("ace/mode/xml/dom-parser",["require","exports","module","ace/mode/xml/sax","ace/mode/xml/dom"],function(e,t,n){"use strict";function s(e){this.options=e||{locator:{}}}function o(e,t,n){function s(t){var s=e[t];if(!s)if(i)s=e.length==2?function(n){e(t,n)}:e;else{var o=arguments.length;while(--o)if(s=e[arguments[o]])break}r[t]=s&&function(e){s(e+f(n),e,n)}||function(){}}if(!e){if(t instanceof u)return t;e=t}var r={},i=e instanceof Function;return n=n||{},s("warning","warn"),s("error","warn","warning"),s("fatalError","warn","warning","error"),r}function u(){this.cdata=!1}function a(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}function f(e){if(e)return"\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function l(e,t,n){return typeof e=="string"?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+"":e}function c(e,t){e.currentElement?e.currentElement.appendChild(t):e.document.appendChild(t)}var r=e("./sax"),i=e("./dom");return s.prototype.parseFromString=function(e,t){var n=this.options,i=new r,s=n.domBuilder||new u,a=n.errorHandler,f=n.locator,l=n.xmlns||{},c={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return f&&s.setDocumentLocator(f),i.errorHandler=o(a,s,f),i.domBuilder=n.domBuilder||s,/\/x?html?$/.test(t)&&(c.nbsp="\u00a0",c.copy="\u00a9",l[""]="http://www.w3.org/1999/xhtml"),e?i.parse(e,l,c):i.errorHandler.error("invalid document source"),s.document},u.prototype={startDocument:function(){this.document=(new i).createDocument(null,null,null),this.locator&&(this.document.documentURI=this.locator.systemId)},startElement:function(e,t,n,r){var i=this.document,s=i.createElementNS(e,n||t),o=r.length;c(this,s),this.currentElement=s,this.locator&&a(this.locator,s);for(var u=0;u<o;u++){var e=r.getURI(u),f=r.getValue(u),n=r.getQName(u),l=i.createAttributeNS(e,n);l.getOffset&&a(l.getOffset(1),l),l.value=l.nodeValue=f,s.setAttributeNode(l)}},endElement:function(e,t,n){var r=this.currentElement,i=r.tagName;this.currentElement=r.parentNode},startPrefixMapping:function(e,t){},endPrefixMapping:function(e){},processingInstruction:function(e,t){var n=this.document.createProcessingInstruction(e,t);this.locator&&a(this.locator,n),c(this,n)},ignorableWhitespace:function(e,t,n){},characters:function(e,t,n){e=l.apply(this,arguments);if(this.currentElement&&e){if(this.cdata){var r=this.document.createCDATASection(e);this.currentElement.appendChild(r)}else{var r=this.document.createTextNode(e);this.currentElement.appendChild(r)}this.locator&&a(this.locator,r)}},skippedEntity:function(e){},endDocument:function(){this.document.normalize()},setDocumentLocator:function(e){if(this.locator=e)e.lineNumber=0},comment:function(e,t,n){e=l.apply(this,arguments);var r=this.document.createComment(e);this.locator&&a(this.locator,r),c(this,r)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(e,t,n){var r=this.document.implementation;if(r&&r.createDocumentType){var i=r.createDocumentType(e,t,n);this.locator&&a(this.locator,i),c(this,i)}},warning:function(e){console.warn(e,f(this.locator))},error:function(e){console.error(e,f(this.locator))},fatalError:function(e){throw console.error(e,f(this.locator)),e}},"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,function(e){u.prototype[e]=function(){return null}}),{DOMParser:s}}),ace.define("ace/mode/xml_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/xml/dom-parser"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./xml/dom-parser").DOMParser,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(u,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[];t.options.errorHandler={fatalError:function(e,t,r){n.push({row:r.lineNumber,column:r.columnNumber,text:t,type:"error"})},error:function(e,t,r){n.push({row:r.lineNumber,column:r.columnNumber,text:t,type:"error"})},warning:function(e,t,r){n.push({row:r.lineNumber,column:r.columnNumber,text:t,type:"warning"})}},t.parseFromString(e),this.sender.emit("error",n)}}.call(u.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/ace/worker-xquery.js b/js/ace/worker-xquery.js
new file mode 100644
index 0000000..7231d74
--- /dev/null
+++ b/js/ace/worker-xquery.js
@@ -0,0 +1 @@
+"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(t){require.tlns=t},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?(s.row!==r||i!==0||!this.$insertRight)&&s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&#38;").replace(/"/g,"&#34;").replace(/'/g,"&#39;").replace(/</g,"&#60;")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/mode/xquery/xqlint",["require","exports","module","ace/mode/tree_ops","ace/mode/xquery/errors","ace/mode/tree_ops","ace/mode/xquery/errors","ace/mode/xquery/schema_built-in_types","ace/mode/xquery/errors","ace/mode/tree_ops","ace/mode/xquery/static_context","ace/mode/xquery/handlers","ace/mode/tree_ops","ace/mode/xquery/parsers/JSONiqParser","ace/mode/xquery/parsers/XQueryParser","ace/mode/xquery/parsers/JSONParseTreeHandler","ace/mode/xquery/compiler/translator","ace/mode/xquery/formatter/style_checker","ace/mode/lib/completion/completer","ace/mode/xquery/compiler/static_context"],function(e,t,n){n.exports=function r(t,n,i){function s(u,a){if(!n[u]){if(!t[u]){var f=typeof e=="function"&&e;if(!a&&f)return f(u,!0);if(o)return o(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[u]={exports:{}};t[u][0].call(c.exports,function(e){var n=t[u][1][e];return s(n?n:e)},c,c.exports,r,t,n,i)}return n[u].exports}var o=typeof e=="function"&&e;for(var u=0;u<i.length;u++)s(i[u]);return s}({1:[function(e,t,n){"use strict";var r=function(e,t,n,r,i){if(!t)throw new Error(i+" code is missing.");if(!n)throw new Error(i+" message is missing.");if(!r)throw new Error(i+" position is missing.");e.getCode=function(){return t},e.getMessage=function(){return n},e.getPos=function(){return r}},i={},s={};i.prototype=new Error,s.prototype=new Error,n.StaticError=i.prototype.constructor=function(e,t,n){r(this,e,t,n,"Error")},n.StaticWarning=s.prototype.constructor=function(e,t,n){r(this,e,t,n,"Warning")}},{}],2:[function(e,t,n){"use strict";var r=e("../tree_ops").TreeOps,i=e("./errors"),s=i.StaticWarning;n.ModuleDecl=function(e,t,n){var i="";return{NCName:function(e){i=r.flatten(e)},URILiteral:function(s){s=r.flatten(s),s=s.substring(1,s.length-1),e.apply(function(){t.moduleNamespace=s,t.addNamespace(s,i,n.pos,"moduleDecl")})}}},n.ModuleImport=function(e,t,n){var i="",s;return{NCName:function(e){i=r.flatten(e)},URILiteral:function(o){if(s!==undefined)return;o=r.flatten(o),o=o.substring(1,o.length-1),s=o,e.apply(function(){t.importModule(o,i,n.pos)})}}},n.SchemaImport=function(e,t,n){var i="",s;return{SchemaPrefix:function(t){var n=function(){this.NCName=function(e){i=r.flatten(e)}};e.visitChildren(t,new n)},URILiteral:function(o){if(s!==undefined)return;o=r.flatten(o),o=o.substring(1,o.length-1),s=o,e.apply(function(){t.addNamespace(o,i,n.pos,"schema")})}}},n.DefaultNamespaceDecl=function(e,t,n){var i=!1,o="";return{TOKEN:function(e){i=i?!0:e.value==="function"},URILiteral:function(u){o=r.flatten(u),o=o.substring(1,o.length-1),i?t.defaultFunctionNamespace=o:(e.apply(function(){throw new s("W06","Avoid default element namespace declarations.",n.pos)}),t.defaultElementNamespace=o)}}},n.NamespaceDecl=function(e,t,n){var i="";return{NCName:function(e){i=r.flatten(e)},URILiteral:function(s){s=r.flatten(s),s=s.substring(1,s.length-1),e.apply(function(){t.addNamespace(s,i,n.pos,"declare")})}}},n.VarHandler=function(e,t,n){var i=function(i){var s=r.flatten(i);e.apply(function(){var e=t.resolveQName(s,i.pos);t.addVariable(e,n.name,i.pos)})};return{ExprSingle:function(){return!0},VarValue:function(){return!0},VarDefaultValue:function(){return!0},VarName:i,EQName:i}},n.VarRefHandler=function(e,t,n){return{VarName:function(i){var s=r.flatten(i);e.apply(function(){var e=t.resolveQName(s,n.pos);e.uri!==""&&(t.root.namespaces[e.uri].used=!0),t.addVarRef(e,i.pos)})}}}},{"../tree_ops":11,"./errors":1}],3:[function(e,t,n){"use strict";n.getSchemaBuiltinTypes=function(){var e="http://www.w3.org/2001/XMLSchema",t={};return t[e]={variables:{},functions:{}},t[e].functions[e+"#string#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"string",arity:1,eqname:{uri:e,name:"string"}},t[e].functions[e+"#boolean#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"boolean",arity:1,eqname:{uri:e,name:"boolean"}},t[e].functions[e+"#decimal#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"decimal",arity:1,eqname:{uri:e,name:"decimal"}},t[e].functions[e+"#float#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"float",arity:1,eqname:{uri:e,name:"float"}},t[e].functions[e+"#double#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"double",arity:1,eqname:{uri:e,name:"double"}},t[e].functions[e+"#duration#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"duration",arity:1,eqname:{uri:e,name:"duration"}},t[e].functions[e+"#dateTime#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"dateTime",arity:1,eqname:{uri:e,name:"dateTime"}},t[e].functions[e+"#time#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"time",arity:1,eqname:{uri:e,name:"time"}},t[e].functions[e+"#date#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"date",arity:1,eqname:{uri:e,name:"date"}},t[e].functions[e+"#gYearMonth#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gYearMonth",arity:1,eqname:{uri:e,name:"gYearMonth"}},t[e].functions[e+"#gYear#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gYear",arity:1,eqname:{uri:e,name:"gYear"}},t[e].functions[e+"#gMonthDay#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gMonthDay",arity:1,eqname:{uri:e,name:"gMonthDay"}},t[e].functions[e+"#gDay#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gDay",arity:1,eqname:{uri:e,name:"gDay"}},t[e].functions[e+"#gMonth#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"gMonth",arity:1,eqname:{uri:e,name:"gMonth"}},t[e].functions[e+"#hexBinary#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"hexBinary",arity:1,eqname:{uri:e,name:"hexBinary"}},t[e].functions[e+"#base64Binary#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"base64Binary",arity:1,eqname:{uri:e,name:"base64Binary"}},t[e].functions[e+"#anyURI#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"anyURI",arity:1,eqname:{uri:e,name:"anyURI"}},t[e].functions[e+"#QName#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"QName",arity:1,eqname:{uri:e,name:"QName"}},t[e].functions[e+"#normalizedString#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"normalizedString",arity:1,eqname:{uri:e,name:"normalizedString"}},t[e].functions[e+"#token#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"token",arity:1,eqname:{uri:e,name:"token"}},t[e].functions[e+"#language#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"language",arity:1,eqname:{uri:e,name:"language"}},t[e].functions[e+"#NMTOKEN#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"NMTOKEN",arity:1,eqname:{uri:e,name:"NMTOKEN"}},t[e].functions[e+"#Name#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"Name",arity:1,eqname:{uri:e,name:"Name"}},t[e].functions[e+"#NCName#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"NCName",arity:1,eqname:{uri:e,name:"NCName"}},t[e].functions[e+"#ID#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"ID",arity:1,eqname:{uri:e,name:"ID"}},t[e].functions[e+"#IDREF#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"IDREF",arity:1,eqname:{uri:e,name:"IDREF"}},t[e].functions[e+"#ENTITY#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"ENTITY",arity:1,eqname:{uri:e,name:"ENTITY"}},t[e].functions[e+"#integer#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"integer",arity:1,eqname:{uri:e,name:"integer"}},t[e].functions[e+"#nonPositiveInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"nonPositiveInteger",arity:1,eqname:{uri:e,name:"nonPositiveInteger"}},t[e].functions[e+"#negativeInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"negativeInteger",arity:1,eqname:{uri:e,name:"negativeInteger"}},t[e].functions[e+"#long#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"long",arity:1,eqname:{uri:e,name:"long"}},t[e].functions[e+"#int#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"int",arity:1,eqname:{uri:e,name:"int"}},t[e].functions[e+"#short#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"short",arity:1,eqname:{uri:e,name:"short"}},t[e].functions[e+"#byte#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"byte",arity:1,eqname:{uri:e,name:"byte"}},t[e].functions[e+"#nonNegativeInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"nonNegativeInteger",arity:1,eqname:{uri:e,name:"nonNegativeInteger"}},t[e].functions[e+"#unsignedLong#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedLong",arity:1,eqname:{uri:e,name:"unsignedLong"}},t[e].functions[e+"#unsignedInt#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedInt",arity:1,eqname:{uri:e,name:"unsignedInt"}},t[e].functions[e+"#unsignedShort#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedShort",arity:1,eqname:{uri:e,name:"unsignedShort"}},t[e].functions[e+"#unsignedByte#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"unsignedByte",arity:1,eqname:{uri:e,name:"unsignedByte"}},t[e].functions[e+"#positiveInteger#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"positiveInteger",arity:1,eqname:{uri:e,name:"positiveInteger"}},t[e].functions[e+"#yearMonthDuration#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"yearMonthDuration",arity:1,eqname:{uri:e,name:"yearMonthDuration"}},t[e].functions[e+"#dayTimeDuration#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"dayTimeDuration",arity:1,eqname:{uri:e,name:"dayTimeDuration"}},t[e].functions[e+"#untypedAtomic#1"]={params:["$arg as xs:anyAtomicType?"],annotations:[],name:"untypedAtomic",arity:1,eqname:{uri:e,name:"untypedAtomic"}},t}},{}],4:[function(e,t,n){n.StaticContext=function(t,n){"use strict";var r=e("../tree_ops").TreeOps,i=e("./errors"),s=i.StaticError,o=i.StaticWarning,u=e("./schema_built-in_types").getSchemaBuiltinTypes,a={sl:0,sc:0,el:0,ec:0},f={},l=function(e){return e.uri+"#"+e.name},c=function(e,t){return l(e)+"#"+t};t||(f["http://jsoniq.org/functions"]={prefix:"jn",pos:a,type:"module",override:!0},f["http://www.28msec.com/modules/collections"]={prefix:"db",pos:a,type:"module",override:!0},f["http://www.28msec.com/modules/store"]={prefix:"store",pos:a,type:"module",override:!0},f["http://jsoniq.org/function-library"]={prefix:"libjn",pos:a,type:"module",override:!0},f["http://www.w3.org/2005/xpath-functions"]={prefix:"fn",pos:a,type:"module",override:!0},f["http://www.w3.org/2005/xquery-local-functions"]={prefix:"local",pos:a,type:"declare",override:!0},f["http://www.w3.org/2001/XMLSchema-instance"]={prefix:"xsi",pos:a,type:"declare"},f["http://www.w3.org/2001/XMLSchema"]={prefix:"xs",pos:a,type:"declare"},f["http://www.w3.org/XML/1998/namespace"]={prefix:"xml",pos:a,type:"declare"},f["http://zorba.io/annotations"]={prefix:"an",pos:a,type:"declare",override:!0},f["http://www.28msec.com/annotations/rest"]={prefix:"rest",pos:a,type:"declare",override:!0},f["http://www.w3.org/2005/xqt-errors"]={prefix:"err",pos:a,type:"declare",override:!0},f["http://zorba.io/errors"]={prefix:"zerr",pos:a,type:"declare",override:!0});var h={parent:t,children:[],pos:n,setModuleResolver:function(e){return this.root.moduleResolver=e,this},setModules:function(e){if(this!==this.root)throw new Error("setModules() not invoked from the root static context.");this.moduleResolver=function(t){return e[t]};var t=this;return Object.keys(this.namespaces).forEach(function(e){var n=t.namespaces[e];if(n.type==="module"){var i=t.moduleResolver(e);i.variables&&r.concat(t.variables,i.variables),i.functions&&r.concat(t.functions,i.functions)}}),this},setModulesFromXQDoc:function(e){if(this!==this.root)throw new Error("setModulesFromXQDoc() not invoked from the root static context.");var t={};Object.keys(e).forEach(function(n){var r=e[n],i={},s={};r.functions.forEach(function(e){s[n+"#"+e.name+"#"+e.arity]={params:[],annotations:[],name:e.name,arity:e.arity,eqname:{uri:n,name:e.name}},e.parameters.forEach(function(t){s[n+"#"+e.name+"#"+e.arity].params.push("$"+t.name)})}),r.variables.forEach(function(e){var t=e.name.substring(e.name.indexOf(":")+1);i[n+"#"+t]={type:"VarDecl",annotations:[],eqname:{uri:n,name:t}}}),t[n]={variables:i,functions:s}}),this.root.moduleResolver=function(e){return t[e]};var n=this;return Object.keys(this.namespaces).forEach(function(e){var t=n.namespaces[e];if(t.type==="module"){var i=n.moduleResolver(e);i.variables&&r.concat(n.variables,i.variables),i.functions&&r.concat(n.functions,i.functions)}}),this},moduleNamespace:"",defaultFunctionNamespace:"http://www.w3.org/2005/xpath-functions",defaultFunctionNamespaces:["http://www.28msec.com/modules/collections","http://www.28msec.com/modules/store","http://jsoniq.org/functions","http://jsoniq.org/function-library","http://www.w3.org/2001/XMLSchema"],defaultElementNamespace:"",namespaces:f,availableModuleNamespaces:[],importModule:function(e,t,n){if(this!==this.root)throw new Error("Function not invoked from the root static context.");this.addNamespace(e,t,n,"module");if(this.moduleResolver)try{var i=this.moduleResolver(e,[]);i.variables&&r.concat(this.variables,i.variables),i.functions&&r.concat(this.functions,i.functions)}catch(o){throw new s("XQST0059",'module "'+e+'" not found',n)}return this},getAvailableModuleNamespaces:function(){return this.root.availableModuleNamespaces},getPrefixByNamespace:function(e){return this.root.namespaces[e].prefix},addNamespace:function(e,t,n,r){if(t===""&&r==="module")throw new o("W01","Avoid this type of import. Use import module namespace instead",n);if(e==="")throw new s("XQST0088","empty target namespace in module import or module declaration",n);var i=this.getNamespace(e);if(i&&i.type===r&&r!=="declare"&&!i.override)throw new s("XQST0047",'"'+e+'": duplicate target namespace',n);i=this.getNamespaceByPrefix(t);if(i&&!i.override)throw new s("XQST0033",'"'+t+'": namespace prefix already bound to "'+i.uri+'"',n);i=this.namespaces[e],this.namespaces[e]={prefix:t,pos:n,type:r};if(i)throw new o("W02",'"'+e+'" already bound to the "'+i.prefix+'" prefix',n)},getNamespaces:function(){return this.root.namespaces},getNamespace:function(e){var t=this;while(t){var n=t.namespaces[e];if(n)return n;t=t.parent}},getNamespaceByPrefix:function(e){var t=function(t){var r=n.namespaces[t];if(r.prefix===e)throw r.uri=t,r},n=this;while(n){try{Object.keys(n.namespaces).forEach(t)}catch(r){return r}n=n.parent}},resolveQName:function(e,t){var n={uri:"",prefix:"",name:""},r;if(e.substring(0,2)==="Q{")r=e.indexOf("}"),n.uri=e.substring(2,r),n.name=e.substring(r+1);else{r=e.indexOf(":"),n.prefix=e.substring(0,r);var i=this.getNamespaceByPrefix(n.prefix);if(!i&&n.prefix!==""&&["fn","jn"].indexOf(n.prefix)===-1)throw new s("XPST0081",'"'+n.prefix+'": can not expand prefix of lexical QName to namespace URI',t);i&&(n.uri=i.uri),n.name=e.substring(r+1)}return n},variables:{},varRefs:{},functionCalls:{},addVariable:function(e,t,n){if(t!=="VarDecl"||this.moduleNamespace===""||this.moduleNamespace===e.uri||e.uri===""&&this.defaultFunctionNamespace===this.moduleNamespace){var r=l(e);if(t==="VarDecl"&&this.variables[r])throw new s("XQST0049",'"'+e.name+'": duplicate variable declaration',n);return this.variables[r]={type:t,pos:n,qname:e,annotations:{}},this}throw new s("XQST0048",'"'+e.prefix+":"+e.name+'": Qname not library namespace',n)},getVariables:function(){var e={},t=this,n=function(n){e[n]||(e[n]=t.variables[n])};while(t)Object.keys(t.variables).forEach(n),t=t.parent;return e},getVariable:function(e){var t=l(e),n=this;while(n){if(n.variables[t])return n.variables[t];n=n.parent}},addVarRef:function(e,t){var n=this.getVariable(e);if(!n&&(e.uri===""||this.root.moduleResolver))throw new s("XPST0008",'"'+e.name+'": undeclared variable',t);var r=l(e);this.varRefs[r]=!0},addFunctionCall:function(e,t,n){var r=this.getFunction(e,t);if(!(!!r||e.uri!=="http://www.w3.org/2005/xquery-local-functions"&&!this.root.moduleResolver||(e.uri==="http://www.w3.org/2005/xpath-functions"||e.uri===""&&this.root.defaultFunctionNamespaces.concat(this.root.defaultFunctionNamespace).indexOf("http://www.w3.org/2005/xpath-functions")!==-1)&&e.name==="concat")&&!r)throw new s("XPST0008",'"'+e.name+"#"+t+'": undeclared function',n);var i=c(e,t);this.functionCalls[i]=!0},functions:u()["http://www.w3.org/2001/XMLSchema"].functions,getFunctions:function(){return this.root.functions},getFunction:function(e,t){var n=c(e,t),r;if(e.uri===""){var i=this;return this.root.defaultFunctionNamespaces.concat([this.root.defaultFunctionNamespace]).forEach(function(n){if(!!r)return!1;r=i.getFunction({uri:n,prefix:e.prefix,name:e.name},t)}),r}return this.root.functions[n]},addFunction:function(e,t,n){if(this!==this.root)throw new Error("addFunction() not invoked from the root static context.");var r=n.length;if(this.moduleNamespace===""||this.moduleNamespace===e.uri||e.uri===""&&this.defaultFunctionNamespace===this.moduleNamespace){var i=c(e,r);if(this.functions[i])throw new s("XQST0034",'"'+e.name+'": duplicate function declaration',t);return this.functions[i]={pos:t,params:n},this}throw new s("XQST0048",'"'+e.prefix+":"+e.name+'": Qname not library namespace',t)}};return h.root=t?t.root:h,h}},{"../tree_ops":11,"./errors":1,"./schema_built-in_types":3}],5:[function(e,t,n){n.Translator=function(t,n){"use strict";var r=e("./errors"),i=r.StaticError,s=r.StaticWarning,o=e("../tree_ops").TreeOps,u=e("./static_context").StaticContext,a=e("./handlers"),f=function(e,t){var n=[];return t.length===0?e:(e.children.forEach(function(e){e.name===t[0]&&t.length>1?n=f(e,t.slice(1)):e.name===t[0]&&n.push(e)}),n)},l=[];this.apply=function(e){try{e()}catch(t){if(t instanceof i)c(t);else{if(!(t instanceof s))throw t;h(t.getCode(),t.getMessage(),t.getPos())}}};var c=function(e){l.push({pos:e.getPos(),type:"error",level:"error",message:"["+e.getCode()+"] "+e.getMessage()})},h=function(e,t,n){l.push({pos:n,type:"warning",level:"warning",message:"["+e+"] "+t})};this.getMarkers=function(){return l};var p=this;t.pos=n.pos;var d=t,v=function(e){d=new u(d,e),d.parent.children.push(d)},m=function(e){e!==undefined&&(d.pos.el=e.el,d.pos.ec=e.ec),Object.keys(d.varRefs).forEach(function(e){d.variables[e]||(d.parent.varRefs[e]=!0)}),Object.keys(d.variables).forEach(function(e){!d.varRefs[e]&&d.variables[e].type!=="GroupingVariable"&&d.variables[e].type!=="CatchVar"&&h("W03",'Unused variable "$'+d.variables[e].qname.name+'"',d.variables[e].pos)}),d=d.parent};this.visitOnly=function(e,t){e.children.forEach(function(e){t.indexOf(e.name)!==-1&&p.visit(e)})},this.getFirstChild=function(e,t){var n;return e.children.forEach(function(e){e.name===t&&n===undefined&&(n=e)}),n},this.ModuleDecl=function(e){return this.visitChildren(e,a.ModuleDecl(p,t,e)),!0},this.Prolog=function(e){return this.visitOnly(e,["DefaultNamespaceDecl","Setter","NamespaceDecl","Import"]),n.index.forEach(function(e){if(e.name==="VarDecl")e.children.forEach(function(n){n.name==="VarName"&&p.apply(function(){var r=o.flatten(n),i=t.resolveQName(r,n.pos);t.addVariable(i,e.name,n.pos)})});else if(e.name==="FunctionDecl"){var n,r,i=[];e.children.forEach(function(e){e.name==="EQName"?(n=e,r=e.pos):e.name==="ParamList"&&e.children.forEach(function(e){e.name==="Param"&&i.push(o.flatten(e))})}),p.apply(function(){n=o.flatten(n),n=t.resolveQName(n,r),t.addFunction(n,r,i)})}}),this.visitOnly(e,["ContextItemDecl","AnnotatedDecl","OptionDecl"]),!0},this.ModuleImport=function(e){return this.visitChildren(e,a.ModuleImport(p,t,e)),!0},this.SchemaImport=function(e){return this.visitChildren(e,a.SchemaImport(p,t,e)),!0},this.DefaultNamespaceDecl=function(e){return this.visitChildren(e,a.DefaultNamespaceDecl(p,t,e)),!0},this.NamespaceDecl=function(e){return this.visitChildren(e,a.NamespaceDecl(p,t,e)),!0};var g={};this.AnnotatedDecl=function(e){return g={},this.visitChildren(e,a.NamespaceDecl(p,t,e)),!0},this.CompatibilityAnnotation=function(){return g["http://www.w3.org/2012/xquery#updating"]=[],!0},this.Annotation=function(e){return this.visitChildren(e,{EQName:function(e){var t=o.flatten(e);p.apply(function(){var n=d.resolveQName(t,e.pos);g[n.uri+"#"+n.name]=[]})}}),!0},this.VarDecl=function(e){try{var n=p.getFirstChild(e,"VarName"),r=o.flatten(n),i=d.resolveQName(r,n.pos),s=t.getVariable(i);s&&(s.annotations=g)}catch(u){}return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),!0},this.FunctionDecl=function(e){var t=g["http://www.w3.org/2012/xquery#updating"]!==undefined,n=f(e,["ReturnType"])[0],r=f(e,["EQName"])[0];!n&&!t&&h("W05","Untyped return value",r.pos);var i=!1;return e.children.forEach(function(e){if(e.name==="TOKEN"&&e.value==="external")return i=!0,!1}),i||(v(e.pos),this.visitChildren(e),m()),!0},this.VarRef=function(e){return this.visitChildren(e,a.VarRefHandler(p,d,e)),!0},this.Param=function(e){var t=f(e,["TypeDeclaration"])[0];return t||h("W05","Untyped function parameter",e.pos),this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.InlineFunctionExpr=function(e){return v(e.pos),this.visitChildren(e),m(),!0};var y=[],b=function(e){v(e.pos),y.push(0),p.visitChildren(e);for(var t=1;t<=y[y.length-1];t++)m(e.pos);y.pop(),m()};this.StatementsAndOptionalExpr=function(e){return b(e),!0},this.StatementsAndExpr=function(e){return b(e),!0},this.BlockStatement=function(e){return b(e),!0},this.VarDeclStatement=function(e){v(e.pos),y[y.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e))};var w=[];this.FLWORExpr=this.FLWORStatement=function(e){v(e.pos),w.push(0),this.visitChildren(e);for(var t=1;t<=w[w.length-1];t++)m(e.pos);return w.pop(),m(),!0},this.ForBinding=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.LetBinding=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.GroupingSpec=function(e){var t=!1;e.children.forEach(function(e){if(e.value===":=")return t=!0,!1});if(t){var n=e.children[0];return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(n,a.VarHandler(p,d,n)),!0}},this.TumblingWindowClause=function(e){return this.visitOnly(e,["ExprSingle"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),this.visitOnly(e,["WindowStartCondition","WindowEndCondition"]),!0},this.WindowVars=function(e){return v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.SlidingWindowClause=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),this.visitOnly(e,["WindowStartCondition","WindowEndCondition"]),!0},this.PositionalVar=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.PositionalVar=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.CurrentItem=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.PreviousItem=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.NextItem=function(e){return this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.CountClause=function(e){return v(e.pos),w[w.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.CaseClause=function(e){return v(e.pos),this.visitChildren(e,a.VarHandler(p,d,e)),this.visitOnly(e,["ExprSingle"]),m(),!0},this.TransformExpr=function(e){return v(e.pos),this.visitChildren(e),m(),!0},this.TransformSpec=function(e){return this.visitOnly(e,["ExprSingle","VarValue","VarDefaultValue"]),this.visitChildren(e,a.VarHandler(p,d,e)),!0};var E=[];this.QuantifiedExpr=function(e){v(e.pos),E.push(0),this.visitChildren(e);for(var t=1;t<=E[E.length-1];t++)m(e.pos);return E.pop(),m(),!0},this.QuantifiedVarDecl=function(e){return this.visitOnly(e,["ExprSingle"]),v(e.pos),E[E.length-1]++,this.visitChildren(e,a.VarHandler(p,d,e)),!0},this.FunctionCall=function(e){this.visitOnly(e,["ArgumentList"]);var t=p.getFirstChild(e,"EQName"),n=o.flatten(t),r=f(e,["ArgumentList","Argument"]).length;return p.apply(function(){var i=d.resolveQName(n,e.pos);try{i.uri!==""&&(d.root.namespaces[i.uri].used=!0)}catch(s){}d.addFunctionCall(i,r,t.pos)}),!0},this.TryClause=function(e){return v(e.pos),this.visitChildren(e),m(),!0},this.CatchClause=function(e){v(e.pos);var t="err",n="http://www.w3.org/2005/xqt-errors",r={sl:0,sc:0,el:0,ec:0};return d.addVariable({prefix:t,uri:n,name:"code"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"description"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"value"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"module"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"line-number"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"column-number"},"CatchVar",r),d.addVariable({prefix:t,uri:n,name:"additional"},"CatchVar",r),this.visitChildren(e),m(),!0},this.Pragma=function(e){var n=o.flatten(f(e,["EQName"])[0]);n=t.resolveQName(n,e);var r=o.flatten(f(e,["PragmaContents"])[0]);if(n.name==="xqlint"&&n.uri==="http://xqlint.io"){v(e.pos);var i=r.match(/[a-zA-Z]+\(([^)]+)\)/g);return i.forEach(function(t){var n=t.substring(0,t.indexOf("(")),r=t.substring(0,t.length-1).substring(t.indexOf("(")+1).split(",").map(function(e){return e.trim()});n==="varrefs"&&r.forEach(function(t){var n=d.resolveQName(t.substring(1),e.pos);n.uri!==""&&(d.root.namespaces[n.uri].used=!0),d.addVarRef(n,e.pos)})}),this.visitChildren(e),m(),!0}},this.visit=function(e){var t=e.name,n=!1;typeof this[t]=="function"&&(n=this[t](e)===!0),n||this.visitChildren(e)},this.visitChildren=function(e,t){for(var n=0;n<e.children.length;n++){var r=e.children[n];t!==undefined&&typeof t[r.name]=="function"?t[r.name](r):this.visit(r)}},this.visit(n),Object.keys(t.variables).forEach(function(e){!t.varRefs[e]&&(t.variables[e].annotations["http://www.w3.org/2005/xpath-functions#private"]||t.moduleNamespace==="")&&t.variables[e].pos&&h("W03",'Unused variable "'+t.variables[e].qname.name+'"',t.variables[e].pos)}),Object.keys(t.namespaces).forEach(function(e){var n=t.namespaces[e];n.used===undefined&&!n.override&&n.type==="module"&&h("W04",'Unused module "'+e+'"',n.pos)})}},{"../tree_ops":11,"./errors":1,"./handlers":2,"./static_context":4}],6:[function(e,t,n){"use strict";function s(e,t,n){n=n||i;var r=[];for(var s=t-1;s>=0;s--){if(!n.test(e[s]))break;r.push(e[s])}return r.reverse().join("")}function o(e,t){var n=0,r=e.length-1,i=Math.floor((r+n)/2);while(r>n&&i>=0&&e[i].indexOf(t)!==0)t<e[i]?r=i-1:t>e[i]&&(n=i+1),i=Math.floor((r+n)/2);while(i>0&&e[i-1].indexOf(t)===0)i--;return i>=0?i:0}var r=e("../tree_ops").TreeOps,i=/[a-zA-Z_0-9\$]/,u=/[a-zA-Z_0-9\/\.:\-#]/,a="-._A-Za-z0-9:\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02ff\u0300-\u037d\u037f-\u1fff\u200c\u200d\u203f\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd",f="["+a+"]",l="["+a+"\\$]",c=new RegExp(f),h=new RegExp(l),p={LetBinding:"Let binding",Param:"Function parameter",QuantifiedExpr:"Quantified expression binding",VarDeclStatement:"Local variable",ForBinding:"For binding",TumblingWindowClause:"Tumbling window binding",WindowVars:"Window variable",SlidingWindowClause:"Sliding window binding",PositionalVar:"Positional variable",CurrentItem:"Current item",PreviousItem:"Previous item",NextItem:"Next item",CountClause:"Count binding",GroupingVariable:"Grouping variable",VarDecl:"Module variable"},d=function(e,t){t.sort();var n=o(t,e),r=[];for(var i=n;i<t.length&&t[i].indexOf(e)===0;i++)r.push(t[i]);return r},v=function(e,t,n){var r=e.indexOf(":");if(r===-1){var i=[],s=n.getNamespaces();Object.keys(s).forEach(function(e){(s[e].type==="module"||e==="http://www.w3.org/2005/xquery-local-functions")&&i.push(s[e].prefix)});var o=d(e,i),u=function(e){return{name:e+":",value:e+":",meta:"prefix"}};return o.map(u)}return[]},m=function(e,t,n){var r=[],i={},s=n.getFunctions(),o="",u="",a=e,f=e.indexOf(":"),l=!1;if(f!==-1){u=e.substring(0,f),a=e.substring(f+1);var h=n.getNamespaceByPrefix(u);h&&(o=n.getNamespaceByPrefix(u).uri)}else l=!0,o=n.root.defaultFunctionNamespace;Object.keys(s).forEach(function(e){var t=s[e],u=e.substring(0,e.indexOf("#")),a=e.substring(e.indexOf("#")+1);a=a.substring(0,a.indexOf("#"));if(u!==o)return;l||(a=n.getNamespaces()[u].prefix+":"+a),a+="(";var f=a;f+=t.params.map(function(e,t){return"${"+(t+1)+":\\"+e.split(" ")[0]+"}"}).join(", "),a+=t.params.join(", "),a+=")",f+=")",r.push(a),i[a]=f});var p=d(e,r),v=function(e){return{name:e,value:e,meta:"function",priority:4,identifierRegex:c,snippet:i[e]}};return p.map(v)},g=function(e,t,n){var r="",i="",s=e.indexOf(":");s!==-1&&(i=e.substring(0,s),r=n.getNamespaceByPrefix(i).uri);var o=n.getVariables(),u=[],a={};Object.keys(o).forEach(function(e){var t=e.indexOf("#"),r=e.substring(0,t),i=e.substring(t+1);r!==""?(u.push(n.getPrefixByNamespace(r)+":"+i),a[n.getPrefixByNamespace(r)+":"+i]=o[e].type):(u.push(i),a[i]=o[e].type)});var f=d(e,u),l=function(e){return{name:"$"+e,value:"$"+e,meta:p[a[e]],priority:4,identifierRegex:h}};return f.map(l)},y=function(e,t,n){var r=s(e,t.col,c),i=e.substring(0,t.col-(r.length===0?0:r.length)),o=i[i.length-1]==="$";return o?g(r,t,n):r!==""?m(r,t,n).concat(v(r,t,n)):g(r,t,n).concat(m(r,t,n)).concat(v(r,t,n))},b=function(e,t,n){var r=s(e,t.col,u),i=d(r,n.getAvailableModuleNamespaces()),o=function(e){return{name:e,value:e,meta:"module",priority:4,identifierRegex:u}};return i.map(o)};n.complete=function(e,t,n,i){var s=e.split("\n")[i.line],o=r.findNode(t,i),u=r.findNode(n,i);return u=u?u:n,o&&o.name==="URILiteral"&&o.getParent&&o.getParent.name==="ModuleImport"?b(s,i,u):y(s,i,u)}},{"../tree_ops":11}],7:[function(e,t,n){n.StyleChecker=function(e,t){"use strict";var n="    ",r=[];this.getMarkers=function(){return r},this.WS=function(e){var t=e.value.split("\n");return t.forEach(function(i,s){var o=s===0,u=s===t.length-1;/\r$/.test(i)&&r.push({pos:{sl:e.pos.sl+s,el:e.pos.sl+s,sc:i.length-1,ec:i.length},type:"warning",level:"warning",message:"[SW01] Detected CRLF"});var a=i.match(/\t+/);a!==null&&r.push({pos:{sl:e.pos.sl+s,el:e.pos.sl+s,sc:a.index,ec:a.index+a[0].length},type:"warning",level:"warning",message:"[SW02] Tabs detected"});if(!o&&u){a=i.match(/^\ +/);if(a!==null){var f=a[0].length%n.length;f!==0&&r.push({pos:{sl:e.pos.sl+s,el:e.pos.sl+s,sc:a.index,ec:a.index+a[0].length},type:"warning",level:"warning",message:"[SW03] Unexcepted indentation of "+a[0].length})}}}),!0},this.visit=function(e,t){var n=e.name,r=!1;typeof this[n]=="function"&&(r=this[n](e,t)===!0),r||this.visitChildren(e)},this.visitChildren=function(e,t){for(var n=0;n<e.children.length;n++){var r=e.children[n];t!==undefined&&typeof t[r.name]=="function"?t[r.name](r):this.visit(r)}},t.split("\n").forEach(function(e,t){var n=e.match(/\ +$/);n&&r.push({pos:{sl:t,el:t,sc:n.index,ec:n.index+n[0].length},type:"warning",level:"warning",message:"[SW04] Trailing whitespace"})}),this.visit(e)}},{}],8:[function(e,t,n){n.JSONParseTreeHandler=function(e){"use strict";function f(e){return{name:e,children:[],getParent:null,pos:{sl:0,sc:0,el:0,ec:0}}}function l(e){var t=f(e);r===null?(r=t,r.index=[],i=t):(t.getParent=i,i.children.push(t),i=i.children[i.children.length-1])}function c(){if(i.children.length>0){var e=i.children[0],s=null;for(var o=i.children.length-1;o>=0;o--){s=i.children[o];if(s.pos.el!==0||s.pos.ec!==0)break}i.pos.sl=e.pos.sl,i.pos.sc=e.pos.sc,i.pos.el=s.pos.el,i.pos.ec=s.pos.ec}i.name==="FunctionName"&&(i.name="EQName"),i.name==="EQName"&&i.value===undefined&&(i.value=i.children[0].value,i.children.pop()),t.indexOf(i.name)!==-1&&r.index.push(i),i.getParent!==null&&(i=i.getParent);if(i.children.length>0){var u=i.children[i.children.length-1];u.children.length===1&&n.indexOf(u.name)!==-1&&(i.children[i.children.length-1]=u.children[0])}}function h(e,t,n){var r=n-o;i.value=s.substring(0,r),s=s.substring(r),o=n;var f=a,l=u,c=f+i.value.split("\n").length-1,h=i.value.lastIndexOf("\n"),p=h===-1?l+i.value.length:i.value.substring(h+1).length;a=c,u=p,i.pos.sl=f,i.pos.sc=l,i.pos.el=c,i.pos.ec=p}var t=["VarDecl","FunctionDecl"],n=["OrExpr","AndExpr","ComparisonExpr","StringConcatExpr","RangeExpr","UnionExpr","IntersectExceptExpr","InstanceofExpr","TreatExpr","CastableExpr","CastExpr","UnaryExpr","ValueExpr","FTContainsExpr","SimpleMapExpr","PathExpr","RelativePathExpr","PostfixExpr","StepExpr"],r=null,i=null,s=e,o=0,u=0,a=0;this.closeParseTree=function(){while(i.getParent!==null)c();c()},this.peek=function(){return i},this.getParseTree=function(){return r},this.reset=function(){},this.startNonterminal=function(e,t){l(e,t)},this.endNonterminal=function(){c()},this.terminal=function(e,t,n){e=e.substring(0,1)==="'"&&e.substring(e.length-1)==="'"?"TOKEN":e,l(e,t),h(i,t,n),c()},this.whitespace=function(e,t){var n="WS";l(n,e),h(i,e,t),c()}}},{}],9:[function(e,t,n){var r=n.JSONiqParser=function i(e,t){function r(e,t){ic=t,ac=e,fc=e.length,s(0,0,0)}function s(e,t,n){Xl=t,Vl=t,$l=e,Jl=t,Kl=n,Ql=0,cc=n,ec=-1,sc={},ic.reset(ac)}function o(){ic.startNonterminal("Module",Vl);switch($l){case 170:ql(168);break;default:Wl=$l}(Wl==64682||Wl==137898)&&u(),Il(278);switch($l){case 185:ql(146);break;default:Wl=$l}switch(Wl){case 95929:jl(),a();break;default:jl(),Za()}ic.endNonterminal("Module",Vl)}function u(){ic.startNonterminal("VersionDecl",Vl),Pl(170),Il(120);switch($l){case 126:Pl(126),Il(17),Pl(11);break;default:Pl(269),Il(17),Pl(11),Il(113),$l==126&&(Pl(126),Il(17),Pl(11))}Il(29),jl(),c(),ic.endNonterminal("VersionDecl",Vl)}function a(){ic.startNonterminal("LibraryModule",Vl),f(),Il(142),jl(),l(),ic.endNonterminal("LibraryModule",Vl)}function f(){ic.startNonterminal("ModuleDecl",Vl),Pl(185),Il(64),Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61),Il(15),Pl(7),Il(29),jl(),c(),ic.endNonterminal("ModuleDecl",Vl)}function l(){ic.startNonterminal("Prolog",Vl);for(;;){Il(278);switch($l){case 109:ql(207);break;case 155:ql(169);break;default:Wl=$l}if(Wl!=43117&&Wl!=44141&&Wl!=50797&&Wl!=53869&&Wl!=54893&&Wl!=56429&&Wl!=73325&&Wl!=94875&&Wl!=95853&&Wl!=106093&&Wl!=115821&&Wl!=117403)break;switch($l){case 109:ql(201);break;default:Wl=$l}if(Wl==56429){Wl=uc(0,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{_(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(0,Vl,Wl)}}switch(Wl){case-1:jl(),M();break;case 95853:jl(),O();break;case 155:jl(),C();break;case 73325:jl(),D();break;default:jl(),h()}Il(29),jl(),c()}for(;;){Il(278);switch($l){case 109:ql(202);break;default:Wl=$l}if(Wl!=17005&&Wl!=49261&&Wl!=52333&&Wl!=75373&&Wl!=80493&&Wl!=83565&&Wl!=104045&&Wl!=134765&&Wl!=137325)break;switch($l){case 109:ql(197);break;default:Wl=$l}switch(Wl){case 52333:jl(),R();break;case 104045:jl(),Q();break;default:jl(),P()}Il(29),jl(),c()}ic.endNonterminal("Prolog",Vl)}function c(){ic.startNonterminal("Separator",Vl),Pl(54),ic.endNonterminal("Separator",Vl)}function h(){ic.startNonterminal("Setter",Vl);switch($l){case 109:ql(194);break;default:Wl=$l}if(Wl==56429){Wl=uc(1,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{v(),Wl=-2}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),w(),Wl=-6}catch(f){Wl=-9}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(1,Vl,Wl)}}switch(Wl){case 44141:p();break;case-2:d();break;case 43117:m();break;case 50797:g();break;case 106093:y();break;case-6:b();break;case 115821:Io();break;case 53869:E();break;default:T()}ic.endNonterminal("Setter",Vl)}function p(){ic.startNonterminal("BoundarySpaceDecl",Vl),Pl(109),Il(36),Pl(86),Il(137);switch($l){case 218:Pl(218);break;default:Pl(246)}ic.endNonterminal("BoundarySpaceDecl",Vl)}function d(){ic.startNonterminal("DefaultCollationDecl",Vl),Pl(109),Il(49),Pl(110),Il(41),Pl(95),Il(15),Pl(7),ic.endNonterminal("DefaultCollationDecl",Vl)}function v(){Hl(109),Il(49),Hl(110),Il(41),Hl(95),Il(15),Hl(7)}function m(){ic.startNonterminal("BaseURIDecl",Vl),Pl(109),Il(35),Pl(84),Il(15),Pl(7),ic.endNonterminal("BaseURIDecl",Vl)}function g(){ic.startNonterminal("ConstructionDecl",Vl),Pl(109),Il(44),Pl(99),Il(137);switch($l){case 246:Pl(246);break;default:Pl(218)}ic.endNonterminal("ConstructionDecl",Vl)}function y(){ic.startNonterminal("OrderingModeDecl",Vl),Pl(109),Il(71),Pl(207),Il(135);switch($l){case 206:Pl(206);break;default:Pl(262)}ic.endNonterminal("OrderingModeDecl",Vl)}function b(){ic.startNonterminal("EmptyOrderDecl",Vl),Pl(109),Il(49),Pl(110),Il(70),Pl(205),Il(52),Pl(124),Il(125);switch($l){case 149:Pl(149);break;default:Pl(176)}ic.endNonterminal("EmptyOrderDecl",Vl)}function w(){Hl(109),Il(49),Hl(110),Il(70),Hl(205),Il(52),Hl(124),Il(125);switch($l){case 149:Hl(149);break;default:Hl(176)}}function E(){ic.startNonterminal("CopyNamespacesDecl",Vl),Pl(109),Il(47),Pl(105),Il(132),jl(),S(),Il(25),Pl(42),Il(127),jl(),x(),ic.endNonterminal("CopyNamespacesDecl",Vl)}function S(){ic.startNonterminal("PreserveMode",Vl);switch($l){case 218:Pl(218);break;default:Pl(193)}ic.endNonterminal("PreserveMode",Vl)}function x(){ic.startNonterminal("InheritMode",Vl);switch($l){case 159:Pl(159);break;default:Pl(192)}ic.endNonterminal("InheritMode",Vl)}function T(){ic.startNonterminal("DecimalFormatDecl",Vl),Pl(109),Il(118);switch($l){case 107:Pl(107),Il(246),jl(),$a();break;default:Pl(110),Il(48),Pl(107)}for(;;){Il(204);if($l==54)break;jl(),N(),Il(30),Pl(61),Il(17),Pl(11)}ic.endNonterminal("DecimalFormatDecl",Vl)}function N(){ic.startNonterminal("DFPropertyName",Vl);switch($l){case 108:Pl(108);break;case 151:Pl(151);break;case 158:Pl(158);break;case 182:Pl(182);break;case 68:Pl(68);break;case 213:Pl(213);break;case 212:Pl(212);break;case 280:Pl(280);break;case 117:Pl(117);break;default:Pl(211)}ic.endNonterminal("DFPropertyName",Vl)}function C(){ic.startNonterminal("Import",Vl);switch($l){case 155:ql(130);break;default:Wl=$l}switch(Wl){case 117403:k();break;default:A()}ic.endNonterminal("Import",Vl)}function k(){ic.startNonterminal("SchemaImport",Vl),Pl(155),Il(76),Pl(229),Il(141),$l!=7&&(jl(),L()),Il(15),Pl(7),Il(112);if($l==82){Pl(82),Il(15),Pl(7);for(;;){Il(107);if($l!=42)break;Pl(42),Il(15),Pl(7)}}ic.endNonterminal("SchemaImport",Vl)}function L(){ic.startNonterminal("SchemaPrefix",Vl);switch($l){case 187:Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61);break;default:Pl(110),Il(50),Pl(122),Il(64),Pl(187)}ic.endNonterminal("SchemaPrefix",Vl)}function A(){ic.startNonterminal("ModuleImport",Vl),Pl(155),Il(63),Pl(185),Il(93),$l==187&&(Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61)),Il(15),Pl(7),Il(112);if($l==82){Pl(82),Il(15),Pl(7);for(;;){Il(107);if($l!=42)break;Pl(42),Il(15),Pl(7)}}ic.endNonterminal("ModuleImport",Vl)}function O(){ic.startNonterminal("NamespaceDecl",Vl),Pl(109),Il(64),Pl(187),Il(240),jl(),Ga(),Il(30),Pl(61),Il(15),Pl(7),ic.endNonterminal("NamespaceDecl",Vl)}function M(){ic.startNonterminal("DefaultNamespaceDecl",Vl),Pl(109),Il(49),Pl(110),Il(119);switch($l){case 122:Pl(122);break;default:Pl(147)}Il(64),Pl(187),Il(15),Pl(7),ic.endNonterminal("DefaultNamespaceDecl",Vl)}function _(){Hl(109),Il(49),Hl(110),Il(119);switch($l){case 122:Hl(122);break;default:Hl(147)}Il(64),Hl(187),Il(15),Hl(7)}function D(){ic.startNonterminal("FTOptionDecl",Vl),Pl(109),Il(55),Pl(143),Il(84),jl(),Qu(),ic.endNonterminal("FTOptionDecl",Vl)}function P(){ic.startNonterminal("AnnotatedDecl",Vl),Pl(109);for(;;){Il(192);if($l!=33&&$l!=263)break;switch($l){case 263:jl(),H();break;default:jl(),B()}}switch($l){case 268:jl(),F();break;case 147:jl(),_l();break;case 96:jl(),Ca();break;case 157:jl(),Ha();break;default:jl(),Ba()}ic.endNonterminal("AnnotatedDecl",Vl)}function H(){ic.startNonterminal("CompatibilityAnnotation",Vl),Pl(263),ic.endNonterminal("CompatibilityAnnotation",Vl)}function B(){ic.startNonterminal("Annotation",Vl),Pl(33),Il(246),jl(),$a(),Il(193);if($l==35){Pl(35),Il(190),jl(),di();for(;;){Il(105);if($l!=42)break;Pl(42),Il(190),jl(),di()}Pl(38)}ic.endNonterminal("Annotation",Vl)}function j(){Hl(33),Il(246),Ja(),Il(193);if($l==35){Hl(35),Il(190),vi();for(;;){Il(105);if($l!=42)break;Hl(42),Il(190),vi()}Hl(38)}}function F(){ic.startNonterminal("VarDecl",Vl),Pl(268),Il(21),Pl(31),Il(246),jl(),Ti(),Il(157),$l==80&&(jl(),Cs()),Il(110);switch($l){case 53:Pl(53),Il(267),jl(),I();break;default:Pl(134),Il(108),$l==53&&(Pl(53),Il(267),jl(),q())}ic.endNonterminal("VarDecl",Vl)}function I(){ic.startNonterminal("VarValue",Vl),Wf(),ic.endNonterminal("VarValue",Vl)}function q(){ic.startNonterminal("VarDefaultValue",Vl),Wf(),ic.endNonterminal("VarDefaultValue",Vl)}function R(){ic.startNonterminal("ContextItemDecl",Vl),Pl(109),Il(46),Pl(102),Il(58),Pl(167),Il(157),$l==80&&(Pl(80),Il(254),jl(),_s()),Il(110);switch($l){case 53:Pl(53),Il(267),jl(),I();break;default:Pl(134),Il(108),$l==53&&(Pl(53),Il(267),jl(),q())}ic.endNonterminal("ContextItemDecl",Vl)}function U(){ic.startNonterminal("ParamList",Vl),W();for(;;){Il(105);if($l!=42)break;Pl(42),Il(21),jl(),W()}ic.endNonterminal("ParamList",Vl)}function z(){X();for(;;){Il(105);if($l!=42)break;Hl(42),Il(21),X()}}function W(){ic.startNonterminal("Param",Vl),Pl(31),Il(246),jl(),$a(),Il(153),$l==80&&(jl(),Cs()),ic.endNonterminal("Param",Vl)}function X(){Hl(31),Il(246),Ja(),Il(153),$l==80&&ks()}function V(){ic.startNonterminal("FunctionBody",Vl),J(),ic.endNonterminal("FunctionBody",Vl)}function $(){K()}function J(){ic.startNonterminal("EnclosedExpr",Vl),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("EnclosedExpr",Vl)}function K(){Hl(281),Il(267),Y(),Hl(287)}function Q(){ic.startNonterminal("OptionDecl",Vl),Pl(109),Il(69),Pl(203),Il(246),jl(),$a(),Il(17),Pl(11),ic.endNonterminal("OptionDecl",Vl)}function G(){ic.startNonterminal("Expr",Vl),Wf();for(;;){if($l!=42)break;Pl(42),Il(267),jl(),Wf()}ic.endNonterminal("Expr",Vl)}function Y(){Xf();for(;;){if($l!=42)break;Hl(42),Il(267),Xf()}}function Z(){ic.startNonterminal("FLWORExpr",Vl),tt();for(;;){Il(195);if($l==224)break;jl(),rt()}jl(),rn(),ic.endNonterminal("FLWORExpr",Vl)}function et(){nt();for(;;){Il(195);if($l==224)break;it()}sn()}function tt(){ic.startNonterminal("InitialClause",Vl);switch($l){case 139:ql(151);break;default:Wl=$l}switch(Wl){case 16011:st();break;case 177:vt();break;default:bt()}ic.endNonterminal("InitialClause",Vl)}function nt(){switch($l){case 139:ql(151);break;default:Wl=$l}switch(Wl){case 16011:ot();break;case 177:mt();break;default:wt()}}function rt(){ic.startNonterminal("IntermediateClause",Vl);switch($l){case 139:case 177:tt();break;case 272:It();break;case 150:Rt();break;case 106:jt();break;default:Kt()}ic.endNonterminal("IntermediateClause",Vl)}function it(){switch($l){case 139:case 177:nt();break;case 272:qt();break;case 150:Ut();break;case 106:Ft();break;default:Qt()}}function st(){ic.startNonterminal("ForClause",Vl),Pl(139),Il(21),jl(),ut();for(;;){if($l!=42)break;Pl(42),Il(21),jl(),ut()}ic.endNonterminal("ForClause",Vl)}function ot(){Hl(139),Il(21),at();for(;;){if($l!=42)break;Hl(42),Il(21),at()}}function ut(){ic.startNonterminal("ForBinding",Vl),Pl(31),Il(246),jl(),Ti(),Il(182),$l==80&&(jl(),Cs()),Il(173),$l==73&&(jl(),ft()),Il(160),$l==82&&(jl(),ct()),Il(126),$l==232&&(jl(),pt()),Il(56),Pl(156),Il(267),jl(),Wf(),ic.endNonterminal("ForBinding",Vl)}function at(){Hl(31),Il(246),Ni(),Il(182),$l==80&&ks(),Il(173),$l==73&&lt(),Il(160),$l==82&&ht(),Il(126),$l==232&&dt(),Il(56),Hl(156),Il(267),Xf()}function ft(){ic.startNonterminal("AllowingEmpty",Vl),Pl(73),Il(52),Pl(124),ic.endNonterminal("AllowingEmpty",Vl)}function lt(){Hl(73),Il(52),Hl(124)}function ct(){ic.startNonterminal("PositionalVar",Vl),Pl(82),Il(21),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("PositionalVar",Vl)}function ht(){Hl(82),Il(21),Hl(31),Il(246),Ni()}function pt(){ic.startNonterminal("FTScoreVar",Vl),Pl(232),Il(21),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("FTScoreVar",Vl)}function dt(){Hl(232),Il(21),Hl(31),Il(246),Ni()}function vt(){ic.startNonterminal("LetClause",Vl),Pl(177),Il(100),jl(),gt();for(;;){if($l!=42)break;Pl(42),Il(100),jl(),gt()}ic.endNonterminal("LetClause",Vl)}function mt(){Hl(177),Il(100),yt();for(;;){if($l!=42)break;Hl(42),Il(100),yt()}}function gt(){ic.startNonterminal("LetBinding",Vl);switch($l){case 31:Pl(31),Il(246),jl(),Ti(),Il(109),$l==80&&(jl(),Cs());break;default:pt()}Il(28),Pl(53),Il(267),jl(),Wf(),ic.endNonterminal("LetBinding",Vl)}function yt(){switch($l){case 31:Hl(31),Il(246),Ni(),Il(109),$l==80&&ks();break;default:dt()}Il(28),Hl(53),Il(267),Xf()}function bt(){ic.startNonterminal("WindowClause",Vl),Pl(139),Il(139);switch($l){case 257:jl(),Et();break;default:jl(),xt()}ic.endNonterminal("WindowClause",Vl)}function wt(){Hl(139),Il(139);switch($l){case 257:St();break;default:Tt()}}function Et(){ic.startNonterminal("TumblingWindowClause",Vl),Pl(257),Il(88),Pl(275),Il(21),Pl(31),Il(246),jl(),Ti(),Il(114),$l==80&&(jl(),Cs()),Il(56),Pl(156),Il(267),jl(),Wf(),jl(),Nt();if($l==127||$l==202)jl(),kt();ic.endNonterminal("TumblingWindowClause",Vl)}function St(){Hl(257),Il(88),Hl(275),Il(21),Hl(31),Il(246),Ni(),Il(114),$l==80&&ks(),Il(56),Hl(156),Il(267),Xf(),Ct(),($l==127||$l==202)&&Lt()}function xt(){ic.startNonterminal("SlidingWindowClause",Vl),Pl(239),Il(88),Pl(275),Il(21),Pl(31),Il(246),jl(),Ti(),Il(114),$l==80&&(jl(),Cs()),Il(56),Pl(156),Il(267),jl(),Wf(),jl(),Nt(),jl(),kt(),ic.endNonterminal("SlidingWindowClause",Vl)}function Tt(){Hl(239),Il(88),Hl(275),Il(21),Hl(31),Il(246),Ni(),Il(114),$l==80&&ks(),Il(56),Hl(156),Il(267),Xf(),Ct(),Lt()}function Nt(){ic.startNonterminal("WindowStartCondition",Vl),Pl(242),Il(181),jl(),At(),Il(86),Pl(271),Il(267),jl(),Wf(),ic.endNonterminal("WindowStartCondition",Vl)}function Ct(){Hl(242),Il(181),Ot(),Il(86),Hl(271),Il(267),Xf()}function kt(){ic.startNonterminal("WindowEndCondition",Vl),$l==202&&Pl(202),Il(53),Pl(127),Il(181),jl(),At(),Il(86),Pl(271),Il(267),jl(),Wf(),ic.endNonterminal("WindowEndCondition",Vl)}function Lt(){$l==202&&Hl(202),Il(53),Hl(127),Il(181),Ot(),Il(86),Hl(271),Il(267),Xf()}function At(){ic.startNonterminal("WindowVars",Vl),$l==31&&(Pl(31),Il(246),jl(),Mt()),Il(174),$l==82&&(jl(),ct()),Il(163),$l==219&&(Pl(219),Il(21),Pl(31),Il(246),jl(),Dt()),Il(131),$l==190&&(Pl(190),Il(21),Pl(31),Il(246),jl(),Ht()),ic.endNonterminal("WindowVars",Vl)}function Ot(){$l==31&&(Hl(31),Il(246),_t()),Il(174),$l==82&&ht(),Il(163),$l==219&&(Hl(219),Il(21),Hl(31),Il(246),Pt()),Il(131),$l==190&&(Hl(190),Il(21),Hl(31),Il(246),Bt())}function Mt(){ic.startNonterminal("CurrentItem",Vl),$a(),ic.endNonterminal("CurrentItem",Vl)}function _t(){Ja()}function Dt(){ic.startNonterminal("PreviousItem",Vl),$a(),ic.endNonterminal("PreviousItem",Vl)}function Pt(){Ja()}function Ht(){ic.startNonterminal("NextItem",Vl),$a(),ic.endNonterminal("NextItem",Vl)}function Bt(){Ja()}function jt(){ic.startNonterminal("CountClause",Vl),Pl(106),Il(21),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("CountClause",Vl)}function Ft(){Hl(106),Il(21),Hl(31),Il(246),Ni()}function It(){ic.startNonterminal("WhereClause",Vl),Pl(272),Il(267),jl(),Wf(),ic.endNonterminal("WhereClause",Vl)}function qt(){Hl(272),Il(267),Xf()}function Rt(){ic.startNonterminal("GroupByClause",Vl),Pl(150),Il(37),Pl(88),Il(267),jl(),zt(),ic.endNonterminal("GroupByClause",Vl)}function Ut(){Hl(150),Il(37),Hl(88),Il(267),Wt()}function zt(){ic.startNonterminal("GroupingSpecList",Vl),Xt();for(;;){Il(198);if($l!=42)break;Pl(42),Il(267),jl(),Xt()}ic.endNonterminal("GroupingSpecList",Vl)}function Wt(){Vt();for(;;){Il(198);if($l!=42)break;Hl(42),Il(267),Vt()}}function Xt(){ic.startNonterminal("GroupingSpec",Vl);switch($l){case 31:ql(246);break;default:Wl=$l}if(Wl==3103||Wl==36383||Wl==37407||Wl==37919||Wl==38431||Wl==38943||Wl==39967||Wl==40479||Wl==40991||Wl==41503||Wl==42015||Wl==42527||Wl==43039||Wl==43551||Wl==44063||Wl==44575||Wl==45599||Wl==46111||Wl==46623||Wl==47135||Wl==48159||Wl==48671||Wl==49695||Wl==50207||Wl==50719||Wl==52255||Wl==52767||Wl==53279||Wl==53791||Wl==54303||Wl==54815||Wl==55839||Wl==56351||Wl==56863||Wl==57375||Wl==57887||Wl==58399||Wl==60959||Wl==61471||Wl==61983||Wl==62495||Wl==63007||Wl==63519||Wl==64031||Wl==64543||Wl==65055||Wl==66079||Wl==66591||Wl==67615||Wl==68127||Wl==68639||Wl==69151||Wl==69663||Wl==70175||Wl==70687||Wl==71199||Wl==72735||Wl==73247||Wl==75295||Wl==75807||Wl==76831||Wl==77855||Wl==78367||Wl==78879||Wl==79391||Wl==79903||Wl==80415||Wl==82463||Wl==82975||Wl==83487||Wl==83999||Wl==84511||Wl==85023||Wl==85535||Wl==86047||Wl==86559||Wl==87071||Wl==88607||Wl==89119||Wl==89631||Wl==90655||Wl==91679||Wl==92703||Wl==93727||Wl==94239||Wl==94751||Wl==95775||Wl==96287||Wl==96799||Wl==99359||Wl==99871||Wl==100895||Wl==101407||Wl==103455||Wl==103967||Wl==104479||Wl==104991||Wl==105503||Wl==106015||Wl==107551||Wl==110623||Wl==111135||Wl==112671||Wl==113695||Wl==114207||Wl==114719||Wl==115231||Wl==115743||Wl==116767||Wl==117279||Wl==117791||Wl==118303||Wl==118815||Wl==119327||Wl==119839||Wl==122399||Wl==122911||Wl==123423||Wl==123935||Wl==125471||Wl==126495||Wl==127007||Wl==127519||Wl==129567||Wl==130079||Wl==130591||Wl==131103||Wl==131615||Wl==132127||Wl==132639||Wl==133151||Wl==134175||Wl==134687||Wl==136223||Wl==136735||Wl==137247||Wl==137759||Wl==139295||Wl==139807||Wl==141343){Wl=uc(2,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Jt(),Il(206);if($l==53||$l==80)$l==80&&ks(),Il(28),Hl(53),Il(267),Xf();$l==95&&(Hl(95),Il(15),Hl(7)),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(2,Vl,Wl)}}switch(Wl){case-1:$t(),Il(206);if($l==53||$l==80)$l==80&&(jl(),Cs()),Il(28),Pl(53),Il(267),jl(),Wf();$l==95&&(Pl(95),Il(15),Pl(7));break;default:Wf()}ic.endNonterminal("GroupingSpec",Vl)}function Vt(){switch($l){case 31:ql(246);break;default:Wl=$l}if(Wl==3103||Wl==36383||Wl==37407||Wl==37919||Wl==38431||Wl==38943||Wl==39967||Wl==40479||Wl==40991||Wl==41503||Wl==42015||Wl==42527||Wl==43039||Wl==43551||Wl==44063||Wl==44575||Wl==45599||Wl==46111||Wl==46623||Wl==47135||Wl==48159||Wl==48671||Wl==49695||Wl==50207||Wl==50719||Wl==52255||Wl==52767||Wl==53279||Wl==53791||Wl==54303||Wl==54815||Wl==55839||Wl==56351||Wl==56863||Wl==57375||Wl==57887||Wl==58399||Wl==60959||Wl==61471||Wl==61983||Wl==62495||Wl==63007||Wl==63519||Wl==64031||Wl==64543||Wl==65055||Wl==66079||Wl==66591||Wl==67615||Wl==68127||Wl==68639||Wl==69151||Wl==69663||Wl==70175||Wl==70687||Wl==71199||Wl==72735||Wl==73247||Wl==75295||Wl==75807||Wl==76831||Wl==77855||Wl==78367||Wl==78879||Wl==79391||Wl==79903||Wl==80415||Wl==82463||Wl==82975||Wl==83487||Wl==83999||Wl==84511||Wl==85023||Wl==85535||Wl==86047||Wl==86559||Wl==87071||Wl==88607||Wl==89119||Wl==89631||Wl==90655||Wl==91679||Wl==92703||Wl==93727||Wl==94239||Wl==94751||Wl==95775||Wl==96287||Wl==96799||Wl==99359||Wl==99871||Wl==100895||Wl==101407||Wl==103455||Wl==103967||Wl==104479||Wl==104991||Wl==105503||Wl==106015||Wl==107551||Wl==110623||Wl==111135||Wl==112671||Wl==113695||Wl==114207||Wl==114719||Wl==115231||Wl==115743||Wl==116767||Wl==117279||Wl==117791||Wl==118303||Wl==118815||Wl==119327||Wl==119839||Wl==122399||Wl==122911||Wl==123423||Wl==123935||Wl==125471||Wl==126495||Wl==127007||Wl==127519||Wl==129567||Wl==130079||Wl==130591||Wl==131103||Wl==131615||Wl==132127||Wl==132639||Wl==133151||Wl==134175||Wl==134687||Wl==136223||Wl==136735||Wl==137247||Wl==137759||Wl==139295||Wl==139807||Wl==141343){Wl=uc(2,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Jt(),Il(206);if($l==53||$l==80)$l==80&&ks(),Il(28),Hl(53),Il(267),Xf();$l==95&&(Hl(95),Il(15),Hl(7)),oc(2,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(2,t,-2)}}}switch(Wl){case-1:Jt(),Il(206);if($l==53||$l==80)$l==80&&ks(),Il(28),Hl(53),Il(267),Xf();$l==95&&(Hl(95),Il(15),Hl(7));break;case-3:break;default:Xf()}}function $t(){ic.startNonterminal("GroupingVariable",Vl),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("GroupingVariable",Vl)}function Jt(){Hl(31),Il(246),Ni()}function Kt(){ic.startNonterminal("OrderByClause",Vl);switch($l){case 205:Pl(205),Il(37),Pl(88);break;default:Pl(241),Il(70),Pl(205),Il(37),Pl(88)}Il(267),jl(),Gt(),ic.endNonterminal("OrderByClause",Vl)}function Qt(){switch($l){case 205:Hl(205),Il(37),Hl(88);break;default:Hl(241),Il(70),Hl(205),Il(37),Hl(88)}Il(267),Yt()}function Gt(){ic.startNonterminal("OrderSpecList",Vl),Zt();for(;;){Il(198);if($l!=42)break;Pl(42),Il(267),jl(),Zt()}ic.endNonterminal("OrderSpecList",Vl)}function Yt(){en();for(;;){Il(198);if($l!=42)break;Hl(42),Il(267),en()}}function Zt(){ic.startNonterminal("OrderSpec",Vl),Wf(),jl(),tn(),ic.endNonterminal("OrderSpec",Vl)}function en(){Xf(),nn()}function tn(){ic.startNonterminal("OrderModifier",Vl);if($l==81||$l==114)switch($l){case 81:Pl(81);break;default:Pl(114)}Il(203);if($l==124){Pl(124),Il(125);switch($l){case 149:Pl(149);break;default:Pl(176)}}Il(199),$l==95&&(Pl(95),Il(15),Pl(7)),ic.endNonterminal("OrderModifier",Vl)}function nn(){if($l==81||$l==114)switch($l){case 81:Hl(81);break;default:Hl(114)}Il(203);if($l==124){Hl(124),Il(125);switch($l){case 149:Hl(149);break;default:Hl(176)}}Il(199),$l==95&&(Hl(95),Il(15),Hl(7))}function rn(){ic.startNonterminal("ReturnClause",Vl),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("ReturnClause",Vl)}function sn(){Hl(224),Il(267),Xf()}function on(){ic.startNonterminal("QuantifiedExpr",Vl);switch($l){case 240:Pl(240);break;default:Pl(130)}Il(21),jl(),an();for(;;){if($l!=42)break;Pl(42),Il(21),jl(),an()}Pl(228),Il(267),jl(),Wf(),ic.endNonterminal("QuantifiedExpr",Vl)}function un(){switch($l){case 240:Hl(240);break;default:Hl(130)}Il(21),fn();for(;;){if($l!=42)break;Hl(42),Il(21),fn()}Hl(228),Il(267),Xf()}function an(){ic.startNonterminal("QuantifiedVarDecl",Vl),Pl(31),Il(246),jl(),Ti(),Il(114),$l==80&&(jl(),Cs()),Il(56),Pl(156),Il(267),jl(),Wf(),ic.endNonterminal("QuantifiedVarDecl",Vl)}function fn(){Hl(31),Il(246),Ni(),Il(114),$l==80&&ks(),Il(56),Hl(156),Il(267),Xf()}function ln(){ic.startNonterminal("SwitchExpr",Vl),Pl(248),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),hn();if($l!=89)break}Pl(110),Il(73),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("SwitchExpr",Vl)}function cn(){Hl(248),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),pn();if($l!=89)break}Hl(110),Il(73),Hl(224),Il(267),Xf()}function hn(){ic.startNonterminal("SwitchCaseClause",Vl);for(;;){Pl(89),Il(267),jl(),dn();if($l!=89)break}Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("SwitchCaseClause",Vl)}function pn(){for(;;){Hl(89),Il(267),vn();if($l!=89)break}Hl(224),Il(267),Xf()}function dn(){ic.startNonterminal("SwitchCaseOperand",Vl),Wf(),ic.endNonterminal("SwitchCaseOperand",Vl)}function vn(){Xf()}function mn(){ic.startNonterminal("TypeswitchExpr",Vl),Pl(259),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),yn();if($l!=89)break}Pl(110),Il(99),$l==31&&(Pl(31),Il(246),jl(),Ti()),Il(73),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("TypeswitchExpr",Vl)}function gn(){Hl(259),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),bn();if($l!=89)break}Hl(110),Il(99),$l==31&&(Hl(31),Il(246),Ni()),Il(73),Hl(224),Il(267),Xf()}function yn(){ic.startNonterminal("CaseClause",Vl),Pl(89),Il(258),$l==31&&(Pl(31),Il(246),jl(),Ti(),Il(33),Pl(80)),Il(254),jl(),wn(),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("CaseClause",Vl)}function bn(){Hl(89),Il(258),$l==31&&(Hl(31),Il(246),Ni(),Il(33),Hl(80)),Il(254),En(),Hl(224),Il(267),Xf()}function wn(){ic.startNonterminal("SequenceTypeUnion",Vl),Ls();for(;;){Il(138);if($l!=284)break;Pl(284),Il(254),jl(),Ls()}ic.endNonterminal("SequenceTypeUnion",Vl)}function En(){As();for(;;){Il(138);if($l!=284)break;Hl(284),Il(254),As()}}function Sn(){ic.startNonterminal("IfExpr",Vl),Pl(154),Il(22),Pl(35),Il(267),jl(),G(),Pl(38),Il(80),Pl(250),Il(267),jl(),Wf(),Pl(123),Il(267),jl(),Wf(),ic.endNonterminal("IfExpr",Vl)}function xn(){Hl(154),Il(22),Hl(35),Il(267),Y(),Hl(38),Il(80),Hl(250),Il(267),Xf(),Hl(123),Il(267),Xf()}function Tn(){ic.startNonterminal("TryCatchExpr",Vl),Cn();for(;;){Il(39),jl(),On(),Il(208);if($l!=92)break}ic.endNonterminal("TryCatchExpr",Vl)}function Nn(){kn();for(;;){Il(39),Mn(),Il(208);if($l!=92)break}}function Cn(){ic.startNonterminal("TryClause",Vl),Pl(256),Il(90),Pl(281),Il(267),jl(),Ln(),Pl(287),ic.endNonterminal("TryClause",Vl)}function kn(){Hl(256),Il(90),Hl(281),Il(267),An(),Hl(287)}function Ln(){ic.startNonterminal("TryTargetExpr",Vl),G(),ic.endNonterminal("TryTargetExpr",Vl)}function An(){Y()}function On(){ic.startNonterminal("CatchClause",Vl),Pl(92),Il(249),jl(),_n(),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("CatchClause",Vl)}function Mn(){Hl(92),Il(249),Dn(),Hl(281),Il(267),Y(),Hl(287)}function _n(){ic.startNonterminal("CatchErrorList",Vl),Yr();for(;;){Il(140);if($l!=284)break;Pl(284),Il(249),jl(),Yr()}ic.endNonterminal("CatchErrorList",Vl)}function Dn(){Zr();for(;;){Il(140);if($l!=284)break;Hl(284),Il(249),Zr()}}function Pn(){ic.startNonterminal("OrExpr",Vl),Bn();for(;;){if($l!=204)break;Pl(204),Il(267),jl(),Bn()}ic.endNonterminal("OrExpr",Vl)}function Hn(){jn();for(;;){if($l!=204)break;Hl(204),Il(267),jn()}}function Bn(){ic.startNonterminal("AndExpr",Vl),Fn();for(;;){if($l!=76)break;Pl(76),Il(267),jl(),Fn()}ic.endNonterminal("AndExpr",Vl)}function jn(){In();for(;;){if($l!=76)break;Hl(76),Il(267),In()}}function Fn(){ic.startNonterminal("NotExpr",Vl),$l==196&&Pl(196),Il(266),jl(),qn(),ic.endNonterminal("NotExpr",Vl)}function In(){$l==196&&Hl(196),Il(266),Rn()}function qn(){ic.startNonterminal("ComparisonExpr",Vl),Un();if($l==27||$l==55||$l==58||$l==59||$l==61||$l==62||$l==63||$l==64||$l==129||$l==148||$l==152||$l==166||$l==175||$l==181||$l==189){switch($l){case 129:case 148:case 152:case 175:case 181:case 189:jl(),yr();break;case 58:case 64:case 166:jl(),wr();break;default:jl(),mr()}Il(266),jl(),Un()}ic.endNonterminal("ComparisonExpr",Vl)}function Rn(){zn();if($l==27||$l==55||$l==58||$l==59||$l==61||$l==62||$l==63||$l==64||$l==129||$l==148||$l==152||$l==166||$l==175||$l==181||$l==189){switch($l){case 129:case 148:case 152:case 175:case 181:case 189:br();break;case 58:case 64:case 166:Er();break;default:gr()}Il(266),zn()}}function Un(){ic.startNonterminal("FTContainsExpr",Vl),Wn(),$l==100&&(Pl(100),Il(79),Pl(249),Il(177),jl(),ou(),$l==277&&(jl(),Ta())),ic.endNonterminal("FTContainsExpr",Vl)}function zn(){Xn(),$l==100&&(Hl(100),Il(79),Hl(249),Il(177),uu(),$l==277&&Na())}function Wn(){ic.startNonterminal("StringConcatExpr",Vl),Vn();for(;;){if($l!=285)break;Pl(285),Il(266),jl(),Vn()}ic.endNonterminal("StringConcatExpr",Vl)}function Xn(){$n();for(;;){if($l!=285)break;Hl(285),Il(266),$n()}}function Vn(){ic.startNonterminal("RangeExpr",Vl),Jn(),$l==253&&(Pl(253),Il(266),jl(),Jn()),ic.endNonterminal("RangeExpr",Vl)}function $n(){Kn(),$l==253&&(Hl(253),Il(266),Kn())}function Jn(){ic.startNonterminal("AdditiveExpr",Vl),Qn();for(;;){if($l!=41&&$l!=43)break;switch($l){case 41:Pl(41);break;default:Pl(43)}Il(266),jl(),Qn()}ic.endNonterminal("AdditiveExpr",Vl)}function Kn(){Gn();for(;;){if($l!=41&&$l!=43)break;switch($l){case 41:Hl(41);break;default:Hl(43)}Il(266),Gn()}}function Qn(){ic.startNonterminal("MultiplicativeExpr",Vl),Yn();for(;;){if($l!=39&&$l!=119&&$l!=153&&$l!=183)break;switch($l){case 39:Pl(39);break;case 119:Pl(119);break;case 153:Pl(153);break;default:Pl(183)}Il(266),jl(),Yn()}ic.endNonterminal("MultiplicativeExpr",Vl)}function Gn(){Zn();for(;;){if($l!=39&&$l!=119&&$l!=153&&$l!=183)break;switch($l){case 39:Hl(39);break;case 119:Hl(119);break;case 153:Hl(153);break;default:Hl(183)}Il(266),Zn()}}function Yn(){ic.startNonterminal("UnionExpr",Vl),er();for(;;){if($l!=260&&$l!=284)break;switch($l){case 260:Pl(260);break;default:Pl(284)}Il(266),jl(),er()}ic.endNonterminal("UnionExpr",Vl)}function Zn(){tr();for(;;){if($l!=260&&$l!=284)break;switch($l){case 260:Hl(260);break;default:Hl(284)}Il(266),tr()}}function er(){ic.startNonterminal("IntersectExceptExpr",Vl),nr();for(;;){Il(222);if($l!=132&&$l!=164)break;switch($l){case 164:Pl(164);break;default:Pl(132)}Il(266),jl(),nr()}ic.endNonterminal("IntersectExceptExpr",Vl)}function tr(){rr();for(;;){Il(222);if($l!=132&&$l!=164)break;switch($l){case 164:Hl(164);break;default:Hl(132)}Il(266),rr()}}function nr(){ic.startNonterminal("InstanceofExpr",Vl),ir(),Il(223),$l==162&&(Pl(162),Il(67),Pl(200),Il(254),jl(),Ls()),ic.endNonterminal("InstanceofExpr",Vl)}function rr(){sr(),Il(223),$l==162&&(Hl(162),Il(67),Hl(200),Il(254),As())}function ir(){ic.startNonterminal("TreatExpr",Vl),or(),Il(224),$l==254&&(Pl(254),Il(33),Pl(80),Il(254),jl(),Ls()),ic.endNonterminal("TreatExpr",Vl)}function sr(){ur(),Il(224),$l==254&&(Hl(254),Il(33),Hl(80),Il(254),As())}function or(){ic.startNonterminal("CastableExpr",Vl),ar(),Il(225),$l==91&&(Pl(91),Il(33),Pl(80),Il(246),jl(),Ts()),ic.endNonterminal("CastableExpr",Vl)}function ur(){fr(),Il(225),$l==91&&(Hl(91),Il(33),Hl(80),Il(246),Ns())}function ar(){ic.startNonterminal("CastExpr",Vl),lr(),Il(227),$l==90&&(Pl(90),Il(33),Pl(80),Il(246),jl(),Ts()),ic.endNonterminal("CastExpr",Vl)}function fr(){cr(),Il(227),$l==90&&(Hl(90),Il(33),Hl(80),Il(246),Ns())}function lr(){ic.startNonterminal("UnaryExpr",Vl);for(;;){Il(266);if($l!=41&&$l!=43)break;switch($l){case 43:Pl(43);break;default:Pl(41)}}jl(),hr(),ic.endNonterminal("UnaryExpr",Vl)}function cr(){for(;;){Il(266);if($l!=41&&$l!=43)break;switch($l){case 43:Hl(43);break;default:Hl(41)}}pr()}function hr(){ic.startNonterminal("ValueExpr",Vl);switch($l){case 266:ql(188);break;default:Wl=$l}switch(Wl){case 89354:case 125706:case 132362:case 144138:Sr();break;case 36:Cr();break;default:dr()}ic.endNonterminal("ValueExpr",Vl)}function pr(){switch($l){case 266:ql(188);break;default:Wl=$l}switch(Wl){case 89354:case 125706:case 132362:case 144138:xr();break;case 36:kr();break;default:vr()}}function dr(){ic.startNonterminal("SimpleMapExpr",Vl),Or();for(;;){if($l!=26)break;Pl(26),Il(263),jl(),Or()}ic.endNonterminal("SimpleMapExpr",Vl)}function vr(){Mr();for(;;){if($l!=26)break;Hl(26),Il(263),Mr()}}function mr(){ic.startNonterminal("GeneralComp",Vl);switch($l){case 61:Pl(61);break;case 27:Pl(27);break;case 55:Pl(55);break;case 59:Pl(59);break;case 62:Pl(62);break;default:Pl(63)}ic.endNonterminal("GeneralComp",Vl)}function gr(){switch($l){case 61:Hl(61);break;case 27:Hl(27);break;case 55:Hl(55);break;case 59:Hl(59);break;case 62:Hl(62);break;default:Hl(63)}}function yr(){ic.startNonterminal("ValueComp",Vl);switch($l){case 129:Pl(129);break;case 189:Pl(189);break;case 181:Pl(181);break;case 175:Pl(175);break;case 152:Pl(152);break;default:Pl(148)}ic.endNonterminal("ValueComp",Vl)}function br(){switch($l){case 129:Hl(129);break;case 189:Hl(189);break;case 181:Hl(181);break;case 175:Hl(175);break;case 152:Hl(152);break;default:Hl(148)}}function wr(){ic.startNonterminal("NodeComp",Vl);switch($l){case 166:Pl(166);break;case 58:Pl(58);break;default:Pl(64)}ic.endNonterminal("NodeComp",Vl)}function Er(){switch($l){case 166:Hl(166);break;case 58:Hl(58);break;default:Hl(64)}}function Sr(){ic.startNonterminal("ValidateExpr",Vl),Pl(266),Il(175);if($l!=281)switch($l){case 258:Pl(258),Il(246),jl(),Ao();break;default:jl(),Tr()}Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("ValidateExpr",Vl)}function xr(){Hl(266),Il(175);if($l!=281)switch($l){case 258:Hl(258),Il(246),Oo();break;default:Nr()}Il(90),Hl(281),Il(267),Y(),Hl(287)}function Tr(){ic.startNonterminal("ValidationMode",Vl);switch($l){case 174:Pl(174);break;default:Pl(245)}ic.endNonterminal("ValidationMode",Vl)}function Nr(){switch($l){case 174:Hl(174);break;default:Hl(245)}}function Cr(){ic.startNonterminal("ExtensionExpr",Vl);for(;;){jl(),Lr(),Il(104);if($l!=36)break}Pl(281),Il(275),$l!=287&&(jl(),G()),Pl(287),ic.endNonterminal("ExtensionExpr",Vl)}function kr(){for(;;){Ar(),Il(104);if($l!=36)break}Hl(281),Il(275),$l!=287&&Y(),Hl(287)}function Lr(){ic.startNonterminal("Pragma",Vl),Pl(36),Rl(243),$l==21&&Pl(21),$a(),Rl(10),$l==21&&(Pl(21),Rl(0),Pl(1)),Rl(5),Pl(30),ic.endNonterminal("Pragma",Vl)}function Ar(){Hl(36),Rl(243),$l==21&&Hl(21),Ja(),Rl(10),$l==21&&(Hl(21),Rl(0),Hl(1)),Rl(5),Hl(30)}function Or(){ic.startNonterminal("PathExpr",Vl);switch($l){case 47:Pl(47),Il(289);switch($l){case 25:case 26:case 27:case 38:case 39:case 41:case 42:case 43:case 50:case 54:case 58:case 59:case 61:case 62:case 63:case 64:case 70:case 88:case 100:case 209:case 237:case 252:case 279:case 284:case 285:case 286:case 287:break;default:jl(),_r()}break;case 48:Pl(48),Il(260),jl(),_r();break;default:_r()}ic.endNonterminal("PathExpr",Vl)}function Mr(){switch($l){case 47:Hl(47),Il(289);switch($l){case 25:case 26:case 27:case 38:case 39:case 41:case 42:case 43:case 50:case 54:case 58:case 59:case 61:case 62:case 63:case 64:case 70:case 88:case 100:case 209:case 237:case 252:case 279:case 284:case 285:case 286:case 287:break;default:Dr()}break;case 48:Hl(48),Il(260),Dr();break;default:Dr()}}function _r(){ic.startNonterminal("RelativePathExpr",Vl),ei();for(;;){switch($l){case 26:ql(265);break;default:Wl=$l}if(Wl!=25&&Wl!=27&&Wl!=38&&Wl!=39&&Wl!=41&&Wl!=42&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=50&&Wl!=54&&Wl!=55&&Wl!=58&&Wl!=59&&Wl!=61&&Wl!=62&&Wl!=63&&Wl!=64&&Wl!=70&&Wl!=71&&Wl!=76&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=85&&Wl!=88&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=95&&Wl!=100&&Wl!=106&&Wl!=110&&Wl!=114&&Wl!=119&&Wl!=123&&Wl!=124&&Wl!=127&&Wl!=129&&Wl!=132&&Wl!=139&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=162&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=175&&Wl!=177&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=189&&Wl!=202&&Wl!=204&&Wl!=205&&Wl!=209&&Wl!=224&&Wl!=228&&Wl!=237&&Wl!=241&&Wl!=242&&Wl!=252&&Wl!=253&&Wl!=254&&Wl!=260&&Wl!=272&&Wl!=276&&Wl!=279&&Wl!=284&&Wl!=285&&Wl!=286&&Wl!=287&&Wl!=2586&&Wl!=23578&&Wl!=24090&&Wl!=24602&&Wl!=34330){Wl=uc(3,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{switch($l){case 47:Hl(47);break;case 48:Hl(48);break;default:Hl(26)}Il(264),Hr(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(3,Vl,Wl)}}if(Wl!=-1&&Wl!=47&&Wl!=48&&Wl!=2586&&Wl!=23578&&Wl!=34330)break;switch($l){case 47:Pl(47);break;case 48:Pl(48);break;default:Pl(26)}Il(264),jl(),Pr()}ic.endNonterminal("RelativePathExpr",Vl)}function Dr(){ti();for(;;){switch($l){case 26:ql(265);break;default:Wl=$l}if(Wl!=25&&Wl!=27&&Wl!=38&&Wl!=39&&Wl!=41&&Wl!=42&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=50&&Wl!=54&&Wl!=55&&Wl!=58&&Wl!=59&&Wl!=61&&Wl!=62&&Wl!=63&&Wl!=64&&Wl!=70&&Wl!=71&&Wl!=76&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=85&&Wl!=88&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=95&&Wl!=100&&Wl!=106&&Wl!=110&&Wl!=114&&Wl!=119&&Wl!=123&&Wl!=124&&Wl!=127&&Wl!=129&&Wl!=132&&Wl!=139&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=162&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=175&&Wl!=177&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=189&&Wl!=202&&Wl!=204&&Wl!=205&&Wl!=209&&Wl!=224&&Wl!=228&&Wl!=237&&Wl!=241&&Wl!=242&&Wl!=252&&Wl!=253&&Wl!=254&&Wl!=260&&Wl!=272&&Wl!=276&&Wl!=279&&Wl!=284&&Wl!=285&&Wl!=286&&Wl!=287&&Wl!=2586&&Wl!=23578&&Wl!=24090&&Wl!=24602&&Wl!=34330){Wl=uc(3,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{switch($l){case 47:Hl(47);break;case 48:Hl(48);break;default:Hl(26)}Il(264),Hr(),oc(3,t,-1);continue}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(3,t,-2);break}}}if(Wl!=-1&&Wl!=47&&Wl!=48&&Wl!=2586&&Wl!=23578&&Wl!=34330)break;switch($l){case 47:Hl(47);break;case 48:Hl(48);break;default:Hl(26)}Il(264),Hr()}}function Pr(){ic.startNonterminal("StepExpr",Vl);switch($l){case 83:ql(288);break;case 122:ql(287);break;case 187:case 220:ql(285);break;case 135:case 197:case 255:ql(237);break;case 97:case 120:case 206:case 249:case 262:ql(239);break;case 79:case 125:case 154:case 167:case 169:case 247:case 248:case 259:ql(230);break;case 74:case 75:case 94:case 112:case 113:case 137:case 138:case 210:case 216:case 217:case 234:ql(238);break;case 6:case 71:case 73:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 114:case 119:case 121:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 139:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 188:case 189:case 194:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 230:case 231:case 232:case 233:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(234);break;default:Wl=$l}if(Wl==12935||Wl==12997||Wl==13055||Wl==13447||Wl==13509||Wl==13567||Wl==13959||Wl==14021||Wl==14079||Wl==19591||Wl==19653||Wl==19711||Wl==20103||Wl==20165||Wl==20223||Wl==21127||Wl==21189||Wl==21247||Wl==21639||Wl==21701||Wl==21759||Wl==22151||Wl==22213||Wl==22271||Wl==24199||Wl==24261||Wl==24319||Wl==24711||Wl==24773||Wl==24831||Wl==25735||Wl==25797||Wl==25855||Wl==27783||Wl==27845||Wl==27903||Wl==28295||Wl==28357||Wl==28415||Wl==29831||Wl==29893||Wl==29951||Wl==30343||Wl==30405||Wl==30463||Wl==31367||Wl==31429||Wl==31487||Wl==31879||Wl==31941||Wl==31999||Wl==32391||Wl==32453||Wl==32511||Wl==32903||Wl==32965||Wl==33023||Wl==35463||Wl==35525||Wl==35583||Wl==35975||Wl==36037||Wl==36095||Wl==36435||Wl==36474||Wl==36487||Wl==36539||Wl==36549||Wl==36572||Wl==36607||Wl==38995||Wl==39034||Wl==39047||Wl==39099||Wl==39109||Wl==39132||Wl==39167||Wl==41043||Wl==41082||Wl==41095||Wl==41147||Wl==41157||Wl==41180||Wl==41215||Wl==41555||Wl==41594||Wl==41607||Wl==41659||Wl==41669||Wl==41692||Wl==41727||Wl==42067||Wl==42106||Wl==42119||Wl==42171||Wl==42181||Wl==42204||Wl==42239||Wl==43603||Wl==43642||Wl==43655||Wl==43707||Wl==43717||Wl==43740||Wl==43775||Wl==45191||Wl==45253||Wl==45311||Wl==45651||Wl==45690||Wl==45703||Wl==45755||Wl==45765||Wl==45788||Wl==45823||Wl==46163||Wl==46202||Wl==46215||Wl==46267||Wl==46277||Wl==46300||Wl==46335||Wl==46675||Wl==46714||Wl==46727||Wl==46779||Wl==46789||Wl==46812||Wl==46847||Wl==48723||Wl==48762||Wl==48775||Wl==48827||Wl==48837||Wl==48860||Wl==48895||Wl==51335||Wl==51397||Wl==51455||Wl==54355||Wl==54394||Wl==54407||Wl==54459||Wl==54469||Wl==54492||Wl==54527||Wl==56403||Wl==56442||Wl==56455||Wl==56507||Wl==56517||Wl==56540||Wl==56575||Wl==58451||Wl==58490||Wl==58503||Wl==58555||Wl==58565||Wl==58588||Wl==58623||Wl==61011||Wl==61050||Wl==61063||Wl==61115||Wl==61125||Wl==61148||Wl==61183||Wl==63059||Wl==63098||Wl==63111||Wl==63163||Wl==63173||Wl==63196||Wl==63231||Wl==63571||Wl==63610||Wl==63623||Wl==63675||Wl==63685||Wl==63708||Wl==63743||Wl==65107||Wl==65146||Wl==65159||Wl==65211||Wl==65221||Wl==65244||Wl==65279||Wl==66131||Wl==66170||Wl==66183||Wl==66235||Wl==66245||Wl==66268||Wl==66303||Wl==67667||Wl==67706||Wl==67719||Wl==67771||Wl==67781||Wl==67804||Wl==67839||Wl==71251||Wl==71290||Wl==71303||Wl==71355||Wl==71365||Wl==71388||Wl==71423||Wl==75859||Wl==75898||Wl==75911||Wl==75963||Wl==75973||Wl==75996||Wl==76031||Wl==76883||Wl==76922||Wl==76935||Wl==76987||Wl==76997||Wl==77020||Wl==77055||Wl==77907||Wl==77946||Wl==77959||Wl==78011||Wl==78021||Wl==78044||Wl==78079||Wl==78419||Wl==78458||Wl==78471||Wl==78523||Wl==78533||Wl==78556||Wl==78591||Wl==83027||Wl==83066||Wl==83079||Wl==83131||Wl==83141||Wl==83164||Wl==83199||Wl==84051||Wl==84090||Wl==84103||Wl==84155||Wl==84165||Wl==84188||Wl==84223||Wl==84563||Wl==84602||Wl==84615||Wl==84667||Wl==84677||Wl==84700||Wl==84735||Wl==85075||Wl==85114||Wl==85127||Wl==85179||Wl==85189||Wl==85212||Wl==85247||Wl==89683||Wl==89722||Wl==89735||Wl==89787||Wl==89797||Wl==89820||Wl==89855||Wl==90707||Wl==90746||Wl==90759||Wl==90811||Wl==90821||Wl==90844||Wl==90879||Wl==92755||Wl==92794||Wl==92807||Wl==92859||Wl==92869||Wl==92892||Wl==92927||Wl==93779||Wl==93818||Wl==93831||Wl==93883||Wl==93893||Wl==93916||Wl==93951||Wl==94291||Wl==94330||Wl==94343||Wl==94395||Wl==94405||Wl==94428||Wl==94463||Wl==96851||Wl==96890||Wl==96903||Wl==96955||Wl==96965||Wl==96988||Wl==97023||Wl==103507||Wl==103546||Wl==103559||Wl==103611||Wl==103621||Wl==103644||Wl==103679||Wl==104531||Wl==104570||Wl==104583||Wl==104635||Wl==104645||Wl==104668||Wl==104703||Wl==105043||Wl==105082||Wl==105095||Wl==105147||Wl==105157||Wl==105180||Wl==105215||Wl==107143||Wl==107205||Wl==107263||Wl==114771||Wl==114810||Wl==114823||Wl==114875||Wl==114885||Wl==114908||Wl==114943||Wl==116819||Wl==116858||Wl==116871||Wl==116923||Wl==116933||Wl==116956||Wl==116991||Wl==121479||Wl==121541||Wl==121599||Wl==123475||Wl==123514||Wl==123527||Wl==123579||Wl==123589||Wl==123612||Wl==123647||Wl==123987||Wl==124026||Wl==124039||Wl==124091||Wl==124101||Wl==124124||Wl==124159||Wl==129159||Wl==129221||Wl==129279||Wl==129619||Wl==129658||Wl==129671||Wl==129723||Wl==129733||Wl==129756||Wl==129791||Wl==130131||Wl==130170||Wl==130183||Wl==130235||Wl==130245||Wl==130268||Wl==130303||Wl==133203||Wl==133242||Wl==133255||Wl==133307||Wl==133317||Wl==133340||Wl==133375||Wl==139347||Wl==139386||Wl==139399||Wl==139451||Wl==139461||Wl==139484||Wl==139519||Wl==141395||Wl==141434||Wl==141447||Wl==141499||Wl==141509||Wl==141532||Wl==141567||Wl==142983||Wl==143045||Wl==143103||Wl==145543||Wl==145605||Wl==145663||Wl==146055||Wl==146117||Wl==146175||Wl==146567||Wl==146629||Wl==146687||Wl==147079||Wl==147141||Wl==147199){Wl=uc(4,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ti(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(4,Vl,Wl)}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 33:case 35:case 55:case 56:case 60:case 69:case 281:case 283:case 3155:case 3194:case 9915:case 9948:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14995:case 14996:case 14998:case 15e3:case 15001:case 15002:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15016:case 15017:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15036:case 15037:case 15042:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15078:case 15079:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15095:case 15096:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15107:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18055:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18067:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18117:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18175:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:case 23175:case 23237:case 23295:case 37459:case 37498:case 37563:case 37596:case 37971:case 38010:case 38075:case 38108:case 38483:case 38522:case 38587:case 38620:case 40019:case 40058:case 40123:case 40156:case 40531:case 40570:case 42579:case 42618:case 42683:case 42716:case 43091:case 43130:case 43195:case 43228:case 44115:case 44154:case 44219:case 44252:case 44627:case 44666:case 44731:case 44764:case 47187:case 47226:case 47291:case 47324:case 48211:case 48250:case 48315:case 48348:case 49747:case 49786:case 49851:case 49884:case 50259:case 50298:case 50363:case 50396:case 50771:case 50810:case 50875:case 50908:case 52307:case 52346:case 52411:case 52444:case 52819:case 52858:case 52923:case 52956:case 53331:case 53370:case 53435:case 53468:case 53843:case 53882:case 53947:case 53980:case 54867:case 54906:case 54971:case 55004:case 55891:case 55930:case 55995:case 56028:case 56915:case 56954:case 57019:case 57052:case 57427:case 57466:case 57531:case 57564:case 57939:case 57978:case 58043:case 58076:case 61523:case 61562:case 61627:case 61660:case 62035:case 62074:case 62139:case 62172:case 62547:case 62586:case 62651:case 62684:case 64083:case 64122:case 64187:case 64220:case 64595:case 64634:case 64699:case 64732:case 66643:case 66682:case 66747:case 66780:case 68179:case 68218:case 68283:case 68316:case 68691:case 68730:case 68795:case 68828:case 69203:case 69242:case 69307:case 69340:case 69715:case 69754:case 69819:case 69852:case 70227:case 70266:case 70331:case 70364:case 70739:case 70778:case 70843:case 70876:case 72787:case 72826:case 72891:case 72924:case 73299:case 73338:case 73403:case 73436:case 75347:case 75386:case 75451:case 75484:case 78931:case 78970:case 79035:case 79068:case 79443:case 79482:case 79547:case 79580:case 79955:case 79994:case 80059:case 80092:case 80467:case 80506:case 80571:case 80604:case 82515:case 82554:case 82619:case 82652:case 83539:case 83578:case 83643:case 83676:case 85587:case 85626:case 85691:case 85724:case 86099:case 86138:case 86203:case 86236:case 86611:case 86650:case 87123:case 87162:case 87227:case 87260:case 88659:case 88698:case 88763:case 88796:case 89171:case 89210:case 89275:case 89308:case 91731:case 91770:case 91835:case 91868:case 94803:case 94842:case 94907:case 94940:case 95827:case 95866:case 95931:case 95964:case 96339:case 96378:case 96443:case 96476:case 99411:case 99450:case 99515:case 99548:case 99923:case 99962:case 100027:case 100060:case 100947:case 100986:case 101051:case 101084:case 101459:case 101498:case 101563:case 101596:case 104019:case 104058:case 104123:case 104156:case 105555:case 105594:case 105659:case 105692:case 106067:case 106106:case 106171:case 106204:case 107603:case 107642:case 107707:case 107740:case 110675:case 110714:case 110779:case 110812:case 111187:case 111226:case 111291:case 111324:case 112723:case 112762:case 112827:case 112860:case 113747:case 113786:case 113851:case 113884:case 114259:case 114298:case 114363:case 114396:case 115283:case 115322:case 115387:case 115420:case 115795:case 115834:case 115899:case 115932:case 117331:case 117370:case 117435:case 117468:case 117843:case 117882:case 117947:case 117980:case 118355:case 118394:case 118459:case 118492:case 118867:case 118906:case 118971:case 119004:case 119379:case 119418:case 119483:case 119516:case 119891:case 119930:case 119995:case 120028:case 122451:case 122490:case 122555:case 122588:case 122963:case 123002:case 123067:case 123100:case 125523:case 125562:case 125627:case 125660:case 126547:case 126586:case 127059:case 127098:case 127163:case 127196:case 127571:case 127610:case 127675:case 127708:case 130643:case 130682:case 130747:case 130780:case 131155:case 131194:case 131259:case 131292:case 131667:case 131706:case 131771:case 131804:case 132179:case 132218:case 132283:case 132316:case 132691:case 132730:case 132795:case 132828:case 134227:case 134266:case 134331:case 134364:case 134739:case 134778:case 134843:case 134876:case 136275:case 136314:case 136379:case 136412:case 136787:case 136826:case 136891:case 136924:case 137299:case 137338:case 137403:case 137436:case 137811:case 137850:case 137915:case 137948:case 139859:case 139898:case 139963:case 139996:case 143955:case 143969:case 143992:case 143994:case 144059:case 144078:case 144092:case 144121:case 144134:ei();break;default:Br()}ic.endNonterminal("StepExpr",Vl)}function Hr(){switch($l){case 83:ql(288);break;case 122:ql(287);break;case 187:case 220:ql(285);break;case 135:case 197:case 255:ql(237);break;case 97:case 120:case 206:case 249:case 262:ql(239);break;case 79:case 125:case 154:case 167:case 169:case 247:case 248:case 259:ql(230);break;case 74:case 75:case 94:case 112:case 113:case 137:case 138:case 210:case 216:case 217:case 234:ql(238);break;case 6:case 71:case 73:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 114:case 119:case 121:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 139:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 188:case 189:case 194:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 230:case 231:case 232:case 233:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(234);break;default:Wl=$l}if(Wl==12935||Wl==12997||Wl==13055||Wl==13447||Wl==13509||Wl==13567||Wl==13959||Wl==14021||Wl==14079||Wl==19591||Wl==19653||Wl==19711||Wl==20103||Wl==20165||Wl==20223||Wl==21127||Wl==21189||Wl==21247||Wl==21639||Wl==21701||Wl==21759||Wl==22151||Wl==22213||Wl==22271||Wl==24199||Wl==24261||Wl==24319||Wl==24711||Wl==24773||Wl==24831||Wl==25735||Wl==25797||Wl==25855||Wl==27783||Wl==27845||Wl==27903||Wl==28295||Wl==28357||Wl==28415||Wl==29831||Wl==29893||Wl==29951||Wl==30343||Wl==30405||Wl==30463||Wl==31367||Wl==31429||Wl==31487||Wl==31879||Wl==31941||Wl==31999||Wl==32391||Wl==32453||Wl==32511||Wl==32903||Wl==32965||Wl==33023||Wl==35463||Wl==35525||Wl==35583||Wl==35975||Wl==36037||Wl==36095||Wl==36435||Wl==36474||Wl==36487||Wl==36539||Wl==36549||Wl==36572||Wl==36607||Wl==38995||Wl==39034||Wl==39047||Wl==39099||Wl==39109||Wl==39132||Wl==39167||Wl==41043||Wl==41082||Wl==41095||Wl==41147||Wl==41157||Wl==41180||Wl==41215||Wl==41555||Wl==41594||Wl==41607||Wl==41659||Wl==41669||Wl==41692||Wl==41727||Wl==42067||Wl==42106||Wl==42119||Wl==42171||Wl==42181||Wl==42204||Wl==42239||Wl==43603||Wl==43642||Wl==43655||Wl==43707||Wl==43717||Wl==43740||Wl==43775||Wl==45191||Wl==45253||Wl==45311||Wl==45651||Wl==45690||Wl==45703||Wl==45755||Wl==45765||Wl==45788||Wl==45823||Wl==46163||Wl==46202||Wl==46215||Wl==46267||Wl==46277||Wl==46300||Wl==46335||Wl==46675||Wl==46714||Wl==46727||Wl==46779||Wl==46789||Wl==46812||Wl==46847||Wl==48723||Wl==48762||Wl==48775||Wl==48827||Wl==48837||Wl==48860||Wl==48895||Wl==51335||Wl==51397||Wl==51455||Wl==54355||Wl==54394||Wl==54407||Wl==54459||Wl==54469||Wl==54492||Wl==54527||Wl==56403||Wl==56442||Wl==56455||Wl==56507||Wl==56517||Wl==56540||Wl==56575||Wl==58451||Wl==58490||Wl==58503||Wl==58555||Wl==58565||Wl==58588||Wl==58623||Wl==61011||Wl==61050||Wl==61063||Wl==61115||Wl==61125||Wl==61148||Wl==61183||Wl==63059||Wl==63098||Wl==63111||Wl==63163||Wl==63173||Wl==63196||Wl==63231||Wl==63571||Wl==63610||Wl==63623||Wl==63675||Wl==63685||Wl==63708||Wl==63743||Wl==65107||Wl==65146||Wl==65159||Wl==65211||Wl==65221||Wl==65244||Wl==65279||Wl==66131||Wl==66170||Wl==66183||Wl==66235||Wl==66245||Wl==66268||Wl==66303||Wl==67667||Wl==67706||Wl==67719||Wl==67771||Wl==67781||Wl==67804||Wl==67839||Wl==71251||Wl==71290||Wl==71303||Wl==71355||Wl==71365||Wl==71388||Wl==71423||Wl==75859||Wl==75898||Wl==75911||Wl==75963||Wl==75973||Wl==75996||Wl==76031||Wl==76883||Wl==76922||Wl==76935||Wl==76987||Wl==76997||Wl==77020||Wl==77055||Wl==77907||Wl==77946||Wl==77959||Wl==78011||Wl==78021||Wl==78044||Wl==78079||Wl==78419||Wl==78458||Wl==78471||Wl==78523||Wl==78533||Wl==78556||Wl==78591||Wl==83027||Wl==83066||Wl==83079||Wl==83131||Wl==83141||Wl==83164||Wl==83199||Wl==84051||Wl==84090||Wl==84103||Wl==84155||Wl==84165||Wl==84188||Wl==84223||Wl==84563||Wl==84602||Wl==84615||Wl==84667||Wl==84677||Wl==84700||Wl==84735||Wl==85075||Wl==85114||Wl==85127||Wl==85179||Wl==85189||Wl==85212||Wl==85247||Wl==89683||Wl==89722||Wl==89735||Wl==89787||Wl==89797||Wl==89820||Wl==89855||Wl==90707||Wl==90746||Wl==90759||Wl==90811||Wl==90821||Wl==90844||Wl==90879||Wl==92755||Wl==92794||Wl==92807||Wl==92859||Wl==92869||Wl==92892||Wl==92927||Wl==93779||Wl==93818||Wl==93831||Wl==93883||Wl==93893||Wl==93916||Wl==93951||Wl==94291||Wl==94330||Wl==94343||Wl==94395||Wl==94405||Wl==94428||Wl==94463||Wl==96851||Wl==96890||Wl==96903||Wl==96955||Wl==96965||Wl==96988||Wl==97023||Wl==103507||Wl==103546||Wl==103559||Wl==103611||Wl==103621||Wl==103644||Wl==103679||Wl==104531||Wl==104570||Wl==104583||Wl==104635||Wl==104645||Wl==104668||Wl==104703||Wl==105043||Wl==105082||Wl==105095||Wl==105147||Wl==105157||Wl==105180||Wl==105215||Wl==107143||Wl==107205||Wl==107263||Wl==114771||Wl==114810||Wl==114823||Wl==114875||Wl==114885||Wl==114908||Wl==114943||Wl==116819||Wl==116858||Wl==116871||Wl==116923||Wl==116933||Wl==116956||Wl==116991||Wl==121479||Wl==121541||Wl==121599||Wl==123475||Wl==123514||Wl==123527||Wl==123579||Wl==123589||Wl==123612||Wl==123647||Wl==123987||Wl==124026||Wl==124039||Wl==124091||Wl==124101||Wl==124124||Wl==124159||Wl==129159||Wl==129221||Wl==129279||Wl==129619||Wl==129658||Wl==129671||Wl==129723||Wl==129733||Wl==129756||Wl==129791||Wl==130131||Wl==130170||Wl==130183||Wl==130235||Wl==130245||Wl==130268||Wl==130303||Wl==133203||Wl==133242||Wl==133255||Wl==133307||Wl==133317||Wl==133340||Wl==133375||Wl==139347||Wl==139386||Wl==139399||Wl==139451||Wl==139461||Wl==139484||Wl==139519||Wl==141395||Wl==141434||Wl==141447||Wl==141499||Wl==141509||Wl==141532||Wl==141567||Wl==142983||Wl==143045||Wl==143103||Wl==145543||Wl==145605||Wl==145663||Wl==146055||Wl==146117||Wl==146175||Wl==146567||Wl==146629||Wl==146687||Wl==147079||Wl==147141||Wl==147199){Wl=uc(4,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ti(),oc(4,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(4,t,-2)}}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 33:case 35:case 55:case 56:case 60:case 69:case 281:case 283:case 3155:case 3194:case 9915:case 9948:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14995:case 14996:case 14998:case 15e3:case 15001:case 15002:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15016:case 15017:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15036:case 15037:case 15042:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15078:case 15079:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15095:case 15096:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15107:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18055:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18067:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18117:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18175:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:case 23175:case 23237:case 23295:case 37459:case 37498:case 37563:case 37596:case 37971:case 38010:case 38075:case 38108:case 38483:case 38522:case 38587:case 38620:case 40019:case 40058:case 40123:case 40156:case 40531:case 40570:case 42579:case 42618:case 42683:case 42716:case 43091:case 43130:case 43195:case 43228:case 44115:case 44154:case 44219:case 44252:case 44627:case 44666:case 44731:case 44764:case 47187:case 47226:case 47291:case 47324:case 48211:case 48250:case 48315:case 48348:case 49747:case 49786:case 49851:case 49884:case 50259:case 50298:case 50363:case 50396:case 50771:case 50810:case 50875:case 50908:case 52307:case 52346:case 52411:case 52444:case 52819:case 52858:case 52923:case 52956:case 53331:case 53370:case 53435:case 53468:case 53843:case 53882:case 53947:case 53980:case 54867:case 54906:case 54971:case 55004:case 55891:case 55930:case 55995:case 56028:case 56915:case 56954:case 57019:case 57052:case 57427:case 57466:case 57531:case 57564:case 57939:case 57978:case 58043:case 58076:case 61523:case 61562:case 61627:case 61660:case 62035:case 62074:case 62139:case 62172:case 62547:case 62586:case 62651:case 62684:case 64083:case 64122:case 64187:case 64220:case 64595:case 64634:case 64699:case 64732:case 66643:case 66682:case 66747:case 66780:case 68179:case 68218:case 68283:case 68316:case 68691:case 68730:case 68795:case 68828:case 69203:case 69242:case 69307:case 69340:case 69715:case 69754:case 69819:case 69852:case 70227:case 70266:case 70331:case 70364:case 70739:case 70778:case 70843:case 70876:case 72787:case 72826:case 72891:case 72924:case 73299:case 73338:case 73403:case 73436:case 75347:case 75386:case 75451:case 75484:case 78931:case 78970:case 79035:case 79068:case 79443:case 79482:case 79547:case 79580:case 79955:case 79994:case 80059:case 80092:case 80467:case 80506:case 80571:case 80604:case 82515:case 82554:case 82619:case 82652:case 83539:case 83578:case 83643:case 83676:case 85587:case 85626:case 85691:case 85724:case 86099:case 86138:case 86203:case 86236:case 86611:case 86650:case 87123:case 87162:case 87227:case 87260:case 88659:case 88698:case 88763:case 88796:case 89171:case 89210:case 89275:case 89308:case 91731:case 91770:case 91835:case 91868:case 94803:case 94842:case 94907:case 94940:case 95827:case 95866:case 95931:case 95964:case 96339:case 96378:case 96443:case 96476:case 99411:case 99450:case 99515:case 99548:case 99923:case 99962:case 100027:case 100060:case 100947:case 100986:case 101051:case 101084:case 101459:case 101498:case 101563:case 101596:case 104019:case 104058:case 104123:case 104156:case 105555:case 105594:case 105659:case 105692:case 106067:case 106106:case 106171:case 106204:case 107603:case 107642:case 107707:case 107740:case 110675:case 110714:case 110779:case 110812:case 111187:case 111226:case 111291:case 111324:case 112723:case 112762:case 112827:case 112860:case 113747:case 113786:case 113851:case 113884:case 114259:case 114298:case 114363:case 114396:case 115283:case 115322:case 115387:case 115420:case 115795:case 115834:case 115899:case 115932:case 117331:case 117370:case 117435:case 117468:case 117843:case 117882:case 117947:case 117980:case 118355:case 118394:case 118459:case 118492:case 118867:case 118906:case 118971:case 119004:case 119379:case 119418:case 119483:case 119516:case 119891:case 119930:case 119995:case 120028:case 122451:case 122490:case 122555:case 122588:case 122963:case 123002:case 123067:case 123100:case 125523:case 125562:case 125627:case 125660:case 126547:case 126586:case 127059:case 127098:case 127163:case 127196:case 127571:case 127610:case 127675:case 127708:case 130643:case 130682:case 130747:case 130780:case 131155:case 131194:case 131259:case 131292:case 131667:case 131706:case 131771:case 131804:case 132179:case 132218:case 132283:case 132316:case 132691:case 132730:case 132795:case 132828:case 134227:case 134266:case 134331:case 134364:case 134739:case 134778:case 134843:case 134876:case 136275:case 136314:case 136379:case 136412:case 136787:case 136826:case 136891:case 136924:case 137299:case 137338:case 137403:case 137436:case 137811:case 137850:case 137915:case 137948:case 139859:case 139898:case 139963:case 139996:case 143955:case 143969:case 143992:case 143994:case 144059:case 144078:case 144092:case 144121:case 144134:ti();break;case-3:break;default:jr()}}function Br(){ic.startNonterminal("AxisStep",Vl);switch($l){case 74:case 75:case 210:case 216:case 217:ql(232);break;default:Wl=$l}switch(Wl){case 46:case 26698:case 26699:case 26834:case 26840:case 26841:Wr();break;default:Fr()}Il(228),jl(),li(),ic.endNonterminal("AxisStep",Vl)}function jr(){switch($l){case 74:case 75:case 210:case 216:case 217:ql(232);break;default:Wl=$l}switch(Wl){case 46:case 26698:case 26699:case 26834:case 26840:case 26841:Xr();break;default:Ir()}Il(228),ci()}function Fr(){ic.startNonterminal("ForwardStep",Vl);switch($l){case 83:ql(236);break;case 94:case 112:case 113:case 137:case 138:case 234:ql(232);break;default:Wl=$l}switch(Wl){case 26707:case 26718:case 26736:case 26737:case 26761:case 26762:case 26858:qr(),Il(249),jl(),Qr();break;default:Ur()}ic.endNonterminal("ForwardStep",Vl)}function Ir(){switch($l){case 83:ql(236);break;case 94:case 112:case 113:case 137:case 138:case 234:ql(232);break;default:Wl=$l}switch(Wl){case 26707:case 26718:case 26736:case 26737:case 26761:case 26762:case 26858:Rr(),Il(249),Gr();break;default:zr()}}function qr(){ic.startNonterminal("ForwardAxis",Vl);switch($l){case 94:Pl(94),Il(27),Pl(52);break;case 112:Pl(112),Il(27),Pl(52);break;case 83:Pl(83),Il(27),Pl(52);break;case 234:Pl(234),Il(27),Pl(52);break;case 113:Pl(113),Il(27),Pl(52);break;case 138:Pl(138),Il(27),Pl(52);break;default:Pl(137),Il(27),Pl(52)}ic.endNonterminal("ForwardAxis",Vl)}function Rr(){switch($l){case 94:Hl(94),Il(27),Hl(52);break;case 112:Hl(112),Il(27),Hl(52);break;case 83:Hl(83),Il(27),Hl(52);break;case 234:Hl(234),Il(27),Hl(52);break;case 113:Hl(113),Il(27),Hl(52);break;case 138:Hl(138),Il(27),Hl(52);break;default:Hl(137),Il(27),Hl(52)}}function Ur(){ic.startNonterminal("AbbrevForwardStep",Vl),$l==67&&Pl(67),Il(249),jl(),Qr(),ic.endNonterminal("AbbrevForwardStep",Vl)}function zr(){$l==67&&Hl(67),Il(249),Gr()}function Wr(){ic.startNonterminal("ReverseStep",Vl);switch($l){case 46:Jr();break;default:Vr(),Il(249),jl(),Qr()}ic.endNonterminal("ReverseStep",Vl)}function Xr(){switch($l){case 46:Kr();break;default:$r(),Il(249),Gr()}}function Vr(){ic.startNonterminal("ReverseAxis",Vl);switch($l){case 210:Pl(210),Il(27),Pl(52);break;case 74:Pl(74),Il(27),Pl(52);break;case 217:Pl(217),Il(27),Pl(52);break;case 216:Pl(216),Il(27),Pl(52);break;default:Pl(75),Il(27),Pl(52)}ic.endNonterminal("ReverseAxis",Vl)}function $r(){switch($l){case 210:Hl(210),Il(27),Hl(52);break;case 74:Hl(74),Il(27),Hl(52);break;case 217:Hl(217),Il(27),Hl(52);break;case 216:Hl(216),Il(27),Hl(52);break;default:Hl(75),Il(27),Hl(52)}}function Jr(){ic.startNonterminal("AbbrevReverseStep",Vl),Pl(46),ic.endNonterminal("AbbrevReverseStep",Vl)}function Kr(){Hl(46)}function Qr(){ic.startNonterminal("NodeTest",Vl);switch($l){case 83:case 97:case 121:case 122:case 188:case 194:case 220:case 230:case 231:case 249:ql(231);break;default:Wl=$l}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:Vs();break;default:Yr()}ic.endNonterminal("NodeTest",Vl)}function Gr(){switch($l){case 83:case 97:case 121:case 122:case 188:case 194:case 220:case 230:case 231:case 249:ql(231);break;default:Wl=$l}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:$s();break;default:Zr()}}function Yr(){ic.startNonterminal("NameTest",Vl);switch($l){case 5:Pl(5);break;default:$a()}ic.endNonterminal("NameTest",Vl)}function Zr(){switch($l){case 5:Hl(5);break;default:Ja()}}function ei(){ic.startNonterminal("PostfixExpr",Vl),yl();for(;;){Il(235);if($l!=35&&$l!=45&&$l!=69)break;switch($l){case 69:ql(273);break;default:Wl=$l}if(Wl==35397){Wl=uc(5,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{pi(),Wl=-1}catch(a){Wl=-4}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(5,Vl,Wl)}}switch(Wl){case 35:jl(),ai();break;case 45:jl(),ni();break;case-4:jl(),ii();break;case 35909:jl(),oi();break;default:jl(),hi()}}ic.endNonterminal("PostfixExpr",Vl)}function ti(){bl();for(;;){Il(235);if($l!=35&&$l!=45&&$l!=69)break;switch($l){case 69:ql(273);break;default:Wl=$l}if(Wl==35397){Wl=uc(5,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{pi(),oc(5,t,-1),Wl=-6}catch(a){Wl=-4,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(5,t,-4)}}}switch(Wl){case 35:fi();break;case 45:ri();break;case-4:si();break;case 35909:ui();break;case-6:break;default:pi()}}}function ni(){ic.startNonterminal("ObjectLookup",Vl),Pl(45),Il(251);switch($l){case 11:Pl(11);break;case 35:jl(),Ci();break;case 31:jl(),Si();break;case 32:jl(),Li();break;default:jl(),Ga()}ic.endNonterminal("ObjectLookup",Vl)}function ri(){Hl(45),Il(251);switch($l){case 11:Hl(11);break;case 35:ki();break;case 31:xi();break;case 32:Ai();break;default:Ya()}}function ii(){ic.startNonterminal("ArrayLookup",Vl),Pl(69),Il(31),Pl(69),Il(267),jl(),G(),Pl(70),Il(32),Pl(70),ic.endNonterminal("ArrayLookup",Vl)}function si(){Hl(69),Il(31),Hl(69),Il(267),Y(),Hl(70),Il(32),Hl(70)}function oi(){ic.startNonterminal("ArrayUnboxing",Vl),Pl(69),Il(32),Pl(70),ic.endNonterminal("ArrayUnboxing",Vl)}function ui(){Hl(69),Il(32),Hl(70)}function ai(){ic.startNonterminal("ArgumentList",Vl),Pl(35),Il(280);if($l!=38){jl(),Bi();for(;;){Il(105);if($l!=42)break;Pl(42),Il(272),jl(),Bi()}}Pl(38),ic.endNonterminal("ArgumentList",Vl)}function fi(){Hl(35),Il(280);if($l!=38){ji();for(;;){Il(105);if($l!=42)break;Hl(42),Il(272),ji()}}Hl(38)}function li(){ic.startNonterminal("PredicateList",Vl);for(;;){Il(228);if($l!=69)break;jl(),hi()}ic.endNonterminal("PredicateList",Vl)}function ci(){for(;;){Il(228);if($l!=69)break;pi()}}function hi(){ic.startNonterminal("Predicate",Vl),Pl(69),Il(267),jl(),G(),Pl(70),ic.endNonterminal("Predicate",Vl)}function pi(){Hl(69),Il(267),Y(),Hl(70)}function di(){ic.startNonterminal("Literal",Vl);switch($l){case 11:Pl(11);break;case 135:case 255:mi();break;case 197:yi();break;default:wi()}ic.endNonterminal("Literal",Vl)}function vi(){switch($l){case 11:Hl(11);break;case 135:case 255:gi();break;case 197:bi();break;default:Ei()}}function mi(){ic.startNonterminal("BooleanLiteral",Vl);switch($l){case 255:Pl(255);break;default:Pl(135)}ic.endNonterminal("BooleanLiteral",Vl)}function gi(){switch($l){case 255:Hl(255);break;default:Hl(135)}}function yi(){ic.startNonterminal("NullLiteral",Vl),Pl(197),ic.endNonterminal("NullLiteral",Vl)}function bi(){Hl(197)}function wi(){ic.startNonterminal("NumericLiteral",Vl);switch($l){case 8:Pl(8);break;case 9:Pl(9);break;default:Pl(10)}ic.endNonterminal("NumericLiteral",Vl)}function Ei(){switch($l){case 8:Hl(8);break;case 9:Hl(9);break;default:Hl(10)}}function Si(){ic.startNonterminal("VarRef",Vl),Pl(31),Il(246),jl(),Ti(),ic.endNonterminal("VarRef",Vl)}function xi(){Hl(31),Il(246),Ni()}function Ti(){ic.startNonterminal("VarName",Vl),$a(),ic.endNonterminal("VarName",Vl)}function Ni(){Ja()}function Ci(){ic.startNonterminal("ParenthesizedExpr",Vl),Pl(35),Il(270),$l!=38&&(jl(),G()),Pl(38),ic.endNonterminal("ParenthesizedExpr",Vl)}function ki(){Hl(35),Il(270),$l!=38&&Y(),Hl(38)}function Li(){ic.startNonterminal("ContextItemExpr",Vl),Pl(32),ic.endNonterminal("ContextItemExpr",Vl)}function Ai(){Hl(32)}function Oi(){ic.startNonterminal("OrderedExpr",Vl),Pl(206),Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("OrderedExpr",Vl)}function Mi(){Hl(206),Il(90),Hl(281),Il(267),Y(),Hl(287)}function _i(){ic.startNonterminal("UnorderedExpr",Vl),Pl(262),Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("UnorderedExpr",Vl)}function Di(){Hl(262),Il(90),Hl(281),Il(267),Y(),Hl(287)}function Pi(){ic.startNonterminal("FunctionCall",Vl),Ka(),Il(22),jl(),ai(),ic.endNonterminal("FunctionCall",Vl)}function Hi(){Qa(),Il(22),fi()}function Bi(){ic.startNonterminal("Argument",Vl);switch($l){case 65:Fi();break;default:Wf()}ic.endNonterminal("Argument",Vl)}function ji(){switch($l){case 65:Ii();break;default:Xf()}}function Fi(){ic.startNonterminal("ArgumentPlaceholder",Vl),Pl(65),ic.endNonterminal("ArgumentPlaceholder",Vl)}function Ii(){Hl(65)}function qi(){ic.startNonterminal("Constructor",Vl);switch($l){case 55:case 56:case 60:Ui();break;default:os()}ic.endNonterminal("Constructor",Vl)}function Ri(){switch($l){case 55:case 56:case 60:zi();break;default:us()}}function Ui(){ic.startNonterminal("DirectConstructor",Vl);switch($l){case 55:Wi();break;case 56:ns();break;default:is()}ic.endNonterminal("DirectConstructor",Vl)}function zi(){switch($l){case 55:Xi();break;case 56:rs();break;default:ss()}}function Wi(){ic.startNonterminal("DirElemConstructor",Vl),Pl(55),Rl(4),Pl(20),Vi();switch($l){case 49:Pl(49);break;default:Pl(62);for(;;){Rl(196);if($l==57)break;es()}Pl(57),Rl(4),Pl(20),Rl(12),$l==21&&Pl(21),Rl(8),Pl(62)}ic.endNonterminal("DirElemConstructor",Vl)}function Xi(){Hl(55),Rl(4),Hl(20),$i();switch($l){case 49:Hl(49);break;default:Hl(62);for(;;){Rl(196);if($l==57)break;ts()}Hl(57),Rl(4),Hl(20),Rl(12),$l==21&&Hl(21),Rl(8),Hl(62)}}function Vi(){ic.startNonterminal("DirAttributeList",Vl);for(;;){Rl(19);if($l!=21)break;Pl(21),Rl(94),$l==20&&(Pl(20),Rl(11),$l==21&&Pl(21),Rl(7),Pl(61),Rl(18),$l==21&&Pl(21),Ji())}ic.endNonterminal("DirAttributeList",Vl)}function $i(){for(;;){Rl(19);if($l!=21)break;Hl(21),Rl(94),$l==20&&(Hl(20),Rl(11),$l==21&&Hl(21),Rl(7),Hl(61),Rl(18),$l==21&&Hl(21),Ki())}}function Ji(){ic.startNonterminal("DirAttributeValue",Vl),Rl(14);switch($l){case 28:Pl(28);for(;;){Rl(185);if($l==28)break;switch($l){case 13:Pl(13);break;default:Qi()}}Pl(28);break;default:Pl(34);for(;;){Rl(186);if($l==34)break;switch($l){case 14:Pl(14);break;default:Yi()}}Pl(34)}ic.endNonterminal("DirAttributeValue",Vl)}function Ki(){Rl(14);switch($l){case 28:Hl(28);for(;;){Rl(185);if($l==28)break;switch($l){case 13:Hl(13);break;default:Gi()}}Hl(28);break;default:Hl(34);for(;;){Rl(186);if($l==34)break;switch($l){case 14:Hl(14);break;default:Zi()}}Hl(34)}}function Qi(){ic.startNonterminal("QuotAttrValueContent",Vl);switch($l){case 16:Pl(16);break;default:il()}ic.endNonterminal("QuotAttrValueContent",Vl)}function Gi(){switch($l){case 16:Hl(16);break;default:sl()}}function Yi(){ic.startNonterminal("AposAttrValueContent",Vl);switch($l){case 17:Pl(17);break;default:il()}ic.endNonterminal("AposAttrValueContent",Vl)}function Zi(){switch($l){case 17:Hl(17);break;default:sl()}}function es(){ic.startNonterminal("DirElemContent",Vl);switch($l){case 55:case 56:case 60:Ui();break;case 4:Pl(4);break;case 15:Pl(15);break;default:il()}ic.endNonterminal("DirElemContent",Vl)}function ts(){switch($l){case 55:case 56:case 60:zi();break;case 4:Hl(4);break;case 15:Hl(15);break;default:sl()}}function ns(){ic.startNonterminal("DirCommentConstructor",Vl),Pl(56),Rl(1),Pl(2),Rl(6),Pl(44),ic.endNonterminal("DirCommentConstructor",Vl)}function rs(){Hl(56),Rl(1),Hl(2),Rl(6),Hl(44)}function is(){ic.startNonterminal("DirPIConstructor",Vl),Pl(60),Rl(3),Pl(18),Rl(13),$l==21&&(Pl(21),Rl(2),Pl(3)),Rl(9),Pl(66),ic.endNonterminal("DirPIConstructor",Vl)}function ss(){Hl(60),Rl(3),Hl(18),Rl(13),$l==21&&(Hl(21),Rl(2),Hl(3)),Rl(9),Hl(66)}function os(){ic.startNonterminal("ComputedConstructor",Vl);switch($l){case 120:al();break;case 122:as();break;case 83:ll();break;case 187:ls();break;case 249:ml();break;case 97:dl();break;default:hl()}ic.endNonterminal("ComputedConstructor",Vl)}function us(){switch($l){case 120:fl();break;case 122:fs();break;case 83:cl();break;case 187:cs();break;case 249:gl();break;case 97:vl();break;default:pl()}}function as(){ic.startNonterminal("CompElemConstructor",Vl),Pl(122),Il(250);switch($l){case 281:Pl(281),Il(267),jl(),G(),Pl(287);break;default:jl(),$a()}Il(90),Pl(281),Il(281),$l!=287&&(jl(),ol()),Pl(287),ic.endNonterminal("CompElemConstructor",Vl)}function fs(){Hl(122),Il(250);switch($l){case 281:Hl(281),Il(267),Y(),Hl(287);break;default:Ja()}Il(90),Hl(281),Il(281),$l!=287&&ul(),Hl(287)}function ls(){ic.startNonterminal("CompNamespaceConstructor",Vl),Pl(187),Il(242);switch($l){case 281:Pl(281),Il(267),jl(),ds(),Pl(287);break;default:jl(),hs()}Il(90),Pl(281),Il(267),jl(),ms(),Pl(287),ic.endNonterminal("CompNamespaceConstructor",Vl)}function cs(){Hl(187),Il(242);switch($l){case 281:Hl(281),Il(267),vs(),Hl(287);break;default:ps()}Il(90),Hl(281),Il(267),gs(),Hl(287)}function hs(){ic.startNonterminal("Prefix",Vl),Ga(),ic.endNonterminal("Prefix",Vl)}function ps(){Ya()}function ds(){ic.startNonterminal("PrefixExpr",Vl),G(),ic.endNonterminal("PrefixExpr",Vl)}function vs(){Y()}function ms(){ic.startNonterminal("URIExpr",Vl),G(),ic.endNonterminal("URIExpr",Vl)}function gs(){Y()}function ys(){ic.startNonterminal("FunctionItemExpr",Vl);switch($l){case 147:ql(95);break;default:Wl=$l}switch(Wl){case 33:case 18067:Ss();break;default:ws()}ic.endNonterminal("FunctionItemExpr",Vl)}function bs(){switch($l){case 147:ql(95);break;default:Wl=$l}switch(Wl){case 33:case 18067:xs();break;default:Es()}}function ws(){ic.startNonterminal("NamedFunctionRef",Vl),$a(),Il(20),Pl(29),Il(16),Pl(8),ic.endNonterminal("NamedFunctionRef",Vl)}function Es(){Ja(),Il(20),Hl(29),Il(16),Hl(8)}function Ss(){ic.startNonterminal("InlineFunctionExpr",Vl);for(;;){Il(101);if($l!=33)break;jl(),B()}Pl(147),Il(22),Pl(35),Il(98),$l==31&&(jl(),U()),Pl(38),Il(115),$l==80&&(Pl(80),Il(254),jl(),Ls()),Il(90),jl(),V(),ic.endNonterminal("InlineFunctionExpr",Vl)}function xs(){for(;;){Il(101);if($l!=33)break;j()}Hl(147),Il(22),Hl(35),Il(98),$l==31&&z(),Hl(38),Il(115),$l==80&&(Hl(80),Il(254),As()),Il(90),$()}function Ts(){ic.startNonterminal("SingleType",Vl),ko(),Il(226),$l==65&&Pl(65),ic.endNonterminal("SingleType",Vl)}function Ns(){Lo(),Il(226),$l==65&&Hl(65)}function Cs(){ic.startNonterminal("TypeDeclaration",Vl),Pl(80),Il(254),jl(),Ls(),ic.endNonterminal("TypeDeclaration",Vl)}function ks(){Hl(80),Il(254),As()}function Ls(){ic.startNonterminal("SequenceType",Vl);switch($l){case 35:ql(259);break;case 125:ql(233);break;default:Wl=$l}switch(Wl){case 18045:case 19491:$l==125&&Pl(125),Il(22),Pl(35),Il(23),Pl(38);break;default:_s(),Il(229);switch($l){case 40:case 41:case 65:jl(),Os();break;default:}}ic.endNonterminal("SequenceType",Vl)}function As(){switch($l){case 35:ql(259);break;case 125:ql(233);break;default:Wl=$l}switch(Wl){case 18045:case 19491:$l==125&&Hl(125),Il(22),Hl(35),Il(23),Hl(38);break;default:Ds(),Il(229);switch($l){case 40:case 41:case 65:Ms();break;default:}}}function Os(){ic.startNonterminal("OccurrenceIndicator",Vl);switch($l){case 65:Pl(65);break;case 40:Pl(40);break;default:Pl(41)}ic.endNonterminal("OccurrenceIndicator",Vl)}function Ms(){switch($l){case 65:Hl(65);break;case 40:Hl(40);break;default:Hl(41)}}function _s(){ic.startNonterminal("ItemType",Vl);switch($l){case 79:case 83:case 97:case 121:case 122:case 147:case 167:case 169:case 188:case 194:case 198:case 220:case 230:case 231:case 247:case 249:ql(233);break;default:Wl=$l}if(Wl==12879||Wl==12969||Wl==12998||Wl==13047||Wl==13903||Wl==13993||Wl==14022||Wl==14071||Wl==19535||Wl==19625||Wl==19654||Wl==19703||Wl==20047||Wl==20137||Wl==20166||Wl==20215||Wl==20559||Wl==20649||Wl==20678||Wl==20727||Wl==21071||Wl==21161||Wl==21190||Wl==21239||Wl==21583||Wl==21673||Wl==21702||Wl==21751||Wl==22095||Wl==22185||Wl==22214||Wl==22263||Wl==25679||Wl==25769||Wl==25798||Wl==25847||Wl==27215||Wl==27305||Wl==27334||Wl==27383||Wl==27727||Wl==27817||Wl==27846||Wl==27895||Wl==28239||Wl==28329||Wl==28358||Wl==28407||Wl==29775||Wl==29865||Wl==29894||Wl==29943||Wl==30287||Wl==30377||Wl==30406||Wl==30455||Wl==31311||Wl==31401||Wl==31430||Wl==31479||Wl==31823||Wl==31913||Wl==31942||Wl==31991||Wl==32335||Wl==32425||Wl==32454||Wl==32503||Wl==32847||Wl==32937||Wl==32966||Wl==33015||Wl==33359||Wl==33449||Wl==33478||Wl==33527||Wl==35919||Wl==36009||Wl==36038||Wl==36087||Wl==36431||Wl==36521||Wl==36550||Wl==36599||Wl==37455||Wl==37545||Wl==37574||Wl==37623||Wl==38991||Wl==39081||Wl==39110||Wl==39159||Wl==41039||Wl==41129||Wl==41158||Wl==41207||Wl==41551||Wl==41641||Wl==41670||Wl==41719||Wl==42063||Wl==42153||Wl==42182||Wl==42231||Wl==43599||Wl==43689||Wl==43718||Wl==43767||Wl==45647||Wl==45737||Wl==45766||Wl==45815||Wl==48719||Wl==48809||Wl==48838||Wl==48887||Wl==51279||Wl==51369||Wl==51398||Wl==51447||Wl==54351||Wl==54441||Wl==54470||Wl==54519||Wl==56399||Wl==56489||Wl==56518||Wl==56567||Wl==58447||Wl==58537||Wl==58566||Wl==58615||Wl==61007||Wl==61097||Wl==61126||Wl==61175||Wl==63055||Wl==63145||Wl==63174||Wl==63223||Wl==63567||Wl==63657||Wl==63686||Wl==63735||Wl==65103||Wl==65193||Wl==65222||Wl==65271||Wl==66127||Wl==66217||Wl==66246||Wl==66295||Wl==67663||Wl==67753||Wl==67782||Wl==67831||Wl==68687||Wl==68777||Wl==68806||Wl==68855||Wl==71247||Wl==71337||Wl==71366||Wl==71415||Wl==75855||Wl==75945||Wl==75974||Wl==76023||Wl==76879||Wl==76969||Wl==76998||Wl==77047||Wl==77903||Wl==77993||Wl==78022||Wl==78071||Wl==78415||Wl==78505||Wl==78534||Wl==78583||Wl==79951||Wl==80041||Wl==80070||Wl==80119||Wl==83023||Wl==83113||Wl==83142||Wl==83191||Wl==84047||Wl==84137||Wl==84166||Wl==84215||Wl==84559||Wl==84649||Wl==84678||Wl==84727||Wl==85071||Wl==85161||Wl==85190||Wl==85239||Wl==89679||Wl==89769||Wl==89798||Wl==89847||Wl==90703||Wl==90793||Wl==90822||Wl==90871||Wl==92751||Wl==92841||Wl==92870||Wl==92919||Wl==93775||Wl==93865||Wl==93894||Wl==93943||Wl==94287||Wl==94377||Wl==94406||Wl==94455||Wl==96847||Wl==96937||Wl==96966||Wl==97015||Wl==103503||Wl==103593||Wl==103622||Wl==103671||Wl==104527||Wl==104617||Wl==104646||Wl==104695||Wl==105039||Wl==105129||Wl==105158||Wl==105207||Wl==107087||Wl==107177||Wl==107206||Wl==107255||Wl==114767||Wl==114857||Wl==114886||Wl==114935||Wl==116815||Wl==116905||Wl==116934||Wl==116983||Wl==118863||Wl==118953||Wl==118982||Wl==119031||Wl==121423||Wl==121513||Wl==121542||Wl==121591||Wl==123471||Wl==123561||Wl==123590||Wl==123639||Wl==123983||Wl==124073||Wl==124102||Wl==124151||Wl==129103||Wl==129193||Wl==129222||Wl==129271||Wl==129615||Wl==129705||Wl==129734||Wl==129783||Wl==133199||Wl==133289||Wl==133318||Wl==133367||Wl==139343||Wl==139433||Wl==139462||Wl==139511||Wl==141391||Wl==141481||Wl==141510||Wl==141559||Wl==142927||Wl==143017||Wl==143046||Wl==143095||Wl==143951||Wl==144041||Wl==144070||Wl==144119||Wl==145487||Wl==145577||Wl==145606||Wl==145655||Wl==145999||Wl==146089||Wl==146118||Wl==146167||Wl==146511||Wl==146601||Wl==146630||Wl==146679||Wl==147023||Wl==147113||Wl==147142||Wl==147191){Wl=uc(6,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xs(),Wl=-4}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hs(),Wl=-6}catch(f){Wl=-7}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(6,Vl,Wl)}}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:Vs();break;case 18087:Pl(167),Il(22),Pl(35),Il(23),Pl(38);break;case 33:case 18067:Mo();break;case 35:jo();break;case-6:case 17999:case 18089:case 18118:Ps();break;case-7:case 18167:Bs();break;default:Ws()}ic.endNonterminal("ItemType",Vl)}function Ds(){switch($l){case 79:case 83:case 97:case 121:case 122:case 147:case 167:case 169:case 188:case 194:case 198:case 220:case 230:case 231:case 247:case 249:ql(233);break;default:Wl=$l}if(Wl==12879||Wl==12969||Wl==12998||Wl==13047||Wl==13903||Wl==13993||Wl==14022||Wl==14071||Wl==19535||Wl==19625||Wl==19654||Wl==19703||Wl==20047||Wl==20137||Wl==20166||Wl==20215||Wl==20559||Wl==20649||Wl==20678||Wl==20727||Wl==21071||Wl==21161||Wl==21190||Wl==21239||Wl==21583||Wl==21673||Wl==21702||Wl==21751||Wl==22095||Wl==22185||Wl==22214||Wl==22263||Wl==25679||Wl==25769||Wl==25798||Wl==25847||Wl==27215||Wl==27305||Wl==27334||Wl==27383||Wl==27727||Wl==27817||Wl==27846||Wl==27895||Wl==28239||Wl==28329||Wl==28358||Wl==28407||Wl==29775||Wl==29865||Wl==29894||Wl==29943||Wl==30287||Wl==30377||Wl==30406||Wl==30455||Wl==31311||Wl==31401||Wl==31430||Wl==31479||Wl==31823||Wl==31913||Wl==31942||Wl==31991||Wl==32335||Wl==32425||Wl==32454||Wl==32503||Wl==32847||Wl==32937||Wl==32966||Wl==33015||Wl==33359||Wl==33449||Wl==33478||Wl==33527||Wl==35919||Wl==36009||Wl==36038||Wl==36087||Wl==36431||Wl==36521||Wl==36550||Wl==36599||Wl==37455||Wl==37545||Wl==37574||Wl==37623||Wl==38991||Wl==39081||Wl==39110||Wl==39159||Wl==41039||Wl==41129||Wl==41158||Wl==41207||Wl==41551||Wl==41641||Wl==41670||Wl==41719||Wl==42063||Wl==42153||Wl==42182||Wl==42231||Wl==43599||Wl==43689||Wl==43718||Wl==43767||Wl==45647||Wl==45737||Wl==45766||Wl==45815||Wl==48719||Wl==48809||Wl==48838||Wl==48887||Wl==51279||Wl==51369||Wl==51398||Wl==51447||Wl==54351||Wl==54441||Wl==54470||Wl==54519||Wl==56399||Wl==56489||Wl==56518||Wl==56567||Wl==58447||Wl==58537||Wl==58566||Wl==58615||Wl==61007||Wl==61097||Wl==61126||Wl==61175||Wl==63055||Wl==63145||Wl==63174||Wl==63223||Wl==63567||Wl==63657||Wl==63686||Wl==63735||Wl==65103||Wl==65193||Wl==65222||Wl==65271||Wl==66127||Wl==66217||Wl==66246||Wl==66295||Wl==67663||Wl==67753||Wl==67782||Wl==67831||Wl==68687||Wl==68777||Wl==68806||Wl==68855||Wl==71247||Wl==71337||Wl==71366||Wl==71415||Wl==75855||Wl==75945||Wl==75974||Wl==76023||Wl==76879||Wl==76969||Wl==76998||Wl==77047||Wl==77903||Wl==77993||Wl==78022||Wl==78071||Wl==78415||Wl==78505||Wl==78534||Wl==78583||Wl==79951||Wl==80041||Wl==80070||Wl==80119||Wl==83023||Wl==83113||Wl==83142||Wl==83191||Wl==84047||Wl==84137||Wl==84166||Wl==84215||Wl==84559||Wl==84649||Wl==84678||Wl==84727||Wl==85071||Wl==85161||Wl==85190||Wl==85239||Wl==89679||Wl==89769||Wl==89798||Wl==89847||Wl==90703||Wl==90793||Wl==90822||Wl==90871||Wl==92751||Wl==92841||Wl==92870||Wl==92919||Wl==93775||Wl==93865||Wl==93894||Wl==93943||Wl==94287||Wl==94377||Wl==94406||Wl==94455||Wl==96847||Wl==96937||Wl==96966||Wl==97015||Wl==103503||Wl==103593||Wl==103622||Wl==103671||Wl==104527||Wl==104617||Wl==104646||Wl==104695||Wl==105039||Wl==105129||Wl==105158||Wl==105207||Wl==107087||Wl==107177||Wl==107206||Wl==107255||Wl==114767||Wl==114857||Wl==114886||Wl==114935||Wl==116815||Wl==116905||Wl==116934||Wl==116983||Wl==118863||Wl==118953||Wl==118982||Wl==119031||Wl==121423||Wl==121513||Wl==121542||Wl==121591||Wl==123471||Wl==123561||Wl==123590||Wl==123639||Wl==123983||Wl==124073||Wl==124102||Wl==124151||Wl==129103||Wl==129193||Wl==129222||Wl==129271||Wl==129615||Wl==129705||Wl==129734||Wl==129783||Wl==133199||Wl==133289||Wl==133318||Wl==133367||Wl==139343||Wl==139433||Wl==139462||Wl==139511||Wl==141391||Wl==141481||Wl==141510||Wl==141559||Wl==142927||Wl==143017||Wl==143046||Wl==143095||Wl==143951||Wl==144041||Wl==144070||Wl==144119||Wl==145487||Wl==145577||Wl==145606||Wl==145655||Wl==145999||Wl==146089||Wl==146118||Wl==146167||Wl==146511||Wl==146601||Wl==146630||Wl==146679||Wl==147023||Wl==147113||Wl==147142||Wl==147191){Wl=uc(6,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xs(),oc(6,t,-4),Wl=-8}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hs(),oc(6,t,-6),Wl=-8}catch(f){Wl=-7,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(6,t,-7)}}}}switch(Wl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:$s();break;case 18087:Hl(167),Il(22),Hl(35),Il(23),Hl(38);break;case 33:case 18067:_o();break;case 35:Fo();break;case-6:case 17999:case 18089:case 18118:Hs();break;case-7:case 18167:js();break;case-8:break;default:Xs()}}function Ps(){ic.startNonterminal("JSONTest",Vl);switch($l){case 169:Fs();break;case 198:qs();break;default:Us()}ic.endNonterminal("JSONTest",Vl)}function Hs(){switch($l){case 169:Is();break;case 198:Rs();break;default:zs()}}function Bs(){ic.startNonterminal("StructuredItemTest",Vl),Pl(247),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("StructuredItemTest",Vl)}function js(){Hl(247),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function Fs(){ic.startNonterminal("JSONItemTest",Vl),Pl(169),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("JSONItemTest",Vl)}function Is(){Hl(169),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function qs(){ic.startNonterminal("JSONObjectTest",Vl),Pl(198),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("JSONObjectTest",Vl)}function Rs(){Hl(198),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function Us(){ic.startNonterminal("JSONArrayTest",Vl),Pl(79),Il(233),$l==35&&(Pl(35),Il(23),Pl(38)),ic.endNonterminal("JSONArrayTest",Vl)}function zs(){Hl(79),Il(233),$l==35&&(Hl(35),Il(23),Hl(38))}function Ws(){ic.startNonterminal("AtomicOrUnionType",Vl),$a(),ic.endNonterminal("AtomicOrUnionType",Vl)}function Xs(){Ja()}function Vs(){ic.startNonterminal("KindTest",Vl);switch($l){case 121:Qs();break;case 122:vo();break;case 83:oo();break;case 231:bo();break;case 230:lo();break;case 220:io();break;case 97:eo();break;case 249:Ys();break;case 188:no();break;default:Js()}ic.endNonterminal("KindTest",Vl)}function $s(){switch($l){case 121:Gs();break;case 122:mo();break;case 83:uo();break;case 231:wo();break;case 230:co();break;case 220:so();break;case 97:to();break;case 249:Zs();break;case 188:ro();break;default:Ks()}}function Js(){ic.startNonterminal("AnyKindTest",Vl),Pl(194),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("AnyKindTest",Vl)}function Ks(){Hl(194),Il(22),Hl(35),Il(23),Hl(38)}function Qs(){ic.startNonterminal("DocumentTest",Vl),Pl(121),Il(22),Pl(35),Il(154);if($l!=38)switch($l){case 122:jl(),vo();break;default:jl(),bo()}Il(23),Pl(38),ic.endNonterminal("DocumentTest",Vl)}function Gs(){Hl(121),Il(22),Hl(35),Il(154);if($l!=38)switch($l){case 122:mo();break;default:wo()}Il(23),Hl(38)}function Ys(){ic.startNonterminal("TextTest",Vl),Pl(249),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("TextTest",Vl)}function Zs(){Hl(249),Il(22),Hl(35),Il(23),Hl(38)}function eo(){ic.startNonterminal("CommentTest",Vl),Pl(97),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("CommentTest",Vl)}function to(){Hl(97),Il(22),Hl(35),Il(23),Hl(38)}function no(){ic.startNonterminal("NamespaceNodeTest",Vl),Pl(188),Il(22),Pl(35),Il(23),Pl(38),ic.endNonterminal("NamespaceNodeTest",Vl)}function ro(){Hl(188),Il(22),Hl(35),Il(23),Hl(38)}function io(){ic.startNonterminal("PITest",Vl),Pl(220),Il(22),Pl(35),Il(244);if($l!=38)switch($l){case 11:Pl(11);break;default:jl(),Ga()}Il(23),Pl(38),ic.endNonterminal("PITest",Vl)}function so(){Hl(220),Il(22),Hl(35),Il(244);if($l!=38)switch($l){case 11:Hl(11);break;default:Ya()}Il(23),Hl(38)}function oo(){ic.startNonterminal("AttributeTest",Vl),Pl(83),Il(22),Pl(35),Il(255),$l!=38&&(jl(),ao(),Il(105),$l==42&&(Pl(42),Il(246),jl(),Ao())),Il(23),Pl(38),ic.endNonterminal("AttributeTest",Vl)}function uo(){Hl(83),Il(22),Hl(35),Il(255),$l!=38&&(fo(),Il(105),$l==42&&(Hl(42),Il(246),Oo())),Il(23),Hl(38)}function ao(){ic.startNonterminal("AttribNameOrWildcard",Vl);switch($l){case 39:Pl(39);break;default:xo()}ic.endNonterminal("AttribNameOrWildcard",Vl)}function fo(){switch($l){case 39:Hl(39);break;default:To()}}function lo(){ic.startNonterminal("SchemaAttributeTest",Vl),Pl(230),Il(22),Pl(35),Il(246),jl(),ho(),Il(23),Pl(38),ic.endNonterminal("SchemaAttributeTest",Vl)}function co(){Hl(230),Il(22),Hl(35),Il(246),po(),Il(23),Hl(38)}function ho(){ic.startNonterminal("AttributeDeclaration",Vl),xo(),ic.endNonterminal("AttributeDeclaration",Vl)}function po(){To()}function vo(){ic.startNonterminal("ElementTest",Vl),Pl(122),Il(22),Pl(35),Il(255),$l!=38&&(jl(),go(),Il(105),$l==42&&(Pl(42),Il(246),jl(),Ao(),Il(106),$l==65&&Pl(65))),Il(23),Pl(38),ic.endNonterminal("ElementTest",Vl)}function mo(){Hl(122),Il(22),Hl(35),Il(255),$l!=38&&(yo(),Il(105),$l==42&&(Hl(42),Il(246),Oo(),Il(106),$l==65&&Hl(65))),Il(23),Hl(38)}function go(){ic.startNonterminal("ElementNameOrWildcard",Vl);switch($l){case 39:Pl(39);break;default:No()}ic.endNonterminal("ElementNameOrWildcard",Vl)}function yo(){switch($l){case 39:Hl(39);break;default:Co()}}function bo(){ic.startNonterminal("SchemaElementTest",Vl),Pl(231),Il(22),Pl(35),Il(246),jl(),Eo(),Il(23),Pl(38),ic.endNonterminal("SchemaElementTest",Vl)}function wo(){Hl(231),Il(22),Hl(35),Il(246),So(),Il(23),Hl(38)}function Eo(){ic.startNonterminal("ElementDeclaration",Vl),No(),ic.endNonterminal("ElementDeclaration",Vl)}function So(){Co()}function xo(){ic.startNonterminal("AttributeName",Vl),$a(),ic.endNonterminal("AttributeName",Vl)}function To(){Ja()}function No(){ic.startNonterminal("ElementName",Vl),$a(),ic.endNonterminal("ElementName",Vl)}function Co(){Ja()}function ko(){ic.startNonterminal("SimpleTypeName",Vl),Ao(),ic.endNonterminal("SimpleTypeName",Vl)}function Lo(){Oo()}function Ao(){ic.startNonterminal("TypeName",Vl),$a(),ic.endNonterminal("TypeName",Vl)}function Oo(){Ja()}function Mo(){ic.startNonterminal("FunctionTest",Vl);for(;;){Il(101);if($l!=33)break;jl(),B()}switch($l){case 147:ql(22);break;default:Wl=$l}Wl=uc(7,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Po(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(7,Vl,Wl)}switch(Wl){case-1:jl(),Do();break;default:jl(),Ho()}ic.endNonterminal("FunctionTest",Vl)}function _o(){for(;;){Il(101);if($l!=33)break;j()}switch($l){case 147:ql(22);break;default:Wl=$l}Wl=uc(7,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Po(),oc(7,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(7,t,-2)}}switch(Wl){case-1:Po();break;case-3:break;default:Bo()}}function Do(){ic.startNonterminal("AnyFunctionTest",Vl),Pl(147),Il(22),Pl(35),Il(24),Pl(39),Il(23),Pl(38),ic.endNonterminal("AnyFunctionTest",Vl)}function Po(){Hl(147),Il(22),Hl(35),Il(24),Hl(39),Il(23),Hl(38)}function Ho(){ic.startNonterminal("TypedFunctionTest",Vl),Pl(147),Il(22),Pl(35),Il(259);if($l!=38){jl(),Ls();for(;;){Il(105);if($l!=42)break;Pl(42),Il(254),jl(),Ls()}}Pl(38),Il(33),Pl(80),Il(254),jl(),Ls(),ic.endNonterminal("TypedFunctionTest",Vl)}function Bo(){Hl(147),Il(22),Hl(35),Il(259);if($l!=38){As();for(;;){Il(105);if($l!=42)break;Hl(42),Il(254),As()}}Hl(38),Il(33),Hl(80),Il(254),As()}function jo(){ic.startNonterminal("ParenthesizedItemType",Vl),Pl(35),Il(254),jl(),_s(),Il(23),Pl(38),ic.endNonterminal("ParenthesizedItemType",Vl)}function Fo(){Hl(35),Il(254),Ds(),Il(23),Hl(38)}function Io(){ic.startNonterminal("RevalidationDecl",Vl),Pl(109),Il(75),Pl(226),Il(162);switch($l){case 245:Pl(245);break;case 174:Pl(174);break;default:Pl(238)}ic.endNonterminal("RevalidationDecl",Vl)}function qo(){ic.startNonterminal("InsertExprTargetChoice",Vl);switch($l){case 71:Pl(71);break;case 85:Pl(85);break;default:if($l==80){Pl(80),Il(123);switch($l){case 136:Pl(136);break;default:Pl(173)}}Il(57),Pl(165)}ic.endNonterminal("InsertExprTargetChoice",Vl)}function Ro(){switch($l){case 71:Hl(71);break;case 85:Hl(85);break;default:if($l==80){Hl(80),Il(123);switch($l){case 136:Hl(136);break;default:Hl(173)}}Il(57),Hl(165)}}function Uo(){ic.startNonterminal("InsertExpr",Vl),Pl(161),Il(133);switch($l){case 194:Pl(194);break;default:Pl(195)}Il(267),jl(),Qo(),jl(),qo(),Il(267),jl(),Yo(),ic.endNonterminal("InsertExpr",Vl)}function zo(){Hl(161),Il(133);switch($l){case 194:Hl(194);break;default:Hl(195)}Il(267),Go(),Ro(),Il(267),Zo()}function Wo(){ic.startNonterminal("DeleteExpr",Vl),Pl(111),Il(133);switch($l){case 194:Pl(194);break;default:Pl(195)}Il(267),jl(),Yo(),ic.endNonterminal("DeleteExpr",Vl)}function Xo(){Hl(111),Il(133);switch($l){case 194:Hl(194);break;default:Hl(195)}Il(267),Zo()}function Vo(){ic.startNonterminal("ReplaceExpr",Vl),Pl(223),Il(134),$l==267&&(Pl(267),Il(67),Pl(200)),Il(65),Pl(194),Il(267),jl(),Yo(),Pl(276),Il(267),jl(),Wf(),ic.endNonterminal("ReplaceExpr",Vl)}function $o(){Hl(223),Il(134),$l==267&&(Hl(267),Il(67),Hl(200)),Il(65),Hl(194),Il(267),Zo(),Hl(276),Il(267),Xf()}function Jo(){ic.startNonterminal("RenameExpr",Vl),Pl(222),Il(65),Pl(194),Il(267),jl(),Yo(),Pl(80),Il(267),jl(),eu(),ic.endNonterminal("RenameExpr",Vl)}function Ko(){Hl(222),Il(65),Hl(194),Il(267),Zo(),Hl(80),Il(267),tu()}function Qo(){ic.startNonterminal("SourceExpr",Vl),Wf(),ic.endNonterminal("SourceExpr",Vl)}function Go(){Xf()}function Yo(){ic.startNonterminal("TargetExpr",Vl),Wf(),ic.endNonterminal("TargetExpr",Vl)}function Zo(){Xf()}function eu(){ic.startNonterminal("NewNameExpr",Vl),Wf(),ic.endNonterminal("NewNameExpr",Vl)}function tu(){Xf()}function nu(){ic.startNonterminal("TransformExpr",Vl),Pl(104),Il(21),jl(),iu();for(;;){if($l!=42)break;Pl(42),Il(21),jl(),iu()}Pl(184),Il(267),jl(),Wf(),Pl(224),Il(267),jl(),Wf(),ic.endNonterminal("TransformExpr",Vl)}function ru(){Hl(104),Il(21),su();for(;;){if($l!=42)break;Hl(42),Il(21),su()}Hl(184),Il(267),Xf(),Hl(224),Il(267),Xf()}function iu(){ic.startNonterminal("TransformSpec",Vl),Pl(31),Il(246),jl(),Ti(),Il(28),Pl(53),Il(267),jl(),Wf(),ic.endNonterminal("TransformSpec",Vl)}function su(){Hl(31),Il(246),Ni(),Il(28),Hl(53),Il(267),Xf()}function ou(){ic.startNonterminal("FTSelection",Vl),lu();for(;;){Il(212);switch($l){case 82:ql(161);break;default:Wl=$l}if(Wl!=116&&Wl!=118&&Wl!=128&&Wl!=206&&Wl!=227&&Wl!=275&&Wl!=65106&&Wl!=123986)break;jl(),Pu()}ic.endNonterminal("FTSelection",Vl)}function uu(){cu();for(;;){Il(212);switch($l){case 82:ql(161);break;default:Wl=$l}if(Wl!=116&&Wl!=118&&Wl!=128&&Wl!=206&&Wl!=227&&Wl!=275&&Wl!=65106&&Wl!=123986)break;Hu()}}function au(){ic.startNonterminal("FTWeight",Vl),Pl(270),Il(90),Pl(281),Il(267),jl(),G(),Pl(287),ic.endNonterminal("FTWeight",Vl)}function fu(){Hl(270),Il(90),Hl(281),Il(267),Y(),Hl(287)}function lu(){ic.startNonterminal("FTOr",Vl),hu();for(;;){if($l!=146)break;Pl(146),Il(177),jl(),hu()}ic.endNonterminal("FTOr",Vl)}function cu(){pu();for(;;){if($l!=146)break;Hl(146),Il(177),pu()}}function hu(){ic.startNonterminal("FTAnd",Vl),du();for(;;){if($l!=144)break;Pl(144),Il(177),jl(),du()}ic.endNonterminal("FTAnd",Vl)}function pu(){vu();for(;;){if($l!=144)break;Hl(144),Il(177),vu()}}function du(){ic.startNonterminal("FTMildNot",Vl),mu();for(;;){Il(213);if($l!=196)break;Pl(196),Il(56),Pl(156),Il(177),jl(),mu()}ic.endNonterminal("FTMildNot",Vl)}function vu(){gu();for(;;){Il(213);if($l!=196)break;Hl(196),Il(56),Hl(156),Il(177),gu()}}function mu(){ic.startNonterminal("FTUnaryNot",Vl),$l==145&&Pl(145),Il(164),jl(),yu(),ic.endNonterminal("FTUnaryNot",Vl)}function gu(){$l==145&&Hl(145),Il(164),bu()}function yu(){ic.startNonterminal("FTPrimaryWithOptions",Vl),wu(),Il(214),$l==265&&(jl(),Qu()),$l==270&&(jl(),au()),ic.endNonterminal("FTPrimaryWithOptions",Vl)}function bu(){Eu(),Il(214),$l==265&&Gu(),$l==270&&fu()}function wu(){ic.startNonterminal("FTPrimary",Vl);switch($l){case 35:Pl(35),Il(177),jl(),ou(),Pl(38);break;case 36:Cu();break;default:Su(),Il(215),$l==199&&(jl(),Ou())}ic.endNonterminal("FTPrimary",Vl)}function Eu(){switch($l){case 35:Hl(35),Il(177),uu(),Hl(38);break;case 36:ku();break;default:xu(),Il(215),$l==199&&Mu()}}function Su(){ic.startNonterminal("FTWords",Vl),Tu(),Il(221);if($l==72||$l==77||$l==214)jl(),Lu();ic.endNonterminal("FTWords",Vl)}function xu(){Nu(),Il(221),($l==72||$l==77||$l==214)&&Au()}function Tu(){ic.startNonterminal("FTWordsValue",Vl);switch($l){case 11:Pl(11);break;default:Pl(281),Il(267),jl(),G(),Pl(287)}ic.endNonterminal("FTWordsValue",Vl)}function Nu(){switch($l){case 11:Hl(11);break;default:Hl(281),Il(267),Y(),Hl(287)}}function Cu(){ic.startNonterminal("FTExtensionSelection",Vl);for(;;){jl(),Lr(),Il(104);if($l!=36)break}Pl(281),Il(184),$l!=287&&(jl(),ou()),Pl(287),ic.endNonterminal("FTExtensionSelection",Vl)}function ku(){for(;;){Ar(),Il(104);if($l!=36)break}Hl(281),Il(184),$l!=287&&uu(),Hl(287)}function Lu(){ic.startNonterminal("FTAnyallOption",Vl);switch($l){case 77:Pl(77),Il(218),$l==278&&Pl(278);break;case 72:Pl(72),Il(219),$l==279&&Pl(279);break;default:Pl(214)}ic.endNonterminal("FTAnyallOption",Vl)}function Au(){switch($l){case 77:Hl(77),Il(218),$l==278&&Hl(278);break;case 72:Hl(72),Il(219),$l==279&&Hl(279);break;default:Hl(214)}}function Ou(){ic.startNonterminal("FTTimes",Vl),Pl(199),Il(159),jl(),_u(),Pl(252),ic.endNonterminal("FTTimes",Vl)}function Mu(){Hl(199),Il(159),Du(),Hl(252)}function _u(){ic.startNonterminal("FTRange",Vl);switch($l){case 131:Pl(131),Il(266),jl(),Jn();break;case 82:Pl(82),Il(129);switch($l){case 176:Pl(176),Il(266),jl(),Jn();break;default:Pl(186),Il(266),jl(),Jn()}break;default:Pl(142),Il(266),jl(),Jn(),Pl(253),Il(266),jl(),Jn()}ic.endNonterminal("FTRange",Vl)}function Du(){switch($l){case 131:Hl(131),Il(266),Kn();break;case 82:Hl(82),Il(129);switch($l){case 176:Hl(176),Il(266),Kn();break;default:Hl(186),Il(266),Kn()}break;default:Hl(142),Il(266),Kn(),Hl(253),Il(266),Kn()}}function Pu(){ic.startNonterminal("FTPosFilter",Vl);switch($l){case 206:Bu();break;case 275:Fu();break;case 118:qu();break;case 116:case 227:Wu();break;default:Ju()}ic.endNonterminal("FTPosFilter",Vl)}function Hu(){switch($l){case 206:ju();break;case 275:Iu();break;case 118:Ru();break;case 116:case 227:Xu();break;default:Ku()}}function Bu(){ic.startNonterminal("FTOrder",Vl),Pl(206),ic.endNonterminal("FTOrder",Vl)}function ju(){Hl(206)}function Fu(){ic.startNonterminal("FTWindow",Vl),Pl(275),Il(266),jl(),Jn(),jl(),Uu(),ic.endNonterminal("FTWindow",Vl)}function Iu(){Hl(275),Il(266),Kn(),zu()}function qu(){ic.startNonterminal("FTDistance",Vl),Pl(118),Il(159),jl(),_u(),jl(),Uu(),ic.endNonterminal("FTDistance",Vl)}function Ru(){Hl(118),Il(159),Du(),zu()}function Uu(){ic.startNonterminal("FTUnit",Vl);switch($l){case 279:Pl(279);break;case 237:Pl(237);break;default:Pl(209)}ic.endNonterminal("FTUnit",Vl)}function zu(){switch($l){case 279:Hl(279);break;case 237:Hl(237);break;default:Hl(209)}}function Wu(){ic.startNonterminal("FTScope",Vl);switch($l){case 227:Pl(227);break;default:Pl(116)}Il(136),jl(),Vu(),ic.endNonterminal("FTScope",Vl)}function Xu(){switch($l){case 227:Hl(227);break;default:Hl(116)}Il(136),$u()}function Vu(){ic.startNonterminal("FTBigUnit",Vl);switch($l){case 236:Pl(236);break;default:Pl(208)}ic.endNonterminal("FTBigUnit",Vl)}function $u(){switch($l){case 236:Hl(236);break;default:Hl(208)}}function Ju(){ic.startNonterminal("FTContent",Vl);switch($l){case 82:Pl(82),Il(121);switch($l){case 242:Pl(242);break;default:Pl(127)}break;default:Pl(128),Il(45),Pl(101)}ic.endNonterminal("FTContent",Vl)}function Ku(){switch($l){case 82:Hl(82),Il(121);switch($l){case 242:Hl(242);break;default:Hl(127)}break;default:Hl(128),Il(45),Hl(101)}}function Qu(){ic.startNonterminal("FTMatchOptions",Vl);for(;;){Pl(265),Il(205),jl(),Yu(),Il(214);if($l!=265)break}ic.endNonterminal("FTMatchOptions",Vl)}function Gu(){for(;;){Hl(265),Il(205),Zu(),Il(214);if($l!=265)break}}function Yu(){ic.startNonterminal("FTMatchOption",Vl);switch($l){case 191:ql(176);break;default:Wl=$l}switch(Wl){case 172:ya();break;case 274:case 140479:wa();break;case 251:case 128703:oa();break;case 243:case 124607:ia();break;case 115:na();break;case 244:case 125119:ha();break;case 203:Sa();break;default:ea()}ic.endNonterminal("FTMatchOption",Vl)}function Zu(){switch($l){case 191:ql(176);break;default:Wl=$l}switch(Wl){case 172:ba();break;case 274:case 140479:Ea();break;case 251:case 128703:ua();break;case 243:case 124607:sa();break;case 115:ra();break;case 244:case 125119:pa();break;case 203:xa();break;default:ta()}}function ea(){ic.startNonterminal("FTCaseOption",Vl);switch($l){case 89:Pl(89),Il(128);switch($l){case 160:Pl(160);break;default:Pl(235)}break;case 180:Pl(180);break;default:Pl(264)}ic.endNonterminal("FTCaseOption",Vl)}function ta(){switch($l){case 89:Hl(89),Il(128);switch($l){case 160:Hl(160);break;default:Hl(235)}break;case 180:Hl(180);break;default:Hl(264)}}function na(){ic.startNonterminal("FTDiacriticsOption",Vl),Pl(115),Il(128);switch($l){case 160:Pl(160);break;default:Pl(235)}ic.endNonterminal("FTDiacriticsOption",Vl)}function ra(){Hl(115),Il(128);switch($l){case 160:Hl(160);break;default:Hl(235)}}function ia(){ic.startNonterminal("FTStemOption",Vl);switch($l){case 243:Pl(243);break;default:Pl(191),Il(77),Pl(243)}ic.endNonterminal("FTStemOption",Vl)}function sa(){switch($l){case 243:Hl(243);break;default:Hl(191),Il(77),Hl(243)}}function oa(){ic.startNonterminal("FTThesaurusOption",Vl);switch($l){case 251:Pl(251),Il(152);switch($l){case 82:jl(),aa();break;case 110:Pl(110);break;default:Pl(35),Il(116);switch($l){case 82:jl(),aa();break;default:Pl(110)}for(;;){Il(105);if($l!=42)break;Pl(42),Il(34),jl(),aa()}Pl(38)}break;default:Pl(191),Il(81),Pl(251)}ic.endNonterminal("FTThesaurusOption",Vl)}function ua(){switch($l){case 251:Hl(251),Il(152);switch($l){case 82:fa();break;case 110:Hl(110);break;default:Hl(35),Il(116);switch($l){case 82:fa();break;default:Hl(110)}for(;;){Il(105);if($l!=42)break;Hl(42),Il(34),fa()}Hl(38)}break;default:Hl(191),Il(81),Hl(251)}}function aa(){ic.startNonterminal("FTThesaurusID",Vl),Pl(82),Il(15),Pl(7),Il(220),$l==221&&(Pl(221),Il(17),Pl(11)),Il(216);switch($l){case 82:ql(183);break;default:Wl=$l}if(Wl==131||Wl==142||Wl==90194||Wl==95314)jl(),la(),Il(61),Pl(178);ic.endNonterminal("FTThesaurusID",Vl)}function fa(){Hl(82),Il(15),Hl(7),Il(220),$l==221&&(Hl(221),Il(17),Hl(11)),Il(216);switch($l){case 82:ql(183);break;default:Wl=$l}if(Wl==131||Wl==142||Wl==90194||Wl==95314)ca(),Il(61),Hl(178)}function la(){ic.startNonterminal("FTLiteralRange",Vl);switch($l){case 131:Pl(131),Il(16),Pl(8);break;case 82:Pl(82),Il(129);switch($l){case 176:Pl(176),Il(16),Pl(8);break;default:Pl(186),Il(16),Pl(8)}break;default:Pl(142),Il(16),Pl(8),Il(82),Pl(253),Il(16),Pl(8)}ic.endNonterminal("FTLiteralRange",Vl)}function ca(){switch($l){case 131:Hl(131),Il(16),Hl(8);break;case 82:Hl(82),Il(129);switch($l){case 176:Hl(176),Il(16),Hl(8);break;default:Hl(186),Il(16),Hl(8)}break;default:Hl(142),Il(16),Hl(8),Il(82),Hl(253),Il(16),Hl(8)}}function ha(){ic.startNonterminal("FTStopWordOption",Vl);switch($l){case 244:Pl(244),Il(89),Pl(279),Il(152);switch($l){case 110:Pl(110);for(;;){Il(217);if($l!=132&&$l!=260)break;jl(),ma()}break;default:jl(),da();for(;;){Il(217);if($l!=132&&$l!=260)break;jl(),ma()}}break;default:Pl(191),Il(78),Pl(244),Il(89),Pl(279)}ic.endNonterminal("FTStopWordOption",Vl)}function pa(){switch($l){case 244:Hl(244),Il(89),Hl(279),Il(152);switch($l){case 110:Hl(110);for(;;){Il(217);if($l!=132&&$l!=260)break;ga()}break;default:va();for(;;){Il(217);if($l!=132&&$l!=260)break;ga()}}break;default:Hl(191),Il(78),Hl(244),Il(89),Hl(279)}}function da(){ic.startNonterminal("FTStopWords",Vl);switch($l){case 82:Pl(82),Il(15),Pl(7);break;default:Pl(35),Il(17),Pl(11);for(;;){Il(105);if($l!=42)break;Pl(42),Il(17),Pl(11)}Pl(38)}ic.endNonterminal("FTStopWords",Vl)}function va(){switch($l){case 82:Hl(82),Il(15),Hl(7);break;default:Hl(35),Il(17),Hl(11);for(;;){Il(105);if($l!=42)break;Hl(42),Il(17),Hl(11)}Hl(38)}}function ma(){ic.startNonterminal("FTStopWordsInclExcl",Vl);switch($l){case 260:Pl(260);break;default:Pl(132)}Il(103),jl(),da(),ic.endNonterminal("FTStopWordsInclExcl",Vl)}function ga(){switch($l){case 260:Hl(260);break;default:Hl(132)}Il(103),va()}function ya(){ic.startNonterminal("FTLanguageOption",Vl),Pl(172),Il(17),Pl(11),ic.endNonterminal("FTLanguageOption",Vl)}function ba(){Hl(172),Il(17),Hl(11)}function wa(){ic.startNonterminal("FTWildCardOption",Vl);switch($l){case 274:Pl(274);break;default:Pl(191),Il(87),Pl(274)}ic.endNonterminal("FTWildCardOption",Vl)}function Ea(){switch($l){case 274:Hl(274);break;default:Hl(191),Il(87),Hl(274)}}function Sa(){ic.startNonterminal("FTExtensionOption",Vl),Pl(203),Il(246),jl(),$a(),Il(17),Pl(11),ic.endNonterminal("FTExtensionOption",Vl)}function xa(){Hl(203),Il(246),Ja(),Il(17),Hl(11)}function Ta(){ic.startNonterminal("FTIgnoreOption",Vl),Pl(277),Il(45),Pl(101),Il(266),jl(),Yn(),ic.endNonterminal("FTIgnoreOption",Vl)}function Na(){Hl(277),Il(45),Hl(101),Il(266),Zn()}function Ca(){ic.startNonterminal("CollectionDecl",Vl),Pl(96),Il(246),jl(),$a(),Il(111),$l==80&&(jl(),ka()),ic.endNonterminal("CollectionDecl",Vl)}function ka(){ic.startNonterminal("CollectionTypeDecl",Vl),Pl(80),Il(200),jl(),Vs(),Il(171),$l!=54&&(jl(),Os()),ic.endNonterminal("CollectionTypeDecl",Vl)}function La(){ic.startNonterminal("IndexName",Vl),$a(),ic.endNonterminal("IndexName",Vl)}function Aa(){ic.startNonterminal("IndexDomainExpr",Vl),Or(),ic.endNonterminal("IndexDomainExpr",Vl)}function Oa(){ic.startNonterminal("IndexKeySpec",Vl),Ma(),$l==80&&(jl(),_a()),Il(156),$l==95&&(jl(),Pa()),ic.endNonterminal("IndexKeySpec",Vl)}function Ma(){ic.startNonterminal("IndexKeyExpr",Vl),Or(),ic.endNonterminal("IndexKeyExpr",Vl)}function _a(){ic.startNonterminal("IndexKeyTypeDecl",Vl),Pl(80),Il(246),jl(),Da(),Il(189);if($l==40||$l==41||$l==65)jl(),Os();ic.endNonterminal("IndexKeyTypeDecl",Vl)}function Da(){ic.startNonterminal("AtomicType",Vl),$a(),ic.endNonterminal("AtomicType",Vl)}function Pa(){ic.startNonterminal("IndexKeyCollation",Vl),Pl(95),Il(15),Pl(7),ic.endNonterminal("IndexKeyCollation",Vl)}function Ha(){ic.startNonterminal("IndexDecl",Vl),Pl(157),Il(246),jl(),La(),Il(68),Pl(201),Il(66),Pl(195),Il(263),jl(),Aa(),Pl(88),Il(263),jl(),Oa();for(;;){Il(107);if($l!=42)break;Pl(42),Il(263),jl(),Oa()}ic.endNonterminal("IndexDecl",Vl)}function Ba(){ic.startNonterminal("ICDecl",Vl),Pl(163),Il(43),Pl(98),Il(246),jl(),$a(),Il(124);switch($l){case 201:jl(),ja();break;default:jl(),Ra()}ic.endNonterminal("ICDecl",Vl)}function ja(){ic.startNonterminal("ICCollection",Vl),Pl(201),Il(42),Pl(96),Il(246),jl(),$a(),Il(150);switch($l){case 31:jl(),Fa();break;case 194:jl(),Ia();break;default:jl(),qa()}ic.endNonterminal("ICCollection",Vl)}function Fa(){ic.startNonterminal("ICCollSequence",Vl),Si(),Il(40),Pl(93),Il(267),jl(),Wf(),ic.endNonterminal("ICCollSequence",Vl)}function Ia(){ic.startNonterminal("ICCollSequenceUnique",Vl),Pl(194),Il(21),jl(),Si(),Il(40),Pl(93),Il(83),Pl(261),Il(60),Pl(171),Il(263),jl(),Or(),ic.endNonterminal("ICCollSequenceUnique",Vl)}function qa(){ic.startNonterminal("ICCollNode",Vl),Pl(140),Il(65),Pl(194),Il(21),jl(),Si(),Il(40),Pl(93),Il(267),jl(),Wf(),ic.endNonterminal("ICCollNode",Vl)}function Ra(){ic.startNonterminal("ICForeignKey",Vl),Pl(141),Il(60),Pl(171),Il(54),jl(),Ua(),jl(),za(),ic.endNonterminal("ICForeignKey",Vl)}function Ua(){ic.startNonterminal("ICForeignKeySource",Vl),Pl(142),Il(42),jl(),Wa(),ic.endNonterminal("ICForeignKeySource",Vl)}function za(){ic.startNonterminal("ICForeignKeyTarget",Vl),Pl(253),Il(42),jl(),Wa(),ic.endNonterminal("ICForeignKeyTarget",Vl)}function Wa(){ic.startNonterminal("ICForeignKeyValues",Vl),Pl(96),Il(246),jl(),$a(),Il(65),Pl(194),Il(21),jl(),Si(),Il(60),Pl(171),Il(263),jl(),Or(),ic.endNonterminal("ICForeignKeyValues",Vl)}function Xa(){Hl(37);for(;;){Rl(92);if($l==51)break;switch($l){case 24:Hl(24);break;default:Xa()}}Hl(51)}function Va(){switch($l){case 22:Hl(22);break;default:Xa()}}function $a(){ic.startNonterminal("EQName",Vl),Rl(241);switch($l){case 83:Pl(83);break;case 97:Pl(97);break;case 121:Pl(121);break;case 122:Pl(122);break;case 125:Pl(125);break;case 147:Pl(147);break;case 154:Pl(154);break;case 167:Pl(167);break;case 188:Pl(188);break;case 194:Pl(194);break;case 220:Pl(220);break;case 230:Pl(230);break;case 231:Pl(231);break;case 248:Pl(248);break;case 249:Pl(249);break;case 259:Pl(259);break;case 79:Pl(79);break;case 169:Pl(169);break;case 247:Pl(247);break;default:Ka()}ic.endNonterminal("EQName",Vl)}function Ja(){Rl(241);switch($l){case 83:Hl(83);break;case 97:Hl(97);break;case 121:Hl(121);break;case 122:Hl(122);break;case 125:Hl(125);break;case 147:Hl(147);break;case 154:Hl(154);break;case 167:Hl(167);break;case 188:Hl(188);break;case 194:Hl(194);break;case 220:Hl(220);break;case 230:Hl(230);break;case 231:Hl(231);break;case 248:Hl(248);break;case 249:Hl(249);break;case 259:Hl(259);break;case 79:Hl(79);break;case 169:Hl(169);break;case 247:Hl(247);break;default:Qa()}}function Ka(){ic.startNonterminal("FunctionName",Vl);switch($l){case 6:Pl(6);break;case 71:Pl(71);break;case 74:Pl(74);break;case 75:Pl(75);break;case 76:Pl(76);break;case 80:Pl(80);break;case 81:Pl(81);break;case 85:Pl(85);break;case 89:Pl(89);break;case 90:Pl(90);break;case 91:Pl(91);break;case 94:Pl(94);break;case 95:Pl(95);break;case 104:Pl(104);break;case 106:Pl(106);break;case 109:Pl(109);break;case 110:Pl(110);break;case 111:Pl(111);break;case 112:Pl(112);break;case 113:Pl(113);break;case 114:Pl(114);break;case 119:Pl(119);break;case 120:Pl(120);break;case 123:Pl(123);break;case 124:Pl(124);break;case 127:Pl(127);break;case 129:Pl(129);break;case 130:Pl(130);break;case 132:Pl(132);break;case 136:Pl(136);break;case 137:Pl(137);break;case 138:Pl(138);break;case 139:Pl(139);break;case 148:Pl(148);break;case 150:Pl(150);break;case 152:Pl(152);break;case 153:Pl(153);break;case 155:Pl(155);break;case 161:Pl(161);break;case 162:Pl(162);break;case 164:Pl(164);break;case 165:Pl(165);break;case 166:Pl(166);break;case 173:Pl(173);break;case 175:Pl(175);break;case 177:Pl(177);break;case 181:Pl(181);break;case 183:Pl(183);break;case 184:Pl(184);break;case 185:Pl(185);break;case 187:Pl(187);break;case 189:Pl(189);break;case 202:Pl(202);break;case 204:Pl(204);break;case 205:Pl(205);break;case 206:Pl(206);break;case 210:Pl(210);break;case 216:Pl(216);break;case 217:Pl(217);break;case 222:Pl(222);break;case 223:Pl(223);break;case 224:Pl(224);break;case 228:Pl(228);break;case 234:Pl(234);break;case 240:Pl(240);break;case 241:Pl(241);break;case 242:Pl(242);break;case 253:Pl(253);break;case 254:Pl(254);break;case 256:Pl(256);break;case 260:Pl(260);break;case 262:Pl(262);break;case 266:Pl(266);break;case 272:Pl(272);break;case 276:Pl(276);break;case 170:Pl(170);break;case 73:Pl(73);break;case 82:Pl(82);break;case 84:Pl(84);break;case 86:Pl(86);break;case 87:Pl(87);break;case 92:Pl(92);break;case 99:Pl(99);break;case 102:Pl(102);break;case 103:Pl(103);break;case 105:Pl(105);break;case 107:Pl(107);break;case 126:Pl(126);break;case 133:Pl(133);break;case 134:Pl(134);break;case 143:Pl(143);break;case 156:Pl(156);break;case 157:Pl(157);break;case 163:Pl(163);break;case 174:Pl(174);break;case 195:Pl(195);break;case 203:Pl(203);break;case 207:Pl(207);break;case 226:Pl(226);break;case 229:Pl(229);break;case 232:Pl(232);break;case 239:Pl(239);break;case 245:Pl(245);break;case 257:Pl(257);break;case 258:Pl(258);break;case 263:Pl(263);break;case 267:Pl(267);break;case 268:Pl(268);break;case 269:Pl(269);break;case 273:Pl(273);break;case 98:Pl(98);break;case 179:Pl(179);break;case 225:Pl(225);break;case 78:Pl(78);break;case 135:Pl(135);break;case 142:Pl(142);break;case 197:Pl(197);break;case 168:Pl(168);break;case 198:Pl(198);break;case 233:Pl(233);break;default:Pl(255)}ic.endNonterminal("FunctionName",Vl)}function Qa(){switch($l){case 6:Hl(6);break;case 71:Hl(71);break;case 74:Hl(74);break;case 75:Hl(75);break;case 76:Hl(76);break;case 80:Hl(80);break;case 81:Hl(81);break;case 85:Hl(85);break;case 89:Hl(89);break;case 90:Hl(90);break;case 91:Hl(91);break;case 94:Hl(94);break;case 95:Hl(95);break;case 104:Hl(104);break;case 106:Hl(106);break;case 109:Hl(109);break;case 110:Hl(110);break;case 111:Hl(111);break;case 112:Hl(112);break;case 113:Hl(113);break;case 114:Hl(114);break;case 119:Hl(119);break;case 120:Hl(120);break;case 123:Hl(123);break;case 124:Hl(124);break;case 127:Hl(127);break;case 129:Hl(129);break;case 130:Hl(130);break;case 132:Hl(132);break;case 136:Hl(136);break;case 137:Hl(137);break;case 138:Hl(138);break;case 139:Hl(139);break;case 148:Hl(148);break;case 150:Hl(150);break;case 152:Hl(152);break;case 153:Hl(153);break;case 155:Hl(155);break;case 161:Hl(161);break;case 162:Hl(162);break;case 164:Hl(164);break;case 165:Hl(165);break;case 166:Hl(166);break;case 173:Hl(173);break;case 175:Hl(175);break;case 177:Hl(177);break;case 181:Hl(181);break;case 183:Hl(183);break;case 184:Hl(184);break;case 185:Hl(185);break;case 187:Hl(187);break;case 189:Hl(189);break;case 202:Hl(202);break;case 204:Hl(204);break;case 205:Hl(205);break;case 206:Hl(206);break;case 210:Hl(210);break;case 216:Hl(216);break;case 217:Hl(217);break;case 222:Hl(222);break;case 223:Hl(223);break;case 224:Hl(224);break;case 228:Hl(228);break;case 234:Hl(234);break;case 240:Hl(240);break;case 241:Hl(241);break;case 242:Hl(242);break;case 253:Hl(253);break;case 254:Hl(254);break;case 256:Hl(256);break;case 260:Hl(260);break;case 262:Hl(262);break;case 266:Hl(266);break;case 272:Hl(272);break;case 276:Hl(276);break;case 170:Hl(170);break;case 73:Hl(73);break;case 82:Hl(82);break;case 84:Hl(84);break;case 86:Hl(86);break;case 87:Hl(87);break;case 92:Hl(92);break;case 99:Hl(99);break;case 102:Hl(102);break;case 103:Hl(103);break;case 105:Hl(105);break;case 107:Hl(107);break;case 126:Hl(126);break;case 133:Hl(133);break;case 134:Hl(134);break;case 143:Hl(143);break;case 156:Hl(156);break;case 157:Hl(157);break;case 163:Hl(163);break;case 174:Hl(174);break;case 195:Hl(195);break;case 203:Hl(203);break;case 207:Hl(207);break;case 226:Hl(226);break;case 229:Hl(229);break;case 232:Hl(232);break;case 239:Hl(239);break;case 245:Hl(245);break;case 257:Hl(257);break;case 258:Hl(258);break;case 263:Hl(263);break;case 267:Hl(267);break;case 268:Hl(268);break;case 269:Hl(269);break;case 273:Hl(273);break;case 98:Hl(98);break;case 179:Hl(179);break;case 225:Hl(225);break;case 78:Hl(78);break;case 135:Hl(135);break;case 142:Hl(142);break;case 197:Hl(197);break;case 168:Hl(168);break;case 198:Hl(198);break;case 233:Hl(233);break;default:Hl(255)}}function Ga(){ic.startNonterminal("NCName",Vl);switch($l){case 19:Pl(19);break;case 71:Pl(71);break;case 76:Pl(76);break;case 80:Pl(80);break;case 81:Pl(81);break;case 85:Pl(85);break;case 89:Pl(89);break;case 90:Pl(90);break;case 91:Pl(91);break;case 95:Pl(95);break;case 106:Pl(106);break;case 110:Pl(110);break;case 114:Pl(114);break;case 119:Pl(119);break;case 123:Pl(123);break;case 124:Pl(124);break;case 127:Pl(127);break;case 129:Pl(129);break;case 132:Pl(132);break;case 139:Pl(139);break;case 148:Pl(148);break;case 150:Pl(150);break;case 152:Pl(152);break;case 153:Pl(153);break;case 162:Pl(162);break;case 164:Pl(164);break;case 165:Pl(165);break;case 166:Pl(166);break;case 175:Pl(175);break;case 177:Pl(177);break;case 181:Pl(181);break;case 183:Pl(183);break;case 184:Pl(184);break;case 189:Pl(189);break;case 202:Pl(202);break;case 204:Pl(204);break;case 205:Pl(205);break;case 224:Pl(224);break;case 228:Pl(228);break;case 241:Pl(241);break;case 242:Pl(242);break;case 253:Pl(253);break;case 254:Pl(254);break;case 260:Pl(260);break;case 272:Pl(272);break;case 276:Pl(276);break;case 74:Pl(74);break;case 75:Pl(75);break;case 83:Pl(83);break;case 94:Pl(94);break;case 97:Pl(97);break;case 104:Pl(104);break;case 109:Pl(109);break;case 111:Pl(111);break;case 112:Pl(112);break;case 113:Pl(113);break;case 120:Pl(120);break;case 121:Pl(121);break;case 122:Pl(122);break;case 125:Pl(125);break;case 130:Pl(130);break;case 136:Pl(136);break;case 137:Pl(137);break;case 138:Pl(138);break;case 147:Pl(147);break;case 154:Pl(154);break;case 155:Pl(155);break;case 161:Pl(161);break;case 167:Pl(167);break;case 173:Pl(173);break;case 185:Pl(185);break;case 187:Pl(187);break;case 188:Pl(188);break;case 194:Pl(194);break;case 206:Pl(206);break;case 210:Pl(210);break;case 216:Pl(216);break;case 217:Pl(217);break;case 220:Pl(220);break;case 222:Pl(222);break;case 223:Pl(223);break;case 230:Pl(230);break;case 231:Pl(231);break;case 234:Pl(234);break;case 240:Pl(240);break;case 248:Pl(248);break;case 249:Pl(249);break;case 256:Pl(256);break;case 259:Pl(259);break;case 262:Pl(262);break;case 266:Pl(266);break;case 268:Pl(268);break;case 170:Pl(170);break;case 73:Pl(73);break;case 82:Pl(82);break;case 84:Pl(84);break;case 86:Pl(86);break;case 87:Pl(87);break;case 92:Pl(92);break;case 99:Pl(99);break;case 102:Pl(102);break;case 103:Pl(103);break;case 105:Pl(105);break;case 107:Pl(107);break;case 126:Pl(126);break;case 133:Pl(133);break;case 134:Pl(134);break;case 143:Pl(143);break;case 156:Pl(156);break;case 157:Pl(157);break;case 163:Pl(163);break;case 174:Pl(174);break;case 195:Pl(195);break;case 203:Pl(203);break;case 207:Pl(207);break;case 226:Pl(226);break;case 229:Pl(229);break;case 232:Pl(232);break;case 239:Pl(239);break;case 245:Pl(245);break;case 257:Pl(257);break;case 258:Pl(258);break;case 263:Pl(263);break;case 267:Pl(267);break;case 269:Pl(269);break;case 273:Pl(273);break;case 98:Pl(98);break;case 179:Pl(179);break;case 225:Pl(225);break;case 78:Pl(78);break;case 135:Pl(135);break;case 142:Pl(142);break;case 197:Pl(197);break;case 168:Pl(168);break;case 198:Pl(198);break;case 233:Pl(233);break;default:Pl(255)}ic.endNonterminal("NCName",Vl)}function Ya(){switch($l){case 19:Hl(19);break;case 71:Hl(71);break;case 76:Hl(76);break;case 80:Hl(80);break;case 81:Hl(81);break;case 85:Hl(85);break;case 89:Hl(89);break;case 90:Hl(90);break;case 91:Hl(91);break;case 95:Hl(95);break;case 106:Hl(106);break;case 110:Hl(110);break;case 114:Hl(114);break;case 119:Hl(119);break;case 123:Hl(123);break;case 124:Hl(124);break;case 127:Hl(127);break;case 129:Hl(129);break;case 132:Hl(132);break;case 139:Hl(139);break;case 148:Hl(148);break;case 150:Hl(150);break;case 152:Hl(152);break;case 153:Hl(153);break;case 162:Hl(162);break;case 164:Hl(164);break;case 165:Hl(165);break;case 166:Hl(166);break;case 175:Hl(175);break;case 177:Hl(177);break;case 181:Hl(181);break;case 183:Hl(183);break;case 184:Hl(184);break;case 189:Hl(189);break;case 202:Hl(202);break;case 204:Hl(204);break;case 205:Hl(205);break;case 224:Hl(224);break;case 228:Hl(228);break;case 241:Hl(241);break;case 242:Hl(242);break;case 253:Hl(253);break;case 254:Hl(254);break;case 260:Hl(260);break;case 272:Hl(272);break;case 276:Hl(276);break;case 74:Hl(74);break;case 75:Hl(75);break;case 83:Hl(83);break;case 94:Hl(94);break;case 97:Hl(97);break;case 104:Hl(104);break;case 109:Hl(109);break;case 111:Hl(111);break;case 112:Hl(112);break;case 113:Hl(113);break;case 120:Hl(120);break;case 121:Hl(121);break;case 122:Hl(122);break;case 125:Hl(125);break;case 130:Hl(130);break;case 136:Hl(136);break;case 137:Hl(137);break;case 138:Hl(138);break;case 147:Hl(147);break;case 154:Hl(154);break;case 155:Hl(155);break;case 161:Hl(161);break;case 167:Hl(167);break;case 173:Hl(173);break;case 185:Hl(185);break;case 187:Hl(187);break;case 188:Hl(188);break;case 194:Hl(194);break;case 206:Hl(206);break;case 210:Hl(210);break;case 216:Hl(216);break;case 217:Hl(217);break;case 220:Hl(220);break;case 222:Hl(222);break;case 223:Hl(223);break;case 230:Hl(230);break;case 231:Hl(231);break;case 234:Hl(234);break;case 240:Hl(240);break;case 248:Hl(248);break;case 249:Hl(249);break;case 256:Hl(256);break;case 259:Hl(259);break;case 262:Hl(262);break;case 266:Hl(266);break;case 268:Hl(268);break;case 170:Hl(170);break;case 73:Hl(73);break;case 82:Hl(82);break;case 84:Hl(84);break;case 86:Hl(86);break;case 87:Hl(87);break;case 92:Hl(92);break;case 99:Hl(99);break;case 102:Hl(102);break;case 103:Hl(103);break;case 105:Hl(105);break;case 107:Hl(107);break;case 126:Hl(126);break;case 133:Hl(133);break;case 134:Hl(134);break;case 143:Hl(143);break;case 156:Hl(156);break;case 157:Hl(157);break;case 163:Hl(163);break;case 174:Hl(174);break;case 195:Hl(195);break;case 203:Hl(203);break;case 207:Hl(207);break;case 226:Hl(226);break;case 229:Hl(229);break;case 232:Hl(232);break;case 239:Hl(239);break;case 245:Hl(245);break;case 257:Hl(257);break;case 258:Hl(258);break;case 263:Hl(263);break;case 267:Hl(267);break;case 269:Hl(269);break;case 273:Hl(273);break;case 98:Hl(98);break;case 179:Hl(179);break;case 225:Hl(225);break;case 78:Hl(78);break;case 135:Hl(135);break;case 142:Hl(142);break;case 197:Hl(197);break;case 168:Hl(168);break;case 198:Hl(198);break;case 233:Hl(233);break;default:Hl(255)}}function Za(){ic.startNonterminal("MainModule",Vl),l(),jl(),ef(),ic.endNonterminal("MainModule",Vl)}function ef(){ic.startNonterminal("Program",Vl),of(),ic.endNonterminal("Program",Vl)}function tf(){ic.startNonterminal("Statements",Vl);for(;;){Il(284);switch($l){case 35:ql(270);break;case 36:Ul(243);break;case 47:ql(286);break;case 48:ql(260);break;case 55:Ul(4);break;case 56:Ul(1);break;case 60:Ul(3);break;case 69:ql(273);break;case 78:ql(269);break;case 133:ql(147);break;case 139:ql(179);break;case 161:ql(276);break;case 177:ql(166);break;case 187:ql(247);break;case 220:ql(245);break;case 223:ql(170);break;case 266:ql(188);break;case 281:ql(283);break;case 283:ql(274);break;case 31:case 33:ql(246);break;case 83:case 122:ql(253);break;case 87:case 103:ql(145);break;case 97:case 249:ql(97);break;case 111:case 222:ql(261);break;case 41:case 43:case 196:ql(266);break;case 135:case 197:case 255:ql(211);break;case 104:case 130:case 240:case 268:ql(143);break;case 120:case 206:case 256:case 262:ql(148);break;case 8:case 9:case 10:case 11:case 32:ql(210);break;case 79:case 121:case 125:case 167:case 169:case 188:case 194:case 230:case 231:case 247:ql(20);break;case 6:case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl!=25&&Wl!=54&&Wl!=287&&Wl!=12808&&Wl!=12809&&Wl!=12810&&Wl!=12811&&Wl!=12832&&Wl!=12847&&Wl!=12935&&Wl!=12997&&Wl!=13055&&Wl!=16140&&Wl!=21512&&Wl!=21513&&Wl!=21514&&Wl!=21515&&Wl!=21536&&Wl!=21551&&Wl!=21639&&Wl!=21701&&Wl!=21759&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=146952&&Wl!=146953&&Wl!=146954&&Wl!=146955&&Wl!=146976&&Wl!=146991&&Wl!=147079&&Wl!=147141&&Wl!=147199){Wl=uc(8,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ff(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(8,Vl,Wl)}}if(Wl!=-1&&Wl!=54&&Wl!=16140&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333)break;jl(),af()}ic.endNonterminal("Statements",Vl)}function nf(){for(;;){Il(284);switch($l){case 35:ql(270);break;case 36:Ul(243);break;case 47:ql(286);break;case 48:ql(260);break;case 55:Ul(4);break;case 56:Ul(1);break;case 60:Ul(3);break;case 69:ql(273);break;case 78:ql(269);break;case 133:ql(147);break;case 139:ql(179);break;case 161:ql(276);break;case 177:ql(166);break;case 187:ql(247);break;case 220:ql(245);break;case 223:ql(170);break;case 266:ql(188);break;case 281:ql(283);break;case 283:ql(274);break;case 31:case 33:ql(246);break;case 83:case 122:ql(253);break;case 87:case 103:ql(145);break;case 97:case 249:ql(97);break;case 111:case 222:ql(261);break;case 41:case 43:case 196:ql(266);break;case 135:case 197:case 255:ql(211);break;case 104:case 130:case 240:case 268:ql(143);break;case 120:case 206:case 256:case 262:ql(148);break;case 8:case 9:case 10:case 11:case 32:ql(210);break;case 79:case 121:case 125:case 167:case 169:case 188:case 194:case 230:case 231:case 247:ql(20);break;case 6:case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl!=25&&Wl!=54&&Wl!=287&&Wl!=12808&&Wl!=12809&&Wl!=12810&&Wl!=12811&&Wl!=12832&&Wl!=12847&&Wl!=12935&&Wl!=12997&&Wl!=13055&&Wl!=16140&&Wl!=21512&&Wl!=21513&&Wl!=21514&&Wl!=21515&&Wl!=21536&&Wl!=21551&&Wl!=21639&&Wl!=21701&&Wl!=21759&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=146952&&Wl!=146953&&Wl!=146954&&Wl!=146955&&Wl!=146976&&Wl!=146991&&Wl!=147079&&Wl!=147141&&Wl!=147199){Wl=uc(8,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{ff(),oc(8,t,-1);continue}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(8,t,-2);break}}}if(Wl!=-1&&Wl!=54&&Wl!=16140&&Wl!=27656&&Wl!=27657&&Wl!=27658&&Wl!=27659&&Wl!=27680&&Wl!=27695&&Wl!=27783&&Wl!=27845&&Wl!=27903&&Wl!=91735&&Wl!=91751&&Wl!=115333)break;ff()}}function rf(){ic.startNonterminal("StatementsAndExpr",Vl),tf(),jl(),G(),ic.endNonterminal("StatementsAndExpr",Vl)}function sf(){nf(),Y()}function of(){ic.startNonterminal("StatementsAndOptionalExpr",Vl),tf(),$l!=25&&$l!=287&&(jl(),G()),ic.endNonterminal("StatementsAndOptionalExpr",Vl)}function uf(){nf(),$l!=25&&$l!=287&&Y()}function af(){ic.startNonterminal("Statement",Vl);switch($l){case 133:ql(147);break;case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 268:ql(143);break;case 281:ql(283);break;case 31:case 33:ql(246);break;case 87:case 103:ql(145);break;case 154:case 248:case 259:case 273:ql(95);break;default:Wl=$l}if(Wl!=6&&Wl!=8&&Wl!=9&&Wl!=10&&Wl!=11&&Wl!=32&&Wl!=35&&Wl!=36&&Wl!=41&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=54&&Wl!=55&&Wl!=56&&Wl!=60&&Wl!=69&&Wl!=71&&Wl!=73&&Wl!=74&&Wl!=75&&Wl!=76&&Wl!=78&&Wl!=79&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=83&&Wl!=84&&Wl!=85&&Wl!=86&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=92&&Wl!=94&&Wl!=95&&Wl!=97&&Wl!=98&&Wl!=99&&Wl!=102&&Wl!=104&&Wl!=105&&Wl!=106&&Wl!=107&&Wl!=109&&Wl!=110&&Wl!=111&&Wl!=112&&Wl!=113&&Wl!=114&&Wl!=119&&Wl!=120&&Wl!=121&&Wl!=122&&Wl!=123&&Wl!=124&&Wl!=125&&Wl!=126&&Wl!=127&&Wl!=129&&Wl!=130&&Wl!=132&&Wl!=134&&Wl!=135&&Wl!=136&&Wl!=137&&Wl!=138&&Wl!=142&&Wl!=143&&Wl!=147&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=155&&Wl!=156&&Wl!=157&&Wl!=161&&Wl!=162&&Wl!=163&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=167&&Wl!=168&&Wl!=169&&Wl!=170&&Wl!=173&&Wl!=174&&Wl!=175&&Wl!=179&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=185&&Wl!=187&&Wl!=188&&Wl!=189&&Wl!=194&&Wl!=195&&Wl!=196&&Wl!=197&&Wl!=198&&Wl!=202&&Wl!=203&&Wl!=204&&Wl!=205&&Wl!=206&&Wl!=207&&Wl!=210&&Wl!=216&&Wl!=217&&Wl!=220&&Wl!=222&&Wl!=223&&Wl!=224&&Wl!=225&&Wl!=226&&Wl!=228&&Wl!=229&&Wl!=230&&Wl!=231&&Wl!=232&&Wl!=233&&Wl!=234&&Wl!=239&&Wl!=240&&Wl!=241&&Wl!=242&&Wl!=245&&Wl!=247&&Wl!=249&&Wl!=253&&Wl!=254&&Wl!=255&&Wl!=257&&Wl!=258&&Wl!=260&&Wl!=262&&Wl!=263&&Wl!=266&&Wl!=267&&Wl!=269&&Wl!=272&&Wl!=276&&Wl!=283&&Wl!=10009&&Wl!=14935&&Wl!=14951&&Wl!=14981&&Wl!=14987&&Wl!=15002&&Wl!=15025&&Wl!=15096&&Wl!=15104&&Wl!=15107&&Wl!=15116&&Wl!=15121&&Wl!=16011&&Wl!=16049&&Wl!=16140&&Wl!=18007&&Wl!=18023&&Wl!=18053&&Wl!=18059&&Wl!=18074&&Wl!=18097&&Wl!=18168&&Wl!=18176&&Wl!=18179&&Wl!=18188&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=118961&&Wl!=122507&&Wl!=131723&&Wl!=144128&&Wl!=147225){Wl=uc(9,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{cf(),Wl=-1}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),pf(),Wl=-2}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),vf(),Wl=-3}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),If(),Wl=-12}catch(c){Wl=-13}}}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(9,Vl,Wl)}}switch(Wl){case-2:hf();break;case-3:df();break;case 91735:mf();break;case 91751:yf();break;case 115333:wf();break;case 16011:case 16049:case 118961:case 122507:case 131723:Sf();break;case 18074:Cf();break;case 18168:Lf();break;case 144128:_f();break;case 18179:Pf();break;case-12:case 16140:Ff();break;case-13:qf();break;case 54:Uf();break;default:lf()}ic.endNonterminal("Statement",Vl)}function ff(){switch($l){case 133:ql(147);break;case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 268:ql(143);break;case 281:ql(283);break;case 31:case 33:ql(246);break;case 87:case 103:ql(145);break;case 154:case 248:case 259:case 273:ql(95);break;default:Wl=$l}if(Wl!=6&&Wl!=8&&Wl!=9&&Wl!=10&&Wl!=11&&Wl!=32&&Wl!=35&&Wl!=36&&Wl!=41&&Wl!=43&&Wl!=47&&Wl!=48&&Wl!=54&&Wl!=55&&Wl!=56&&Wl!=60&&Wl!=69&&Wl!=71&&Wl!=73&&Wl!=74&&Wl!=75&&Wl!=76&&Wl!=78&&Wl!=79&&Wl!=80&&Wl!=81&&Wl!=82&&Wl!=83&&Wl!=84&&Wl!=85&&Wl!=86&&Wl!=89&&Wl!=90&&Wl!=91&&Wl!=92&&Wl!=94&&Wl!=95&&Wl!=97&&Wl!=98&&Wl!=99&&Wl!=102&&Wl!=104&&Wl!=105&&Wl!=106&&Wl!=107&&Wl!=109&&Wl!=110&&Wl!=111&&Wl!=112&&Wl!=113&&Wl!=114&&Wl!=119&&Wl!=120&&Wl!=121&&Wl!=122&&Wl!=123&&Wl!=124&&Wl!=125&&Wl!=126&&Wl!=127&&Wl!=129&&Wl!=130&&Wl!=132&&Wl!=134&&Wl!=135&&Wl!=136&&Wl!=137&&Wl!=138&&Wl!=142&&Wl!=143&&Wl!=147&&Wl!=148&&Wl!=150&&Wl!=152&&Wl!=153&&Wl!=155&&Wl!=156&&Wl!=157&&Wl!=161&&Wl!=162&&Wl!=163&&Wl!=164&&Wl!=165&&Wl!=166&&Wl!=167&&Wl!=168&&Wl!=169&&Wl!=170&&Wl!=173&&Wl!=174&&Wl!=175&&Wl!=179&&Wl!=181&&Wl!=183&&Wl!=184&&Wl!=185&&Wl!=187&&Wl!=188&&Wl!=189&&Wl!=194&&Wl!=195&&Wl!=196&&Wl!=197&&Wl!=198&&Wl!=202&&Wl!=203&&Wl!=204&&Wl!=205&&Wl!=206&&Wl!=207&&Wl!=210&&Wl!=216&&Wl!=217&&Wl!=220&&Wl!=222&&Wl!=223&&Wl!=224&&Wl!=225&&Wl!=226&&Wl!=228&&Wl!=229&&Wl!=230&&Wl!=231&&Wl!=232&&Wl!=233&&Wl!=234&&Wl!=239&&Wl!=240&&Wl!=241&&Wl!=242&&Wl!=245&&Wl!=247&&Wl!=249&&Wl!=253&&Wl!=254&&Wl!=255&&Wl!=257&&Wl!=258&&Wl!=260&&Wl!=262&&Wl!=263&&Wl!=266&&Wl!=267&&Wl!=269&&Wl!=272&&Wl!=276&&Wl!=283&&Wl!=10009&&Wl!=14935&&Wl!=14951&&Wl!=14981&&Wl!=14987&&Wl!=15002&&Wl!=15025&&Wl!=15096&&Wl!=15104&&Wl!=15107&&Wl!=15116&&Wl!=15121&&Wl!=16011&&Wl!=16049&&Wl!=16140&&Wl!=18007&&Wl!=18023&&Wl!=18053&&Wl!=18059&&Wl!=18074&&Wl!=18097&&Wl!=18168&&Wl!=18176&&Wl!=18179&&Wl!=18188&&Wl!=91735&&Wl!=91751&&Wl!=115333&&Wl!=118961&&Wl!=122507&&Wl!=131723&&Wl!=144128&&Wl!=147225){Wl=uc(9,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{cf(),oc(9,t,-1),Wl=-15}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),pf(),oc(9,t,-2),Wl=-15}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),vf(),oc(9,t,-3),Wl=-15}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),If(),oc(9,t,-12),Wl=-15}catch(c){Wl=-13,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(9,t,-13)}}}}}}switch(Wl){case-2:pf();break;case-3:vf();break;case 91735:gf();break;case 91751:bf();break;case 115333:Ef();break;case 16011:case 16049:case 118961:case 122507:case 131723:xf();break;case 18074:kf();break;case 18168:Af();break;case 144128:Df();break;case 18179:Hf();break;case-12:case 16140:If();break;case-13:Rf();break;case 54:zf();break;case-15:break;default:cf()}}function lf(){ic.startNonterminal("ApplyStatement",Vl),Vf(),Pl(54),ic.endNonterminal("ApplyStatement",Vl)}function cf(){$f(),Hl(54)}function hf(){ic.startNonterminal("AssignStatement",Vl),Pl(31),Il(246),jl(),Ti(),Il(28),Pl(53),Il(267),jl(),Wf(),Pl(54),ic.endNonterminal("AssignStatement",Vl)}function pf(){Hl(31),Il(246),Ni(),Il(28),Hl(53),Il(267),Xf(),Hl(54)}function df(){ic.startNonterminal("BlockStatement",Vl),Pl(281),Il(271),jl(),af(),Il(281),jl(),tf(),Pl(287),ic.endNonterminal("BlockStatement",Vl)}function vf(){Hl(281),Il(271),ff(),Il(281),nf(),Hl(287)}function mf(){ic.startNonterminal("BreakStatement",Vl),Pl(87),Il(62),Pl(179),Il(29),Pl(54),ic.endNonterminal("BreakStatement",Vl)}function gf(){Hl(87),Il(62),Hl(179),Il(29),Hl(54)}function yf(){ic.startNonterminal("ContinueStatement",Vl),Pl(103),Il(62),Pl(179),Il(29),Pl(54),ic.endNonterminal("ContinueStatement",Vl)}function bf(){Hl(103),Il(62),Hl(179),Il(29),Hl(54)}function wf(){ic.startNonterminal("ExitStatement",Vl),Pl(133),Il(74),Pl(225),Il(267),jl(),Wf(),Pl(54),ic.endNonterminal("ExitStatement",Vl)}function Ef(){Hl(133),Il(74),Hl(225),Il(267),Xf(),Hl(54)}function Sf(){ic.startNonterminal("FLWORStatement",Vl),tt();for(;;){Il(195);if($l==224)break;jl(),rt()}jl(),Tf(),ic.endNonterminal("FLWORStatement",Vl)}function xf(){nt();for(;;){Il(195);if($l==224)break;it()}Nf()}function Tf(){ic.startNonterminal("ReturnStatement",Vl),Pl(224),Il(271),jl(),af(),ic.endNonterminal("ReturnStatement",Vl)}function Nf(){Hl(224),Il(271),ff()}function Cf(){ic.startNonterminal("IfStatement",Vl),Pl(154),Il(22),Pl(35),Il(267),jl(),G(),Pl(38),Il(80),Pl(250),Il(271),jl(),af(),Il(51),Pl(123),Il(271),jl(),af(),ic.endNonterminal("IfStatement",Vl)}function kf(){Hl(154),Il(22),Hl(35),Il(267),Y(),Hl(38),Il(80),Hl(250),Il(271),ff(),Il(51),Hl(123),Il(271),ff()}function Lf(){ic.startNonterminal("SwitchStatement",Vl),Pl(248),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),Of(),Il(117);if($l!=89)break}Pl(110),Il(73),Pl(224),Il(271),jl(),af(),ic.endNonterminal("SwitchStatement",Vl)}function Af(){Hl(248),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),Mf(),Il(117);if($l!=89)break}Hl(110),Il(73),Hl(224),Il(271),ff()}function Of(){ic.startNonterminal("SwitchCaseStatement",Vl);for(;;){Pl(89),Il(267),jl(),dn();if($l!=89)break}Pl(224),Il(271),jl(),af(),ic.endNonterminal("SwitchCaseStatement",Vl)}function Mf(){for(;;){Hl(89),Il(267),vn();if($l!=89)break}Hl(224),Il(271),ff()}function _f(){ic.startNonterminal("TryCatchStatement",Vl),Pl(256),Il(90),jl(),df();for(;;){Il(39),Pl(92),Il(249),jl(),_n(),jl(),df(),Il(284);switch($l){case 92:ql(256);break;default:Wl=$l}if(Wl!=2652&&Wl!=3164&&Wl!=36444&&Wl!=37468&&Wl!=37980&&Wl!=38492&&Wl!=39004&&Wl!=40028&&Wl!=40540&&Wl!=41052&&Wl!=41564&&Wl!=42076&&Wl!=42588&&Wl!=43100&&Wl!=43612&&Wl!=44124&&Wl!=44636&&Wl!=45660&&Wl!=46172&&Wl!=46684&&Wl!=47196&&Wl!=48220&&Wl!=48732&&Wl!=49756&&Wl!=50268&&Wl!=50780&&Wl!=52316&&Wl!=52828&&Wl!=53340&&Wl!=53852&&Wl!=54364&&Wl!=54876&&Wl!=55900&&Wl!=56412&&Wl!=56924&&Wl!=57436&&Wl!=57948&&Wl!=58460&&Wl!=61020&&Wl!=61532&&Wl!=62044&&Wl!=62556&&Wl!=63068&&Wl!=63580&&Wl!=64092&&Wl!=64604&&Wl!=65116&&Wl!=66140&&Wl!=66652&&Wl!=67676&&Wl!=68188&&Wl!=68700&&Wl!=69212&&Wl!=69724&&Wl!=70236&&Wl!=70748&&Wl!=71260&&Wl!=72796&&Wl!=73308&&Wl!=75356&&Wl!=75868&&Wl!=76892&&Wl!=77916&&Wl!=78428&&Wl!=78940&&Wl!=79452&&Wl!=79964&&Wl!=80476&&Wl!=82524&&Wl!=83036&&Wl!=83548&&Wl!=84060&&Wl!=84572&&Wl!=85084&&Wl!=85596&&Wl!=86108&&Wl!=86620&&Wl!=87132&&Wl!=88668&&Wl!=89180&&Wl!=89692&&Wl!=90716&&Wl!=91740&&Wl!=92764&&Wl!=93788&&Wl!=94300&&Wl!=94812&&Wl!=95836&&Wl!=96348&&Wl!=96860&&Wl!=99420&&Wl!=99932&&Wl!=100956&&Wl!=101468&&Wl!=103516&&Wl!=104028&&Wl!=104540&&Wl!=105052&&Wl!=105564&&Wl!=106076&&Wl!=107612&&Wl!=110684&&Wl!=111196&&Wl!=112732&&Wl!=113756&&Wl!=114268&&Wl!=114780&&Wl!=115292&&Wl!=115804&&Wl!=116828&&Wl!=117340&&Wl!=117852&&Wl!=118364&&Wl!=118876&&Wl!=119388&&Wl!=119900&&Wl!=122460&&Wl!=122972&&Wl!=123484&&Wl!=123996&&Wl!=125532&&Wl!=126556&&Wl!=127068&&Wl!=127580&&Wl!=129628&&Wl!=130140&&Wl!=130652&&Wl!=131164&&Wl!=131676&&Wl!=132188&&Wl!=132700&&Wl!=133212&&Wl!=134236&&Wl!=134748&&Wl!=136284&&Wl!=136796&&Wl!=137308&&Wl!=137820&&Wl!=139356&&Wl!=139868&&Wl!=141404)break}ic.endNonterminal("TryCatchStatement",Vl)}function Df(){Hl(256),Il(90),vf();for(;;){Il(39),Hl(92),Il(249),Dn(),vf(),Il(284);switch($l){case 92:ql(256);break;default:Wl=$l}if(Wl!=2652&&Wl!=3164&&Wl!=36444&&Wl!=37468&&Wl!=37980&&Wl!=38492&&Wl!=39004&&Wl!=40028&&Wl!=40540&&Wl!=41052&&Wl!=41564&&Wl!=42076&&Wl!=42588&&Wl!=43100&&Wl!=43612&&Wl!=44124&&Wl!=44636&&Wl!=45660&&Wl!=46172&&Wl!=46684&&Wl!=47196&&Wl!=48220&&Wl!=48732&&Wl!=49756&&Wl!=50268&&Wl!=50780&&Wl!=52316&&Wl!=52828&&Wl!=53340&&Wl!=53852&&Wl!=54364&&Wl!=54876&&Wl!=55900&&Wl!=56412&&Wl!=56924&&Wl!=57436&&Wl!=57948&&Wl!=58460&&Wl!=61020&&Wl!=61532&&Wl!=62044&&Wl!=62556&&Wl!=63068&&Wl!=63580&&Wl!=64092&&Wl!=64604&&Wl!=65116&&Wl!=66140&&Wl!=66652&&Wl!=67676&&Wl!=68188&&Wl!=68700&&Wl!=69212&&Wl!=69724&&Wl!=70236&&Wl!=70748&&Wl!=71260&&Wl!=72796&&Wl!=73308&&Wl!=75356&&Wl!=75868&&Wl!=76892&&Wl!=77916&&Wl!=78428&&Wl!=78940&&Wl!=79452&&Wl!=79964&&Wl!=80476&&Wl!=82524&&Wl!=83036&&Wl!=83548&&Wl!=84060&&Wl!=84572&&Wl!=85084&&Wl!=85596&&Wl!=86108&&Wl!=86620&&Wl!=87132&&Wl!=88668&&Wl!=89180&&Wl!=89692&&Wl!=90716&&Wl!=91740&&Wl!=92764&&Wl!=93788&&Wl!=94300&&Wl!=94812&&Wl!=95836&&Wl!=96348&&Wl!=96860&&Wl!=99420&&Wl!=99932&&Wl!=100956&&Wl!=101468&&Wl!=103516&&Wl!=104028&&Wl!=104540&&Wl!=105052&&Wl!=105564&&Wl!=106076&&Wl!=107612&&Wl!=110684&&Wl!=111196&&Wl!=112732&&Wl!=113756&&Wl!=114268&&Wl!=114780&&Wl!=115292&&Wl!=115804&&Wl!=116828&&Wl!=117340&&Wl!=117852&&Wl!=118364&&Wl!=118876&&Wl!=119388&&Wl!=119900&&Wl!=122460&&Wl!=122972&&Wl!=123484&&Wl!=123996&&Wl!=125532&&Wl!=126556&&Wl!=127068&&Wl!=127580&&Wl!=129628&&Wl!=130140&&Wl!=130652&&Wl!=131164&&Wl!=131676&&Wl!=132188&&Wl!=132700&&Wl!=133212&&Wl!=134236&&Wl!=134748&&Wl!=136284&&Wl!=136796&&Wl!=137308&&Wl!=137820&&Wl!=139356&&Wl!=139868&&Wl!=141404)break}}function Pf(){ic.startNonterminal("TypeswitchStatement",Vl),Pl(259),Il(22),Pl(35),Il(267),jl(),G(),Pl(38);for(;;){Il(38),jl(),Bf(),Il(117);if($l!=89)break}Pl(110),Il(99),$l==31&&(Pl(31),Il(246),jl(),Ti()),Il(73),Pl(224),Il(271),jl(),af(),ic.endNonterminal("TypeswitchStatement",Vl)}function Hf(){Hl(259),Il(22),Hl(35),Il(267),Y(),Hl(38);for(;;){Il(38),jf(),Il(117);if($l!=89)break}Hl(110),Il(99),$l==31&&(Hl(31),Il(246),Ni()),Il(73),Hl(224),Il(271),ff()}function Bf(){ic.startNonterminal("CaseStatement",Vl),Pl(89),Il(258),$l==31&&(Pl(31),Il(246),jl(),Ti(),Il(33),Pl(80)),Il(254),jl(),Ls(),Il(73),Pl(224),Il(271),jl(),af(),ic.endNonterminal("CaseStatement",Vl)}function jf(){Hl(89),Il(258),$l==31&&(Hl(31),Il(246),Ni(),Il(33),Hl(80)),Il(254),As(),Il(73),Hl(224),Il(271),ff()}function Ff(){ic.startNonterminal("VarDeclStatement",Vl);for(;;){Il(102);if($l!=33)break;jl(),B()}Pl(268),Il(21),Pl(31),Il(246),jl(),Ti(),Il(172),$l==80&&(jl(),Cs()),Il(155),$l==53&&(Pl(53),Il(267),jl(),Wf());for(;;){if($l!=42)break;Pl(42),Il(21),Pl(31),Il(246),jl(),Ti(),Il(172),$l==80&&(jl(),Cs()),Il(155),$l==53&&(Pl(53),Il(267),jl(),Wf())}Pl(54),ic.endNonterminal("VarDeclStatement",Vl)}function If(){for(;;){Il(102);if($l!=33)break;j()}Hl(268),Il(21),Hl(31),Il(246),Ni(),Il(172),$l==80&&ks(),Il(155),$l==53&&(Hl(53),Il(267),Xf());for(;;){if($l!=42)break;Hl(42),Il(21),Hl(31),Il(246),Ni(),Il(172),$l==80&&ks(),Il(155),$l==53&&(Hl(53),Il(267),Xf())}Hl(54)}function qf(){ic.startNonterminal("WhileStatement",Vl),Pl(273),Il(22),Pl(35),Il(267),jl(),G(),Pl(38),Il(271),jl(),af(),ic.endNonterminal("WhileStatement",Vl)}function Rf(){Hl(273),Il(22),Hl(35),Il(267),Y(),Hl(38),Il(271),ff()}function Uf(){ic.startNonterminal("VoidStatement",Vl),Pl(54),ic.endNonterminal("VoidStatement",Vl)}function zf(){Hl(54)}function Wf(){ic.startNonterminal("ExprSingle",Vl);switch($l){case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 154:case 248:case 259:ql(95);break;default:Wl=$l}switch(Wl){case 16011:case 16049:case 118961:case 122507:case 131723:Z();break;case 18074:Sn();break;case 18168:ln();break;case 144128:Tn();break;case 18179:mn();break;default:Vf()}ic.endNonterminal("ExprSingle",Vl)}function Xf(){switch($l){case 139:ql(179);break;case 177:ql(166);break;case 256:ql(148);break;case 154:case 248:case 259:ql(95);break;default:Wl=$l}switch(Wl){case 16011:case 16049:case 118961:case 122507:case 131723:et();break;case 18074:xn();break;case 18168:cn();break;case 144128:Nn();break;case 18179:gn();break;default:$f()}}function Vf(){ic.startNonterminal("ExprSimple",Vl);switch($l){case 78:ql(269);break;case 161:ql(276);break;case 223:ql(170);break;case 111:case 222:ql(261);break;case 104:case 130:case 240:ql(143);break;default:Wl=$l}if(Wl==17998||Wl==18031||Wl==18081||Wl==18142||Wl==99439||Wl==99489||Wl==99550||Wl==99951||Wl==100001||Wl==136927){Wl=uc(10,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hn(),Wl=-2}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),zo(),Wl=-3}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Xo(),Wl=-4}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ko(),Wl=-5}catch(c){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),$o(),Wl=-6}catch(h){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Kf(),Wl=-8}catch(p){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Gf(),Wl=-9}catch(d){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Zf(),Wl=-10}catch(v){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),tl(),Wl=-11}catch(m){Wl=-12}}}}}}}}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(10,Vl,Wl)}}switch(Wl){case 16002:case 16112:on();break;case-3:Uo();break;case-4:Wo();break;case-5:Jo();break;case-6:case 99551:Vo();break;case 15976:nu();break;case-8:case 3183:case 4207:case 4719:case 5231:case 5743:case 15983:case 16495:case 17007:case 28271:case 28783:case 30831:case 35439:case 36463:case 37487:case 37999:case 38511:case 39023:case 40047:case 40559:case 41071:case 41583:case 42095:case 42607:case 43119:case 43631:case 44143:case 44655:case 45679:case 46191:case 46703:case 47215:case 48239:case 48751:case 49775:case 50287:case 50799:case 52335:case 52847:case 53359:case 53871:case 54383:case 54895:case 55919:case 56431:case 56943:case 57455:case 57967:case 58479:case 61039:case 61551:case 62063:case 62575:case 63087:case 63599:case 64111:case 64623:case 65135:case 66159:case 66671:case 67695:case 68207:case 68719:case 69231:case 69743:case 70255:case 70767:case 71279:case 72815:case 73327:case 75375:case 75887:case 76911:case 77935:case 78447:case 78959:case 79471:case 79983:case 80495:case 82543:case 83055:case 83567:case 84079:case 84591:case 85103:case 85615:case 86127:case 86639:case 87151:case 88687:case 89199:case 89711:case 90735:case 91759:case 92783:case 93807:case 94319:case 94831:case 95855:case 96367:case 96879:case 100975:case 101487:case 103535:case 104047:case 104559:case 105071:case 105583:case 106095:case 107631:case 110703:case 111215:case 112751:case 113775:case 114287:case 114799:case 115311:case 115823:case 116847:case 117359:case 117871:case 118383:case 118895:case 119407:case 119919:case 122479:case 122991:case 123503:case 124015:case 125551:case 126575:case 127087:case 127599:case 129647:case 130159:case 130671:case 131183:case 131695:case 132207:case 132719:case 133231:case 134255:case 134767:case 136303:case 136815:case 137327:case 137839:case 139375:case 139887:case 141423:case 143983:case 145007:Jf();break;case-9:case 3233:case 4257:case 4769:case 5281:case 5793:case 9889:case 16033:case 16545:case 17057:case 18593:case 21153:case 22177:case 24225:case 24737:case 28321:case 28833:case 30881:case 35489:case 36513:case 37537:case 38049:case 38561:case 39073:case 40097:case 40609:case 41121:case 41633:case 42145:case 42657:case 43169:case 43681:case 44193:case 44705:case 45729:case 46241:case 46753:case 47265:case 48289:case 48801:case 49825:case 50337:case 50849:case 52385:case 52897:case 53409:case 53921:case 54433:case 54945:case 55969:case 56481:case 56993:case 57505:case 58017:case 58529:case 61089:case 61601:case 62113:case 62625:case 63137:case 63649:case 64161:case 64673:case 65185:case 66209:case 66721:case 67745:case 68257:case 68769:case 69281:case 69793:case 70305:case 70817:case 71329:case 72865:case 73377:case 75425:case 75937:case 76961:case 77985:case 78497:case 79009:case 79521:case 80033:case 80545:case 82593:case 83105:case 83617:case 84129:case 84641:case 85153:case 85665:case 86177:case 86689:case 87201:case 88737:case 89249:case 89761:case 90785:case 91809:case 92833:case 93857:case 94369:case 94881:case 95905:case 96417:case 96929:case 100513:case 101025:case 101537:case 103585:case 104097:case 104609:case 105121:case 105633:case 106145:case 107681:case 110753:case 111265:case 112801:case 113825:case 114337:case 114849:case 115361:case 115873:case 116897:case 117409:case 117921:case 118433:case 118945:case 119457:case 119969:case 122529:case 123041:case 123553:case 124065:case 125601:case 126625:case 127137:case 127649:case 129697:case 130209:case 130721:case 131233:case 131745:case 132257:case 132769:case 133281:case 134305:case 134817:case 136353:case 136865:case 137377:case 137889:case 139425:case 139937:case 141473:case 144033:case 145057:Qf();break;case-10:case 3294:case 4318:case 4830:case 5342:case 5854:case 16094:case 16606:case 17118:case 28382:case 28894:case 30942:case 35550:case 36574:case 37598:case 38110:case 38622:case 39134:case 40158:case 40670:case 41182:case 41694:case 42206:case 42718:case 43230:case 43742:case 44254:case 44766:case 45790:case 46302:case 46814:case 47326:case 48350:case 48862:case 49886:case 50398:case 50910:case 52446:case 52958:case 53470:case 53982:case 54494:case 55006:case 56030:case 56542:case 57054:case 57566:case 58078:case 58590:case 61150:case 61662:case 62174:case 62686:case 63198:case 63710:case 64222:case 64734:case 65246:case 66270:case 66782:case 67806:case 68318:case 68830:case 69342:case 69854:case 70366:case 70878:case 71390:case 72926:case 73438:case 75486:case 75998:case 77022:case 78046:case 78558:case 79070:case 79582:case 80094:case 80606:case 82654:case 83166:case 83678:case 84190:case 84702:case 85214:case 85726:case 86238:case 86750:case 87262:case 88798:case 89310:case 89822:case 90846:case 91870:case 92894:case 93918:case 94430:case 94942:case 95966:case 96478:case 96990:case 100062:case 101086:case 101598:case 103646:case 104158:case 104670:case 105182:case 105694:case 106206:case 107742:case 110814:case 111326:case 112862:case 113886:case 114398:case 114910:case 115422:case 115934:case 116958:case 117470:case 117982:case 118494:case 119006:case 119518:case 120030:case 122590:case 123102:case 123614:case 124126:case 125662:case 126686:case 127198:case 127710:case 129758:case 130270:case 130782:case 131294:case 131806:case 132318:case 132830:case 133342:case 134366:case 134878:case 136414:case 136926:case 137438:case 137950:case 139486:case 139998:case 141534:case 144094:case 145118:Yf();break;case-11:el();break;case-12:case 3150:case 4174:case 4686:case 5198:case 5710:case 15950:case 16462:case 16974:case 18510:case 21070:case 22094:case 24142:case 24654:case 28238:case 28750:case 30798:case 35406:case 36430:case 37454:case 37966:case 38478:case 38990:case 40014:case 40526:case 41038:case 41550:case 42062:case 42574:case 43086:case 43598:case 44110:case 44622:case 45646:case 46158:case 46670:case 47182:case 48206:case 48718:case 49742:case 50254:case 50766:case 52302:case 52814:case 53326:case 53838:case 54350:case 54862:case 55886:case 56398:case 56910:case 57422:case 57934:case 58446:case 61006:case 61518:case 62030:case 62542:case 63054:case 63566:case 64078:case 64590:case 65102:case 66126:case 66638:case 67662:case 68174:case 68686:case 69198:case 69710:case 70222:case 70734:case 71246:case 72782:case 73294:case 75342:case 75854:case 76878:case 77902:case 78414:case 78926:case 79438:case 79950:case 80462:case 82510:case 83022:case 83534:case 84046:case 84558:case 85070:case 85582:case 86094:case 86606:case 87118:case 88654:case 89166:case 89678:case 90702:case 91726:case 92750:case 93774:case 94286:case 94798:case 95822:case 96334:case 96846:case 99406:case 99918:case 100430:case 100942:case 101454:case 103502:case 104014:case 104526:case 105038:case 105550:case 106062:case 107598:case 110670:case 111182:case 112718:case 113742:case 114254:case 114766:case 115278:case 115790:case 116814:case 117326:case 117838:case 118350:case 118862:case 119374:case 119886:case 122446:case 122958:case 123470:case 123982:case 125518:case 126542:case 127054:case 127566:case 129614:case 130126:case 130638:case 131150:case 131662:case 132174:case 132686:case 133198:case 134222:case 134734:case 136270:case 136782:case 137294:case 137806:case 139342:case 139854:case 141390:case 143950:case 144974:nl();break;default:Pn()}ic.endNonterminal("ExprSimple",Vl)}function $f(){switch($l){case 78:ql(269);break;case 161:ql(276);break;case 223:ql(170);break;case 111:case 222:ql(261);break;case 104:case 130:case 240:ql(143);break;default:Wl=$l}if(Wl==17998||Wl==18031||Wl==18081||Wl==18142||Wl==99439||Wl==99489||Wl==99550||Wl==99951||Wl==100001||Wl==136927){Wl=uc(10,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hn(),oc(10,t,-2),Wl=-13}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),zo(),oc(10,t,-3),Wl=-13}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Xo(),oc(10,t,-4),Wl=-13}catch(l){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ko(),oc(10,t,-5),Wl=-13}catch(c){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),$o(),oc(10,t,-6),Wl=-13}catch(h){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Kf(),oc(10,t,-8),Wl=-13}catch(p){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Gf(),oc(10,t,-9),Wl=-13}catch(d){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Zf(),oc(10,t,-10),Wl=-13}catch(v){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),tl(),oc(10,t,-11),Wl=-13}catch(m){Wl=-12,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(10,t,-12)}}}}}}}}}}}switch(Wl){case 16002:case 16112:un();break;case-3:zo();break;case-4:Xo();break;case-5:Ko();break;case-6:case 99551:$o();break;case 15976:ru();break;case-8:case 3183:case 4207:case 4719:case 5231:case 5743:case 15983:case 16495:case 17007:case 28271:case 28783:case 30831:case 35439:case 36463:case 37487:case 37999:case 38511:case 39023:case 40047:case 40559:case 41071:case 41583:case 42095:case 42607:case 43119:case 43631:case 44143:case 44655:case 45679:case 46191:case 46703:case 47215:case 48239:case 48751:case 49775:case 50287:case 50799:case 52335:case 52847:case 53359:case 53871:case 54383:case 54895:case 55919:case 56431:case 56943:case 57455:case 57967:case 58479:case 61039:case 61551:case 62063:case 62575:case 63087:case 63599:case 64111:case 64623:case 65135:case 66159:case 66671:case 67695:case 68207:case 68719:case 69231:case 69743:case 70255:case 70767:case 71279:case 72815:case 73327:case 75375:case 75887:case 76911:case 77935:case 78447:case 78959:case 79471:case 79983:case 80495:case 82543:case 83055:case 83567:case 84079:case 84591:case 85103:case 85615:case 86127:case 86639:case 87151:case 88687:case 89199:case 89711:case 90735:case 91759:case 92783:case 93807:case 94319:case 94831:case 95855:case 96367:case 96879:case 100975:case 101487:case 103535:case 104047:case 104559:case 105071:case 105583:case 106095:case 107631:case 110703:case 111215:case 112751:case 113775:case 114287:case 114799:case 115311:case 115823:case 116847:case 117359:case 117871:case 118383:case 118895:case 119407:case 119919:case 122479:case 122991:case 123503:case 124015:case 125551:case 126575:case 127087:case 127599:case 129647:case 130159:case 130671:case 131183:case 131695:case 132207:case 132719:case 133231:case 134255:case 134767:case 136303:case 136815:case 137327:case 137839:case 139375:case 139887:case 141423:case 143983:case 145007:Kf();break;case-9:case 3233:case 4257:case 4769:case 5281:case 5793:case 9889:case 16033:case 16545:case 17057:case 18593:case 21153:case 22177:case 24225:case 24737:case 28321:case 28833:case 30881:case 35489:case 36513:case 37537:case 38049:case 38561:case 39073:case 40097:case 40609:case 41121:case 41633:case 42145:case 42657:case 43169:case 43681:case 44193:case 44705:case 45729:case 46241:case 46753:case 47265:case 48289:case 48801:case 49825:case 50337:case 50849:case 52385:case 52897:case 53409:case 53921:case 54433:case 54945:case 55969:case 56481:case 56993:case 57505:case 58017:case 58529:case 61089:case 61601:case 62113:case 62625:case 63137:case 63649:case 64161:case 64673:case 65185:case 66209:case 66721:case 67745:case 68257:case 68769:case 69281:case 69793:case 70305:case 70817:case 71329:case 72865:case 73377:case 75425:case 75937:case 76961:case 77985:case 78497:case 79009:case 79521:case 80033:case 80545:case 82593:case 83105:case 83617:case 84129:case 84641:case 85153:case 85665:case 86177:case 86689:case 87201:case 88737:case 89249:case 89761:case 90785:case 91809:case 92833:case 93857:case 94369:case 94881:case 95905:case 96417:case 96929:case 100513:case 101025:case 101537:case 103585:case 104097:case 104609:case 105121:case 105633:case 106145:case 107681:case 110753:case 111265:case 112801:case 113825:case 114337:case 114849:case 115361:case 115873:case 116897:case 117409:case 117921:case 118433:case 118945:case 119457:case 119969:case 122529:case 123041:case 123553:case 124065:case 125601:case 126625:case 127137:case 127649:case 129697:case 130209:case 130721:case 131233:case 131745:case 132257:case 132769:case 133281:case 134305:case 134817:case 136353:case 136865:case 137377:case 137889:case 139425:case 139937:case 141473:case 144033:case 145057:Gf();break;case-10:case 3294:case 4318:case 4830:case 5342:case 5854:case 16094:case 16606:case 17118:case 28382:case 28894:case 30942:case 35550:case 36574:case 37598:case 38110:case 38622:case 39134:case 40158:case 40670:case 41182:case 41694:case 42206:case 42718:case 43230:case 43742:case 44254:case 44766:case 45790:case 46302:case 46814:case 47326:case 48350:case 48862:case 49886:case 50398:case 50910:case 52446:case 52958:case 53470:case 53982:case 54494:case 55006:case 56030:case 56542:case 57054:case 57566:case 58078:case 58590:case 61150:case 61662:case 62174:case 62686:case 63198:case 63710:case 64222:case 64734:case 65246:case 66270:case 66782:case 67806:case 68318:case 68830:case 69342:case 69854:case 70366:case 70878:case 71390:case 72926:case 73438:case 75486:case 75998:case 77022:case 78046:case 78558:case 79070:case 79582:case 80094:case 80606:case 82654:case 83166:case 83678:case 84190:case 84702:case 85214:case 85726:case 86238:case 86750:case 87262:case 88798:case 89310:case 89822:case 90846:case 91870:case 92894:case 93918:case 94430:case 94942:case 95966:case 96478:case 96990:case 100062:case 101086:case 101598:case 103646:case 104158:case 104670:case 105182:case 105694:case 106206:case 107742:case 110814:case 111326:case 112862:case 113886:case 114398:case 114910:case 115422:case 115934:case 116958:case 117470:case 117982:case 118494:case 119006:case 119518:case 120030:case 122590:case 123102:case 123614:case 124126:case 125662:case 126686:case 127198:case 127710:case 129758:case 130270:case 130782:case 131294:case 131806:case 132318:case 132830:case 133342:case 134366:case 134878:case 136414:case 136926:case 137438:case 137950:case 139486:case 139998:case 141534:case 144094:case 145118:Zf();break;case-11:tl();break;case-12:case 3150:case 4174:case 4686:case 5198:case 5710:case 15950:case 16462:case 16974:case 18510:case 21070:case 22094:case 24142:case 24654:case 28238:case 28750:case 30798:case 35406:case 36430:case 37454:case 37966:case 38478:case 38990:case 40014:case 40526:case 41038:case 41550:case 42062:case 42574:case 43086:case 43598:case 44110:case 44622:case 45646:case 46158:case 46670:case 47182:case 48206:case 48718:case 49742:case 50254:case 50766:case 52302:case 52814:case 53326:case 53838:case 54350:case 54862:case 55886:case 56398:case 56910:case 57422:case 57934:case 58446:case 61006:case 61518:case 62030:case 62542:case 63054:case 63566:case 64078:case 64590:case 65102:case 66126:case 66638:case 67662:case 68174:case 68686:case 69198:case 69710:case 70222:case 70734:case 71246:case 72782:case 73294:case 75342:case 75854:case 76878:case 77902:case 78414:case 78926:case 79438:case 79950:case 80462:case 82510:case 83022:case 83534:case 84046:case 84558:case 85070:case 85582:case 86094:case 86606:case 87118:case 88654:case 89166:case 89678:case 90702:case 91726:case 92750:case 93774:case 94286:case 94798:case 95822:case 96334:case 96846:case 99406:case 99918:case 100430:case 100942:case 101454:case 103502:case 104014:case 104526:case 105038:case 105550:case 106062:case 107598:case 110670:case 111182:case 112718:case 113742:case 114254:case 114766:case 115278:case 115790:case 116814:case 117326:case 117838:case 118350:case 118862:case 119374:case 119886:case 122446:case 122958:case 123470:case 123982:case 125518:case 126542:case 127054:case 127566:case 129614:case 130126:case 130638:case 131150:case 131662:case 132174:case 132686:case 133198:case 134222:case 134734:case 136270:case 136782:case 137294:case 137806:case 139342:case 139854:case 141390:case 143950:case 144974:rl();break;case-13:break;default:Hn()}}function Jf(){ic.startNonterminal("JSONDeleteExpr",Vl),Pl(111),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(11,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(11,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(260),jl(),ei(),ic.endNonterminal("JSONDeleteExpr",Vl)}function Kf(){Hl(111),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(11,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),oc(11,t,-1)}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(11,t,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(260),ti()}function Qf(){ic.startNonterminal("JSONInsertExpr",Vl);switch($l){case 161:ql(268);break;default:Wl=$l}if(Wl!=9889){Wl=uc(12,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(13,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),oc(14,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,f,-2)}Wl=-2}}Wl==-1&&(Hl(82),Il(72),Hl(215),Il(267),Xf()),Wl=-1}catch(g){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(12,Vl,Wl)}}switch(Wl){case-1:Pl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),Wl=-1}catch(m){Wl=-2}Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(267),jl(),Wf(),Pl(165),Il(267),jl(),Wf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),Wl=-1}catch(m){Wl=-2}Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,Vl,Wl)}}Wl==-1&&(Pl(82),Il(72),Pl(215),Il(267),jl(),Wf());break;default:Pl(161),Il(268);switch($l){case 168:ql(282);break;default:Wl=$l}if(Wl==18088){Wl=uc(15,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),Wl=-1}catch(m){Wl=-2}Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(15,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==9896||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(268),jl(),Tl(),Pl(165),Il(267),jl(),Wf()}ic.endNonterminal("JSONInsertExpr",Vl)}function Gf(){switch($l){case 161:ql(268);break;default:Wl=$l}if(Wl!=9889){Wl=uc(12,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(13,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),oc(14,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,f,-2)}Wl=-2}}Wl==-1&&(Hl(82),Il(72),Hl(215),Il(267),Xf()),oc(12,t,-1),Wl=-3}catch(g){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(12,t,-2)}}}switch(Wl){case-1:Hl(161),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(13,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(13,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(13,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf();switch($l){case 82:ql(72);break;default:Wl=$l}if(Wl==110162){Wl=uc(14,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(82),Il(72),Hl(215),Il(267),Xf(),oc(14,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(14,f,-2)}Wl=-2}}Wl==-1&&(Hl(82),Il(72),Hl(215),Il(267),Xf());break;case-3:break;default:Hl(161),Il(268);switch($l){case 168:ql(282);break;default:Wl=$l}if(Wl==18088){Wl=uc(15,Vl);if(Wl==0){var a=Xl,f=Vl,l=$l,c=Jl,h=Kl,p=Ql,d=Gl,v=Yl;try{Hl(168),oc(15,f,-1)}catch(m){Xl=a,Vl=f,$l=l,$l==0?cc=f:(Jl=c,Kl=h,Ql=p,Ql==0?cc=h:(Gl=d,Yl=v,cc=v)),oc(15,f,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==9896||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(268),Nl(),Hl(165),Il(267),Xf()}}function Yf(){ic.startNonterminal("JSONRenameExpr",Vl),Pl(222),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(16,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(16,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(260),jl(),ei(),Pl(80),Il(267),jl(),Wf(),ic.endNonterminal("JSONRenameExpr",Vl)}function Zf(){Hl(222),Il(260);switch($l){case 168:ql(261);break;default:Wl=$l}if(Wl==18088){Wl=uc(16,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),oc(16,t,-1)}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(16,t,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(260),ti(),Hl(80),Il(267),Xf()}function el(){ic.startNonterminal("JSONReplaceExpr",Vl),Pl(223),Il(85),Pl(267),Il(67),Pl(200),Il(59),Pl(168),Il(260),jl(),ei(),Pl(276),Il(267),jl(),Wf(),ic.endNonterminal("JSONReplaceExpr",Vl)}function tl(){Hl(223),Il(85),Hl(267),Il(67),Hl(200),Il(59),Hl(168),Il(260),ti(),Hl(276),Il(267),Xf()}function nl(){ic.startNonterminal("JSONAppendExpr",Vl),Pl(78),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(17,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(17,Vl,Wl)}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Pl(168),Il(267),jl(),Wf(),Pl(165),Il(267),jl(),Wf(),ic.endNonterminal("JSONAppendExpr",Vl)}function rl(){Hl(78),Il(267);switch($l){case 168:ql(269);break;default:Wl=$l}if(Wl==18088){Wl=uc(17,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(168),oc(17,t,-1)}catch(a){Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(17,t,-2)}Wl=-2}}(Wl==-1||Wl==3240||Wl==4264||Wl==4776||Wl==5288||Wl==5800||Wl==16040||Wl==16552||Wl==17064||Wl==18600||Wl==21160||Wl==22184||Wl==24232||Wl==24744||Wl==28328||Wl==28840||Wl==30888||Wl==35496||Wl==36520||Wl==37544||Wl==38056||Wl==38568||Wl==39080||Wl==40104||Wl==40616||Wl==41128||Wl==41640||Wl==42152||Wl==42664||Wl==43176||Wl==43688||Wl==44200||Wl==44712||Wl==45736||Wl==46248||Wl==46760||Wl==47272||Wl==48296||Wl==48808||Wl==49832||Wl==50344||Wl==50856||Wl==52392||Wl==52904||Wl==53416||Wl==53928||Wl==54440||Wl==54952||Wl==55976||Wl==56488||Wl==57e3||Wl==57512||Wl==58024||Wl==58536||Wl==61096||Wl==61608||Wl==62120||Wl==62632||Wl==63144||Wl==63656||Wl==64168||Wl==64680||Wl==65192||Wl==66216||Wl==66728||Wl==67752||Wl==68264||Wl==68776||Wl==69288||Wl==69800||Wl==70312||Wl==70824||Wl==71336||Wl==72872||Wl==73384||Wl==75432||Wl==75944||Wl==76968||Wl==77992||Wl==78504||Wl==79016||Wl==79528||Wl==80040||Wl==80552||Wl==82600||Wl==83112||Wl==83624||Wl==84136||Wl==84648||Wl==85160||Wl==85672||Wl==86184||Wl==86696||Wl==87208||Wl==88744||Wl==89256||Wl==89768||Wl==90792||Wl==91816||Wl==92840||Wl==93864||Wl==94376||Wl==94888||Wl==95912||Wl==96424||Wl==96936||Wl==99496||Wl==100008||Wl==100520||Wl==101032||Wl==101544||Wl==103592||Wl==104104||Wl==104616||Wl==105128||Wl==105640||Wl==106152||Wl==107688||Wl==110760||Wl==111272||Wl==112808||Wl==113832||Wl==114344||Wl==114856||Wl==115368||Wl==115880||Wl==116904||Wl==117416||Wl==117928||Wl==118440||Wl==118952||Wl==119464||Wl==119976||Wl==122536||Wl==123048||Wl==123560||Wl==124072||Wl==125608||Wl==126632||Wl==127144||Wl==127656||Wl==129704||Wl==130216||Wl==130728||Wl==131240||Wl==131752||Wl==132264||Wl==132776||Wl==133288||Wl==134312||Wl==134824||Wl==136360||Wl==136872||Wl==137384||Wl==137896||Wl==139432||Wl==139944||Wl==141480||Wl==144040||Wl==145064)&&Hl(168),Il(267),Xf(),Hl(165),Il(267),Xf()}function il(){ic.startNonterminal("CommonContent",Vl);switch($l){case 12:Pl(12);break;case 23:Pl(23);break;case 282:Pl(282);break;case 288:Pl(288);break;default:Ol()}ic.endNonterminal("CommonContent",Vl)}function sl(){switch($l){case 12:Hl(12);break;case 23:Hl(23);break;case 282:Hl(282);break;case 288:Hl(288);break;default:Ml()}}function ol(){ic.startNonterminal("ContentExpr",Vl),rf(),ic.endNonterminal("ContentExpr",Vl)}function ul(){sf()}function al(){ic.startNonterminal("CompDocConstructor",Vl),Pl(120),Il(90),jl(),Ol(),ic.endNonterminal("CompDocConstructor",Vl)}function fl(){Hl(120),Il(90),Ml()}function ll(){ic.startNonterminal("CompAttrConstructor",Vl),Pl(83),Il(250);switch($l){case 281:Pl(281),Il(267),jl(),G(),Pl(287);break;default:jl(),$a()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(18,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(18,Vl,Wl)}}switch(Wl){case-1:Pl(281),Il(91),Pl(287);break;default:jl(),Ol()}ic.endNonterminal("CompAttrConstructor",Vl)}function cl(){Hl(83),Il(250);switch($l){case 281:Hl(281),Il(267),Y(),Hl(287);break;default:Ja()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(18,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),oc(18,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(18,t,-2)}}}switch(Wl){case-1:Hl(281),Il(91),Hl(287);break;case-3:break;default:Ml()}}function hl(){ic.startNonterminal("CompPIConstructor",Vl),Pl(220),Il(242);switch($l){case 281:Pl(281),Il(267),jl(),G(),Pl(287);break;default:jl(),Ga()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(19,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(19,Vl,Wl)}}switch(Wl){case-1:Pl(281),Il(91),Pl(287);break;default:jl(),Ol()}ic.endNonterminal("CompPIConstructor",Vl)}function pl(){Hl(220),Il(242);switch($l){case 281:Hl(281),Il(267),Y(),Hl(287);break;default:Ya()}Il(90);switch($l){case 281:ql(281);break;default:Wl=$l}if(Wl==147225){Wl=uc(19,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Hl(281),Il(91),Hl(287),oc(19,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(19,t,-2)}}}switch(Wl){case-1:Hl(281),Il(91),Hl(287);break;case-3:break;default:Ml()}}function dl(){ic.startNonterminal("CompCommentConstructor",Vl),Pl(97),Il(90),jl(),Ol(),ic.endNonterminal("CompCommentConstructor",Vl)}function vl(){Hl(97),Il(90),Ml()}function ml(){ic.startNonterminal("CompTextConstructor",Vl),Pl(249),Il(90),jl(),Ol(),ic.endNonterminal("CompTextConstructor",Vl)}function gl(){Hl(249),Il(90),Ml()}function yl(){ic.startNonterminal("PrimaryExpr",Vl);switch($l){case 187:ql(247);break;case 220:ql(245);break;case 281:ql(283);break;case 83:case 122:ql(253);break;case 97:case 249:ql(97);break;case 120:case 206:case 262:ql(148);break;case 135:case 197:case 255:ql(237);break;case 6:case 71:case 73:case 74:case 75:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 137:case 138:case 139:case 142:case 143:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl==3353||Wl==4377||Wl==4889||Wl==5401||Wl==5913||Wl==16153||Wl==16665||Wl==17177||Wl==18055||Wl==18117||Wl==18175||Wl==18201||Wl==18713||Wl==21273||Wl==22297||Wl==24345||Wl==24857||Wl==28441||Wl==28953||Wl==31001||Wl==35609||Wl==36633||Wl==37657||Wl==38169||Wl==38681||Wl==39193||Wl==40217||Wl==40729||Wl==41241||Wl==41753||Wl==42265||Wl==42777||Wl==43289||Wl==43801||Wl==44313||Wl==44825||Wl==45849||Wl==46361||Wl==46873||Wl==47385||Wl==48409||Wl==48921||Wl==49945||Wl==50457||Wl==50969||Wl==52505||Wl==53017||Wl==53529||Wl==54041||Wl==54553||Wl==55065||Wl==56089||Wl==56601||Wl==57113||Wl==57625||Wl==58137||Wl==58649||Wl==61209||Wl==61721||Wl==62233||Wl==62745||Wl==63257||Wl==63769||Wl==64281||Wl==64793||Wl==65305||Wl==66329||Wl==66841||Wl==67865||Wl==68377||Wl==68889||Wl==69401||Wl==69913||Wl==70425||Wl==70937||Wl==71449||Wl==72985||Wl==73497||Wl==75545||Wl==76057||Wl==77081||Wl==78105||Wl==78617||Wl==79129||Wl==79641||Wl==80153||Wl==80665||Wl==82713||Wl==83225||Wl==83737||Wl==84249||Wl==84761||Wl==85273||Wl==85785||Wl==86297||Wl==86809||Wl==87321||Wl==88857||Wl==89369||Wl==89881||Wl==90905||Wl==91929||Wl==92953||Wl==93977||Wl==94489||Wl==95001||Wl==96025||Wl==96537||Wl==97049||Wl==99609||Wl==100121||Wl==100633||Wl==101145||Wl==101657||Wl==103705||Wl==104217||Wl==104729||Wl==105241||Wl==105753||Wl==106265||Wl==107801||Wl==110873||Wl==111385||Wl==112921||Wl==113945||Wl==114457||Wl==114969||Wl==115481||Wl==115993||Wl==117017||Wl==117529||Wl==118041||Wl==118553||Wl==119065||Wl==119577||Wl==120089||Wl==122649||Wl==123161||Wl==123673||Wl==124185||Wl==125721||Wl==126745||Wl==127257||Wl==127769||Wl==129817||Wl==130329||Wl==130841||Wl==131353||Wl==131865||Wl==132377||Wl==132889||Wl==133401||Wl==134425||Wl==134937||Wl==136473||Wl==136985||Wl==137497||Wl==138009||Wl==139545||Wl==140057||Wl==141593||Wl==144153||Wl==145177||Wl==147225){Wl=uc(20,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{vi(),Wl=-1}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hi(),Wl=-5}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ml(),Wl=-10}catch(l){Wl=-11}}}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(20,Vl,Wl)}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 12935:case 12997:case 13055:case 13447:case 13509:case 13567:case 13959:case 14021:case 14079:case 19591:case 19653:case 19711:case 20103:case 20165:case 20223:case 21127:case 21189:case 21247:case 21639:case 21701:case 21759:case 22151:case 22213:case 22271:case 23175:case 23237:case 23295:case 24199:case 24261:case 24319:case 24711:case 24773:case 24831:case 25735:case 25797:case 25855:case 27783:case 27845:case 27903:case 28295:case 28357:case 28415:case 29831:case 29893:case 29951:case 30343:case 30405:case 30463:case 31367:case 31429:case 31487:case 31879:case 31941:case 31999:case 32391:case 32453:case 32511:case 32903:case 32965:case 33023:case 35463:case 35525:case 35583:case 35975:case 36037:case 36095:case 36487:case 36549:case 36607:case 39047:case 39109:case 39167:case 41095:case 41157:case 41215:case 41607:case 41669:case 41727:case 42119:case 42181:case 42239:case 43655:case 43717:case 43775:case 45191:case 45253:case 45311:case 45703:case 45765:case 45823:case 46215:case 46277:case 46335:case 46727:case 46789:case 46847:case 48775:case 48837:case 48895:case 51335:case 51397:case 51455:case 54407:case 54469:case 54527:case 56455:case 56517:case 56575:case 58503:case 58565:case 58623:case 61063:case 61125:case 61183:case 63111:case 63173:case 63231:case 63623:case 63685:case 63743:case 65159:case 65221:case 65279:case 66183:case 66245:case 66303:case 67719:case 67781:case 67839:case 71303:case 71365:case 71423:case 75911:case 75973:case 76031:case 76935:case 76997:case 77055:case 77959:case 78021:case 78079:case 78471:case 78533:case 78591:case 83079:case 83141:case 83199:case 84103:case 84165:case 84223:case 84615:case 84677:case 84735:case 85127:case 85189:case 85247:case 89735:case 89797:case 89855:case 90759:case 90821:case 90879:case 92807:case 92869:case 92927:case 93831:case 93893:case 93951:case 94343:case 94405:case 94463:case 96903:case 96965:case 97023:case 103559:case 103621:case 103679:case 104583:case 104645:case 104703:case 105095:case 105157:case 105215:case 107143:case 107205:case 107263:case 114823:case 114885:case 114943:case 116871:case 116933:case 116991:case 121479:case 121541:case 121599:case 123527:case 123589:case 123647:case 124039:case 124101:case 124159:case 129159:case 129221:case 129279:case 129671:case 129733:case 129791:case 130183:case 130245:case 130303:case 133255:case 133317:case 133375:case 139399:case 139461:case 139519:case 141447:case 141509:case 141567:case 142983:case 143045:case 143103:case 145543:case 145605:case 145663:case 146055:case 146117:case 146175:case 146567:case 146629:case 146687:case 147079:case 147141:case 147199:di();break;case 31:Si();break;case 35:Ci();break;case 32:Li();break;case-5:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:Pi();break;case 144078:Oi();break;case 144134:_i();break;case 33:case 79:case 121:case 125:case 147:case 154:case 167:case 169:case 188:case 194:case 230:case 231:case 247:case 248:case 259:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14970:case 14971:case 14972:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14996:case 14998:case 15e3:case 15001:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15016:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15037:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:ys();break;case-10:case 27929:Ol();break;case-11:case 10009:Sl();break;case 69:Ll();break;case 283:wl();break;default:qi()}ic.endNonterminal("PrimaryExpr",Vl)}function bl(){switch($l){case 187:ql(247);break;case 220:ql(245);break;case 281:ql(283);break;case 83:case 122:ql(253);break;case 97:case 249:ql(97);break;case 120:case 206:case 262:ql(148);break;case 135:case 197:case 255:ql(237);break;case 6:case 71:case 73:case 74:case 75:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 137:case 138:case 139:case 142:case 143:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:ql(95);break;default:Wl=$l}if(Wl==3353||Wl==4377||Wl==4889||Wl==5401||Wl==5913||Wl==16153||Wl==16665||Wl==17177||Wl==18055||Wl==18117||Wl==18175||Wl==18201||Wl==18713||Wl==21273||Wl==22297||Wl==24345||Wl==24857||Wl==28441||Wl==28953||Wl==31001||Wl==35609||Wl==36633||Wl==37657||Wl==38169||Wl==38681||Wl==39193||Wl==40217||Wl==40729||Wl==41241||Wl==41753||Wl==42265||Wl==42777||Wl==43289||Wl==43801||Wl==44313||Wl==44825||Wl==45849||Wl==46361||Wl==46873||Wl==47385||Wl==48409||Wl==48921||Wl==49945||Wl==50457||Wl==50969||Wl==52505||Wl==53017||Wl==53529||Wl==54041||Wl==54553||Wl==55065||Wl==56089||Wl==56601||Wl==57113||Wl==57625||Wl==58137||Wl==58649||Wl==61209||Wl==61721||Wl==62233||Wl==62745||Wl==63257||Wl==63769||Wl==64281||Wl==64793||Wl==65305||Wl==66329||Wl==66841||Wl==67865||Wl==68377||Wl==68889||Wl==69401||Wl==69913||Wl==70425||Wl==70937||Wl==71449||Wl==72985||Wl==73497||Wl==75545||Wl==76057||Wl==77081||Wl==78105||Wl==78617||Wl==79129||Wl==79641||Wl==80153||Wl==80665||Wl==82713||Wl==83225||Wl==83737||Wl==84249||Wl==84761||Wl==85273||Wl==85785||Wl==86297||Wl==86809||Wl==87321||Wl==88857||Wl==89369||Wl==89881||Wl==90905||Wl==91929||Wl==92953||Wl==93977||Wl==94489||Wl==95001||Wl==96025||Wl==96537||Wl==97049||Wl==99609||Wl==100121||Wl==100633||Wl==101145||Wl==101657||Wl==103705||Wl==104217||Wl==104729||Wl==105241||Wl==105753||Wl==106265||Wl==107801||Wl==110873||Wl==111385||Wl==112921||Wl==113945||Wl==114457||Wl==114969||Wl==115481||Wl==115993||Wl==117017||Wl==117529||Wl==118041||Wl==118553||Wl==119065||Wl==119577||Wl==120089||Wl==122649||Wl==123161||Wl==123673||Wl==124185||Wl==125721||Wl==126745||Wl==127257||Wl==127769||Wl==129817||Wl==130329||Wl==130841||Wl==131353||Wl==131865||Wl==132377||Wl==132889||Wl==133401||Wl==134425||Wl==134937||Wl==136473||Wl==136985||Wl==137497||Wl==138009||Wl==139545||Wl==140057||Wl==141593||Wl==144153||Wl==145177||Wl==147225){Wl=uc(20,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{vi(),oc(20,t,-1),Wl=-14}catch(a){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Hi(),oc(20,t,-5),Wl=-14}catch(f){try{Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),Ml(),oc(20,t,-10),Wl=-14}catch(l){Wl=-11,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(20,t,-11)}}}}}switch(Wl){case-1:case 8:case 9:case 10:case 11:case 12935:case 12997:case 13055:case 13447:case 13509:case 13567:case 13959:case 14021:case 14079:case 19591:case 19653:case 19711:case 20103:case 20165:case 20223:case 21127:case 21189:case 21247:case 21639:case 21701:case 21759:case 22151:case 22213:case 22271:case 23175:case 23237:case 23295:case 24199:case 24261:case 24319:case 24711:case 24773:case 24831:case 25735:case 25797:case 25855:case 27783:case 27845:case 27903:case 28295:case 28357:case 28415:case 29831:case 29893:case 29951:case 30343:case 30405:case 30463:case 31367:case 31429:case 31487:case 31879:case 31941:case 31999:case 32391:case 32453:case 32511:case 32903:case 32965:case 33023:case 35463:case 35525:case 35583:case 35975:case 36037:case 36095:case 36487:case 36549:case 36607:case 39047:case 39109:case 39167:case 41095:case 41157:case 41215:case 41607:case 41669:case 41727:case 42119:case 42181:case 42239:case 43655:case 43717:case 43775:case 45191:case 45253:case 45311:case 45703:case 45765:case 45823:case 46215:case 46277:case 46335:case 46727:case 46789:case 46847:case 48775:case 48837:case 48895:case 51335:case 51397:case 51455:case 54407:case 54469:case 54527:case 56455:case 56517:case 56575:case 58503:case 58565:case 58623:case 61063:case 61125:case 61183:case 63111:case 63173:case 63231:case 63623:case 63685:case 63743:case 65159:case 65221:case 65279:case 66183:case 66245:case 66303:case 67719:case 67781:case 67839:case 71303:case 71365:case 71423:case 75911:case 75973:case 76031:case 76935:case 76997:case 77055:case 77959:case 78021:case 78079:case 78471:case 78533:case 78591:case 83079:case 83141:case 83199:case 84103:case 84165:case 84223:case 84615:case 84677:case 84735:case 85127:case 85189:case 85247:case 89735:case 89797:case 89855:case 90759:case 90821:case 90879:case 92807:case 92869:case 92927:case 93831:case 93893:case 93951:case 94343:case 94405:case 94463:case 96903:case 96965:case 97023:case 103559:case 103621:case 103679:case 104583:case 104645:case 104703:case 105095:case 105157:case 105215:case 107143:case 107205:case 107263:case 114823:case 114885:case 114943:case 116871:case 116933:case 116991:case 121479:case 121541:case 121599:case 123527:case 123589:case 123647:case 124039:case 124101:case 124159:case 129159:case 129221:case 129279:case 129671:case 129733:case 129791:case 130183:case 130245:case 130303:case 133255:case 133317:case 133375:case 139399:case 139461:case 139519:case 141447:case 141509:case 141567:case 142983:case 143045:case 143103:case 145543:case 145605:case 145663:case 146055:case 146117:case 146175:case 146567:case 146629:case 146687:case 147079:case 147141:case 147199:vi();break;case 31:xi();break;case 35:ki();break;case 32:Ai();break;case-5:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:Hi();break;case 144078:Mi();break;case 144134:Di();break;case 33:case 79:case 121:case 125:case 147:case 154:case 167:case 169:case 188:case 194:case 230:case 231:case 247:case 248:case 259:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14970:case 14971:case 14972:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14996:case 14998:case 15e3:case 15001:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15016:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15037:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:bs();break;case-10:case 27929:Ml();break;case-11:case 10009:xl();break;case 69:Al();break;case 283:El();break;case-14:break;default:Ri()}}function wl(){ic.startNonterminal("JSONSimpleObjectUnion",Vl),Pl(283),Il(274),$l!=286&&(jl(),G()),Pl(286),ic.endNonterminal("JSONSimpleObjectUnion",Vl)}function El(){Hl(283),Il(274),$l!=286&&Y(),Hl(286)}function Sl(){ic.startNonterminal("ObjectConstructor",Vl),Pl(281),Il(277),$l!=287&&(jl(),Tl()),Pl(287),ic.endNonterminal("ObjectConstructor",Vl)}function xl(){Hl(281),Il(277),$l!=287&&Nl(),Hl(287)}function Tl(){ic.startNonterminal("PairConstructorList",Vl),Cl();for(;;){if($l!=42)break;Pl(42),Il(268),jl(),Cl()}ic.endNonterminal("PairConstructorList",Vl)}function Nl(){kl();for(;;){if($l!=42)break;Hl(42),Il(268),kl()}}function Cl(){ic.startNonterminal("PairConstructor",Vl);switch($l){case 78:ql(279);break;case 139:ql(187);break;case 161:ql(282);break;case 177:ql(178);break;case 187:ql(252);break;case 220:ql(248);break;case 223:ql(180);break;case 266:ql(191);break;case 83:case 122:ql(257);break;case 97:case 249:ql(149);break;case 111:case 222:ql(262);break;case 104:case 130:case 240:ql(165);break;case 135:case 197:case 255:ql(209);break;case 120:case 206:case 256:case 262:ql(167);break;case 121:case 125:case 167:case 188:case 194:case 230:case 231:ql(96);break;case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 133:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 268:case 269:case 272:case 273:case 276:ql(144);break;default:Wl=$l}if(Wl==25735||Wl==25797||Wl==25855){Wl=uc(21,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xf(),Wl=-1}catch(a){Wl=-2}Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(21,Vl,Wl)}}switch(Wl){case-2:case 19:case 25671:case 25673:case 25674:case 25675:case 25676:case 25678:case 25680:case 25681:case 25682:case 25683:case 25684:case 25685:case 25686:case 25687:case 25689:case 25690:case 25691:case 25692:case 25694:case 25695:case 25697:case 25698:case 25699:case 25702:case 25703:case 25704:case 25705:case 25706:case 25707:case 25709:case 25710:case 25711:case 25712:case 25713:case 25714:case 25719:case 25720:case 25721:case 25722:case 25723:case 25724:case 25725:case 25726:case 25727:case 25729:case 25730:case 25732:case 25733:case 25734:case 25736:case 25737:case 25738:case 25739:case 25742:case 25743:case 25747:case 25748:case 25750:case 25752:case 25753:case 25754:case 25755:case 25756:case 25757:case 25761:case 25762:case 25763:case 25764:case 25765:case 25766:case 25767:case 25768:case 25770:case 25773:case 25774:case 25775:case 25777:case 25779:case 25781:case 25783:case 25784:case 25785:case 25787:case 25788:case 25789:case 25794:case 25795:case 25798:case 25802:case 25803:case 25804:case 25805:case 25806:case 25807:case 25810:case 25816:case 25817:case 25820:case 25822:case 25823:case 25824:case 25825:case 25826:case 25828:case 25829:case 25830:case 25831:case 25832:case 25833:case 25834:case 25839:case 25840:case 25841:case 25842:case 25845:case 25848:case 25849:case 25853:case 25854:case 25856:case 25857:case 25858:case 25859:case 25860:case 25862:case 25863:case 25866:case 25867:case 25868:case 25869:case 25872:case 25873:case 25876:Ga();break;default:Wf()}Il(26),Pl(50),Il(267),jl(),Wf(),ic.endNonterminal("PairConstructor",Vl)}function kl(){switch($l){case 78:ql(279);break;case 139:ql(187);break;case 161:ql(282);break;case 177:ql(178);break;case 187:ql(252);break;case 220:ql(248);break;case 223:ql(180);break;case 266:ql(191);break;case 83:case 122:ql(257);break;case 97:case 249:ql(149);break;case 111:case 222:ql(262);break;case 104:case 130:case 240:ql(165);break;case 135:case 197:case 255:ql(209);break;case 120:case 206:case 256:case 262:ql(167);break;case 121:case 125:case 167:case 188:case 194:case 230:case 231:ql(96);break;case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 133:case 134:case 136:case 137:case 138:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 268:case 269:case 272:case 273:case 276:ql(144);break;default:Wl=$l}if(Wl==25735||Wl==25797||Wl==25855){Wl=uc(21,Vl);if(Wl==0){var e=Xl,t=Vl,n=$l,r=Jl,i=Kl,s=Ql,o=Gl,u=Yl;try{Xf(),oc(21,t,-1),Wl=-3}catch(a){Wl=-2,Xl=e,Vl=t,$l=n,$l==0?cc=t:(Jl=r,Kl=i,Ql=s,Ql==0?cc=i:(Gl=o,Yl=u,cc=u)),oc(21,t,-2)}}}switch(Wl){case-2:case 19:case 25671:case 25673:case 25674:case 25675:case 25676:case 25678:case 25680:case 25681:case 25682:case 25683:case 25684:case 25685:case 25686:case 25687:case 25689:case 25690:case 25691:case 25692:case 25694:case 25695:case 25697:case 25698:case 25699:case 25702:case 25703:case 25704:case 25705:case 25706:case 25707:case 25709:case 25710:case 25711:case 25712:case 25713:case 25714:case 25719:case 25720:case 25721:case 25722:case 25723:case 25724:case 25725:case 25726:case 25727:case 25729:case 25730:case 25732:case 25733:case 25734:case 25736:case 25737:case 25738:case 25739:case 25742:case 25743:case 25747:case 25748:case 25750:case 25752:case 25753:case 25754:case 25755:case 25756:case 25757:case 25761:case 25762:case 25763:case 25764:case 25765:case 25766:case 25767:case 25768:case 25770:case 25773:case 25774:case 25775:case 25777:case 25779:case 25781:case 25783:case 25784:case 25785:case 25787:case 25788:case 25789:case 25794:case 25795:case 25798:case 25802:case 25803:case 25804:case 25805:case 25806:case 25807:case 25810:case 25816:case 25817:case 25820:case 25822:case 25823:case 25824:case 25825:case 25826:case 25828:case 25829:case 25830:case 25831:case 25832:case 25833:case 25834:case 25839:case 25840:case 25841:case 25842:case 25845:case 25848:case 25849:case 25853:case 25854:case 25856:case 25857:case 25858:case 25859:case 25860:case 25862:case 25863:case 25866:case 25867:case 25868:case 25869:case 25872:case 25873:case 25876:Ya();break;case-3:break;default:Xf()}Il(26),Hl(50),Il(267),Xf()}function Ll(){ic.startNonterminal("ArrayConstructor",Vl),Pl(69),Il(273),$l!=70&&(jl(),G()),Pl(70),ic.endNonterminal("ArrayConstructor",Vl)}function Al(){Hl(69),Il(273),$l!=70&&Y(),Hl(70)}function Ol(){ic.startNonterminal("BlockExpr",Vl),Pl(281),Il(281),jl(),of(),Pl(287),ic.endNonterminal("BlockExpr",Vl)}function Ml(){Hl(281),Il(281),uf(),Hl(287)}function _l(){ic.startNonterminal("FunctionDecl",Vl),Pl(147),Il(246),jl(),$a(),Il(22),Pl(35),Il(98),$l==31&&(jl(),U()),Pl(38),Il(158),$l==80&&(jl(),Dl()),Il(122);switch($l){case 281:Pl(281),Il(281),jl(),of(),Pl(287);break;default:Pl(134)}ic.endNonterminal("FunctionDecl",Vl)}function Dl(){ic.startNonterminal("ReturnType",Vl),Pl(80),Il(254),jl(),Ls(),ic.endNonterminal("ReturnType",Vl)}function Pl(e){$l==e?(jl(),ic.terminal(i.TOKEN[$l],Jl,Kl>fc?fc:Kl),Xl=Jl,Vl=Kl,$l=Ql,$l!=0&&(Jl=Gl,Kl=Yl,Ql=0)):zl(Jl,Kl,0,$l,e)}function Hl(e){$l==e?(Xl=Jl,Vl=Kl,$l=Ql,$l!=0&&(Jl=Gl,Kl=Yl,Ql=0)):zl(Jl,Kl,0,$l,e)}function Bl(e){var t=Xl,n=Vl,r=$l,i=Jl,s=Kl;$l=e,Jl=lc,Kl=cc,Ql=0,Va(),Xl=t,Vl=n,$l=r,$l!=0&&(Jl=i,Kl=s)}function jl(){Vl!=Jl&&(Xl=Vl,Vl=Jl,ic.whitespace(Xl,Vl))}function Fl(e){var t;for(;;){t=hc(e);if(t!=22){if(t!=37)break;Bl(t)}}return t}function Il(e){$l==0&&($l=Fl(e),Jl=lc,Kl=cc)}function ql(e){Ql==0&&(Ql=Fl(e),Gl=lc,Yl=cc),Wl=Ql<<9|$l}function Rl(e){$l==0&&($l=hc(e),Jl=lc,Kl=cc)}function Ul(e){Ql==0&&(Ql=hc(e),Gl=lc,Yl=cc),Wl=Ql<<9|$l}function zl(e,t,r,i,s){throw t>ec&&(Zl=e,ec=t,tc=r,nc=i,rc=s),new n.ParseException(Zl,ec,tc,nc,rc)}function oc(e,t,n){sc[(t<<5)+e]=n}function uc(e,t){var n=sc[(t<<5)+e];return typeof n!="undefined"?n:0}function hc(e){var t=!1;lc=cc;var n=cc,r=i.INITIAL[e],s=0;for(var o=r&8191;o!=0;){var u,a=n<fc?ac.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<fc?ac.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<13)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>8191&&(r=o,o&=8191,cc=n)}r>>=13;if(r==0){cc=n-1;var f=cc<fc?ac.charCodeAt(cc):0;return f>=56320&&f<57344&&--cc,zl(lc,cc,s,-1,-1)}if(t)for(var d=r>>9;d>0;--d){--cc;var f=cc<fc?ac.charCodeAt(cc):0;f>=56320&&f<57344&&--cc}else cc-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return ac},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=ac.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+ac.substring(e.getBegin(),Math.min(ac.length,e.getBegin()+64))+"..."},this.parse_XQuery=function(){ic.startNonterminal("XQuery",Vl),Il(278),jl(),o(),Pl(25),ic.endNonterminal("XQuery",Vl)};var Wl,Xl,Vl,$l,Jl,Kl,Ql,Gl,Yl,Zl,ec,tc,nc,rc,ic,sc,ac,fc,lc,cc};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&8191;for(var i=0;i<289;i+=32){var s=i,o=(i>>5)*4317+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&15)+r.EXPECTED[a>>4]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[71,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,40,30,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,40,40],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,355,371,387,423,423,423,415,339,331,339,331,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,440,440,440,440,440,440,440,324,339,339,339,339,339,339,339,339,401,423,423,424,422,423,423,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,338,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,71,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,40,30,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,40,40,40,40,40,40,40,40,40,40,40,40,30,30,40,40,40,40,40,40,40,70,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,40,30,40,30,30,40],r.INITIAL=[1,24578,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290],r.TRANSITION=[37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,36864,36899,36883,36883,36883,36903,36883,36883,36883,36883,36883,36926,36919,36883,36883,36879,36883,36883,36942,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,39727,39739,37318,37318,72403,39755,36991,37318,37318,41289,37087,37318,37318,37010,39794,37318,37318,37318,37318,65657,40192,38525,37318,37318,39813,40192,39835,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39854,39870,37318,37318,37318,46325,37318,37318,36994,37318,61657,45847,57964,37318,37318,61650,62405,62409,50496,39889,37318,37318,41289,37087,37318,44009,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,45833,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39908,62747,37318,37318,37318,42026,65655,37318,73568,65651,65646,39935,62736,68791,45102,45088,45095,68779,39950,36991,37318,37318,41289,39994,37318,45426,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,39370,40016,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,40039,69458,41098,41041,37318,46044,44842,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,47580,37318,37318,37318,48276,40073,37318,37015,71422,71423,40094,57964,37318,37318,67783,40130,40134,40150,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,40186,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,71599,37318,37318,37318,37318,67919,40209,37318,37318,66772,40222,40225,40241,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,71606,73347,37318,37318,37318,37318,37318,40283,40324,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,40344,37116,37202,37162,40378,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,40416,40432,37318,37318,37318,48315,37318,37318,37526,37318,62612,40451,57964,37318,37318,62605,65082,65086,40487,40535,37318,37318,41289,37087,37318,37318,40554,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38131,40575,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,40598,40656,40697,40697,40697,40663,40736,40697,40698,40727,40642,40679,40626,40693,40745,40613,40752,40714,40768,36991,37318,37318,40817,40815,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,40804,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,43152,37318,37318,37318,48276,40833,37318,37318,73511,37318,67919,57964,40868,40872,43155,43156,43784,40888,36991,37318,37318,41289,40924,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,40942,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,43775,37318,37318,37318,48276,37318,37318,37318,37318,69945,73273,57964,40977,41007,44794,41023,73756,40991,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,41058,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,45645,38564,57964,41115,41135,37318,41119,41135,41149,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,37301,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,62620,37318,37318,37318,48276,62315,37318,37318,42112,62617,51150,68655,68669,68671,37318,37318,74e3,41165,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,41215,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,41238,41258,37318,41242,41258,41272,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,69205,37318,62433,37318,68839,45752,41288,37301,44633,37318,37318,37318,37318,73164,72644,41305,72644,72644,41324,38775,41542,41542,58552,65498,52179,65498,65498,52319,41461,41342,41461,41461,60376,37318,37318,37318,37318,37318,37318,57380,44576,38329,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,57802,45001,37318,37318,37318,37318,37318,62575,37318,37318,71516,41385,72644,72644,72644,72645,41405,67865,41542,58857,41542,41542,46917,69302,65498,55881,65498,65498,53308,58621,41461,41722,41461,41461,47863,54854,37318,37318,37318,37318,64802,37318,37318,72642,48855,72644,72644,72644,38767,41542,41439,41542,41542,41444,65497,64981,65498,65498,65498,59803,41461,41460,41461,41461,47863,54854,37318,37318,69109,41478,37318,60498,72644,72644,70521,58547,41542,41542,60742,46770,65498,65498,73471,59798,41461,41461,70944,47288,64766,37318,37318,37507,37318,71005,72644,60920,59569,41542,41542,72922,65498,65498,48896,41461,41461,46878,37318,60844,41498,41222,67506,72644,41518,41541,58729,41559,65498,46559,41593,41462,56939,50451,37318,66947,41614,41423,73664,58829,59801,41638,49498,41664,52412,41686,41702,41738,63218,38594,66255,64873,73961,46828,73161,59759,73663,59797,47605,39543,41802,41825,41848,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,45787,57964,41925,72170,37318,38278,38288,41945,36991,37318,37318,41289,37087,37318,37318,41981,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,69382,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,42002,37318,37318,37318,45026,37318,37318,37318,37318,37318,67919,57964,42022,71555,37318,43019,43028,71570,36991,37318,37318,41289,37087,37318,37318,37010,42042,37318,73045,37318,37318,65657,40192,38525,37318,37318,39335,40192,45833,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,42061,37318,37318,37318,48276,37318,37318,37318,37318,37318,50713,57964,37318,37318,37318,38993,38997,42078,42128,37318,37318,41289,37087,37318,37318,42147,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,42168,62003,69205,37318,37318,37318,68839,37318,37318,39275,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,41324,41542,41542,41542,58552,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,42190,37318,37318,37318,37318,37318,42212,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,67436,42249,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72187,38772,41542,41542,41542,41542,41542,72266,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,42270,41542,41542,41542,41542,49331,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,63809,37318,37318,37318,49242,42389,37318,37318,42312,41767,44524,59934,42356,42367,45136,42383,44513,42405,42445,37318,37318,40926,42420,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,44142,43528,42807,74542,43714,44329,37031,44584,37054,42466,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,42495,44053,42520,44234,42536,42631,42566,42582,42617,43323,74548,42732,42652,43181,43457,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,74695,44148,43301,42504,44146,43812,43314,42636,43906,44107,42807,42594,42699,42706,42722,43750,42901,42677,43141,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,42748,42962,43618,43603,43820,43354,42764,44271,43892,42788,42804,42826,43918,42855,43210,42882,42898,42920,44134,44337,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,42949,44040,42992,42978,43271,43008,43044,42839,43084,44099,43110,43126,43172,43197,43740,43442,43226,43242,38263,37318,38304,37318,38354,38370,45231,38397,38413,43259,44205,43287,43339,74705,42601,43379,43395,43411,42683,43427,43493,43509,57783,51848,38545,38580,73050,38677,38610,43544,43363,43588,43648,42772,43664,43059,43680,43709,43730,43766,38739,38791,38841,38876,38942,38892,43800,43836,43632,43878,43941,43957,42665,43973,43989,39013,39048,39078,44025,44069,44085,43094,44123,43693,44164,39249,55484,44195,43559,43068,43925,39327,39819,44240,42810,42904,39356,44221,43849,44282,42866,45051,43520,43862,42933,39494,44256,44298,44314,39590,43572,44353,42550,44369,44420,44431,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37091,37318,37318,37318,48276,39140,44447,37318,67184,67184,50155,62190,71955,71957,37318,37089,71946,44465,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,44502,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38381,36956,50180,37398,37414,37436,50351,44540,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,44565,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,44600,38038,38061,37792,39434,44649,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,44665,37459,38432,38451,37229,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,37318,73156,44700,44701,37318,74225,74229,44717,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,46650,37318,37318,65657,40192,38525,37318,37318,39335,40192,44756,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,44775,67647,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,44810,44811,37318,37318,74488,44827,44876,37318,37318,41289,37087,37318,37318,37010,37318,37318,44898,37318,37318,65657,40192,38525,37318,37318,39335,40192,44921,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,44940,44949,37318,37318,37318,45580,37318,37318,37318,37318,37318,67919,57964,44969,44970,37318,37318,68795,44986,45022,37318,37318,41289,37087,37318,37318,37010,37318,37318,72142,37318,37318,65657,40192,38525,37318,37318,39335,40192,38201,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,45042,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45074,37318,37318,37318,37318,48276,59955,37318,37318,37318,59954,73317,57964,37318,45118,37318,37318,45127,45152,36991,37318,37318,41289,37087,37318,37318,37010,45201,37318,37318,37318,37318,65657,40192,38525,37318,37318,45220,40192,45247,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,46105,37318,45266,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,47785,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,45425,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,68819,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,45442,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,50781,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,53518,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,61913,41542,41542,41542,41542,48876,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,65804,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,48653,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,60153,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,45477,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45496,45525,45509,45539,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,64785,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45555,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,38529,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,45576,74434,37318,74579,74583,74448,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,68588,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,45596,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,37318,37318,45625,45661,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,45833,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,45715,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,45680,45684,37318,37318,45700,45732,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,45768,39048,39078,39105,39169,39156,39172,39188,39089,39218,45803,55484,39265,39291,55476,39311,45819,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,37318,37318,45266,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,45863,37318,37318,44953,53155,45882,37318,52352,45886,39423,67164,45902,45916,45932,45961,45945,45975,45991,37318,45455,41670,46020,50786,46004,46033,45185,46061,46096,44613,41965,46121,46173,46189,46205,46221,46237,46288,65632,46304,37318,37318,68839,40298,50758,37318,41033,53889,69149,37318,46321,73164,72644,72644,72644,46341,45386,41542,41542,59697,52709,65498,65498,65498,64013,57854,41461,41461,41461,53427,64567,41960,63943,65692,37318,55390,46361,44399,46380,37318,58658,46936,46397,46417,72644,72644,59240,58293,46453,46492,41542,41542,52156,55833,61582,46520,65498,65498,64241,46547,52866,68024,41461,41461,68015,46594,47566,46621,37318,37318,46672,37318,46264,44403,37318,40057,46707,46725,63333,41308,72644,46741,63340,42275,46760,41542,46793,66052,61720,45363,46811,65498,49417,68460,65498,46845,46864,41461,51002,52264,41461,46904,52111,46933,46952,37318,46684,52530,67711,37318,59166,64847,72644,54549,51902,61913,46986,41542,41542,73854,71759,72272,41570,65498,54158,68314,46848,58449,41461,41461,47016,47035,51372,47057,47076,37318,47124,37318,47140,47156,71524,72644,42291,47208,67563,41542,59595,47244,47267,65498,59798,47304,47328,41461,53433,37318,47344,37318,61381,37318,72644,47362,47380,41542,47407,47424,65498,47447,64139,63673,47467,64041,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,41347,39062,47486,47520,47551,47602,47622,61702,70577,48688,47605,47638,50030,47449,46829,57656,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,47659,37318,37318,44953,37318,37318,37318,37318,37318,67919,47681,47697,47709,47725,47754,47738,47770,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,67827,50028,47806,47251,47282,47858,50482,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,64567,41960,37318,37318,37318,37318,73633,44399,56082,37318,56083,37318,73164,72644,72644,72644,72644,47879,41363,41542,41542,41542,41542,47922,65493,65498,65498,65498,65498,47955,46825,41461,41461,41461,67629,66428,63696,45404,37318,37318,37318,37318,37318,44403,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,51497,37318,58926,37318,37318,64306,57609,37318,65431,72644,72644,72644,56125,63073,47979,41542,41542,41542,70807,58352,65498,65498,65498,65498,47999,41461,41461,41461,41461,48015,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,65375,48037,48062,48088,48113,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,49548,37318,37318,44953,37318,41780,37318,41482,37318,54642,48139,48155,48170,48186,48215,48199,48231,65689,37318,37318,48273,48292,37318,48311,37318,51503,37318,37318,37318,48331,46709,48623,50028,58342,50938,47282,52495,55465,37318,48349,37318,68839,48369,47665,37318,51866,48388,48408,48427,73007,67026,70205,72644,72644,72644,48444,48468,41542,41542,52709,48501,48532,65498,65498,51441,56912,41461,41461,41461,64567,71585,37318,37318,65402,37318,56580,44399,46364,37873,48553,37318,73164,48570,72644,48622,56986,72644,41363,48639,50032,41542,55261,41542,65493,48669,57135,65498,73731,65498,46825,48704,41598,41461,48739,41461,63696,45404,37318,37318,39025,37318,62106,44403,37318,37318,37318,72643,72644,72644,60958,57260,72645,38772,41542,41542,54046,68350,48760,45363,65498,65498,65498,48780,52828,59800,41461,41461,41461,48796,66903,47863,51534,37318,37318,37318,64199,37318,64441,37318,72642,72644,72644,64854,72644,61913,41542,41542,41542,48812,48876,65497,65498,65498,71839,65498,59803,41461,41461,47470,41461,47863,47501,37318,65142,37318,37318,38723,48831,72644,48851,72644,42291,41542,48871,41542,59595,65498,70398,65498,59798,41461,61249,41461,42174,72114,37318,37318,53513,66795,54283,70249,60920,63484,67969,41542,58586,58373,65498,49897,57220,41461,56936,37318,37318,67331,73163,72644,72800,50031,41542,52475,65498,65498,48892,41461,58211,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,47019,45307,48912,48959,48989,49019,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,70340,49053,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,49089,37318,44953,37318,48599,37585,39665,37318,67919,49107,49123,49137,49153,49182,49166,49196,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,48353,37318,48351,60095,51266,41622,41369,62908,47535,62003,72217,37318,62994,49212,68839,37318,49238,37318,49258,37318,51050,39778,49276,57933,60709,68980,49292,71214,49326,70571,70834,49347,57459,49369,49386,49404,49439,49457,61552,61800,49485,58425,64567,41960,37318,37318,68084,37318,56022,44399,37318,37318,37318,70710,73164,72644,72644,72644,72644,49520,41363,41542,41542,41542,52429,41542,65493,65498,65498,65498,59621,65498,46825,41461,41461,41461,65942,41461,71902,49537,37318,37318,48372,63307,37318,44403,37318,37318,38213,70690,72446,72644,72644,72644,64634,56631,49564,49582,41542,41542,56653,45363,49600,48682,65498,65498,64927,49622,49640,70938,41461,41461,62085,49662,51497,37318,37318,37318,37318,37318,49684,37318,68617,72644,72644,69970,72644,65479,41542,41542,41326,41542,48876,49710,65498,65498,47842,65498,59286,41461,41461,58267,41461,47863,47501,37918,62752,37318,37318,49733,60498,55203,65029,49752,42291,67741,65203,74026,59595,66024,65498,49773,59798,49646,41461,49825,47288,37318,51997,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,49852,37318,73163,72644,60539,50031,41542,72428,65498,65498,49872,41461,70461,56939,61615,37318,72643,60923,41542,57845,65498,49892,41461,49913,72946,72644,50030,54383,59799,54339,40392,49935,49960,49980,50002,57326,50022,50048,50069,50089,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,50115,37318,44953,44449,50137,37318,37060,50171,54108,64429,50196,50210,50226,50255,50239,50269,65689,44626,50285,50301,50316,50332,50367,39233,53108,50384,61398,55344,50419,50467,50512,50528,50544,50594,50610,50651,50667,73014,50694,49260,50729,62653,50756,50774,72085,37318,37318,49073,37318,73164,50802,70730,47643,67373,50837,50866,47931,48477,50890,64147,50934,50954,50974,61240,51024,54206,54678,60300,51066,42093,59527,51082,54503,44179,51132,51166,69514,50121,44486,44480,51182,51198,51247,51290,51306,51322,51357,51407,51457,51482,51519,51581,60231,51607,51635,51659,51675,51432,54188,73942,51691,51713,51750,51800,41753,51824,51840,37318,45167,74354,51864,51882,51918,51962,51982,72643,52018,52052,68101,52072,70228,38772,52096,72897,41542,52136,57279,52172,66566,52195,65498,64541,65498,52222,56902,52245,41461,67612,41461,52280,51497,37891,64079,46636,37318,52344,55168,73701,70986,47906,72644,52368,52401,61913,52428,52445,53191,52464,52511,46777,66351,65498,52546,52580,55946,51008,41461,52615,49469,47863,47501,37318,39657,52645,37318,58484,60498,52664,60195,52685,42291,67536,73887,52704,59595,49809,69760,70602,59798,46578,54457,71795,47288,37318,68581,52725,60872,52759,71031,52775,65989,69245,52802,72675,52206,52852,55908,48097,54237,46605,52882,52918,52936,39919,39478,52952,52973,52992,65449,53038,56792,66087,71786,53088,56765,56939,40362,53104,72643,69978,41542,52310,65498,53124,53817,55637,53146,55211,53171,53289,59799,53207,55668,73239,68122,73294,50578,53242,53264,53284,53305,53324,42326,53340,53356,53372,60496,73658,47451,66435,53400,53449,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,51938,37318,44953,62203,56053,37318,51929,37318,53498,53534,53550,53564,53580,53609,53593,53623,65689,37318,68909,41289,37087,37318,37318,37318,37318,61388,37318,61393,61388,52002,53639,47391,58863,63536,59869,62003,50482,37318,53663,37318,68839,53663,37318,37318,37318,69142,53682,45250,37318,55674,71208,72644,72644,72644,53704,53738,41542,41542,52709,48072,65498,65498,65498,57854,53755,41461,41461,41461,64567,41960,37318,37318,37318,37318,37318,44399,37318,37318,37318,53779,73164,72644,72644,72644,63735,72644,41363,41542,41542,41542,60760,41542,65493,65498,65498,65498,61277,65498,46825,41461,41461,41461,48744,41461,63696,45404,37318,37318,37318,37318,37318,44403,37318,45747,37318,72643,72644,72644,50815,72644,72645,38772,41542,41542,71247,41542,41542,45363,65498,65498,48537,65498,65498,59800,41461,41461,67762,41461,41461,47863,51497,37318,37318,37318,37318,37318,67308,37318,72642,72644,72644,56359,72644,61913,41542,41542,41542,70112,48876,65497,65498,65498,66735,65498,59803,41461,41461,41461,53797,47863,47501,37318,37318,37318,37318,37318,60498,72644,72644,72644,42291,41542,41542,41542,59595,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,54260,37318,37318,37318,73163,67467,72644,48046,41542,73662,48935,65498,59802,53815,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,41851,61054,66378,62339,68189,53833,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,39797,37318,37318,37318,67919,53869,53905,53909,53925,53954,53938,53968,65689,37318,37318,41289,37087,37318,45716,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,46136,46156,37318,37318,68839,37318,37318,37318,37318,40903,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,36975,37318,64085,73164,72644,72644,72644,72644,72644,53984,41542,41542,41542,41542,41542,62136,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,54006,37318,54026,36968,37318,37318,53666,72643,72644,65774,72644,72644,72645,38772,41542,41542,54043,41542,41542,45363,65498,65498,53015,65498,65498,59800,41461,41461,66593,41461,41461,71140,54854,37318,37318,54062,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,54082,64821,37318,60498,72644,72644,62830,58547,41542,41542,58315,46770,65498,65498,71297,59798,41461,41461,54740,47288,59033,54099,69440,44860,37318,54124,64478,44740,41542,54141,70297,54157,61206,54174,54204,58614,54222,56936,53884,37318,41072,40582,71978,54276,54299,54319,56380,73391,73919,41714,55599,54335,56939,50403,59838,42233,54355,53715,54379,54399,59801,54439,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,57408,54473,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,59399,37318,37318,60166,37087,37318,37318,37318,54501,37318,54501,42045,54519,39472,54546,54565,67872,65498,54590,62375,54624,37318,37318,47504,68839,67717,44759,37318,37318,54658,37318,37318,37318,73164,72644,72644,58045,72644,45386,41542,41542,67542,52709,65498,65498,65498,56180,57854,41461,41461,41461,54676,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,68532,57795,73164,72644,72644,72644,72644,72644,54694,41542,41542,41542,41542,41542,54716,65498,65498,65498,65498,65498,54737,41461,41461,41461,41461,41461,54756,71731,37318,37318,37318,37318,37318,37318,37318,37318,74625,57661,72644,72644,72644,72644,72645,38772,54791,41542,41542,41542,41542,45363,54808,65498,65498,65498,65498,59800,54829,41461,41461,41461,41461,47863,54854,37318,37318,66657,37318,37318,37318,37318,72642,72644,72644,72644,58513,38767,41542,41542,41542,63753,41444,65497,65498,65498,65498,70365,59803,41461,41461,41461,60263,47863,54854,37318,37318,49068,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,54946,37318,40844,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,54850,61615,65734,72643,61015,41542,72843,65498,54871,41461,54893,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,51946,37318,44953,37318,54915,54931,37318,54967,54974,54990,55006,55021,55037,55066,55050,55080,65689,37318,37318,51966,38825,37318,37318,37318,54010,55096,55115,48257,55149,55184,55227,55249,41525,55284,55303,63265,55333,37318,37318,37318,40256,37318,55133,55360,37318,37318,37318,55377,52524,73164,55412,59232,72644,55450,55508,48452,55571,48764,46504,61212,71358,65498,52836,55590,72384,66401,41461,55624,55653,37318,55162,48123,45480,68146,44384,37318,37318,55690,55710,55730,55750,50821,72644,73775,55770,55805,41363,53990,41542,54303,55821,55849,65493,53022,65498,61780,55897,55924,46825,56459,41461,71394,55962,55996,47041,37318,37318,37318,54660,56044,56069,49736,37318,37318,37318,56099,56122,72644,56141,70528,58519,56160,58143,41542,63117,55574,66717,50850,52564,65498,63146,65498,56203,56221,51808,41461,56467,41461,56251,56269,54854,55099,56307,46073,56323,59679,56339,62046,56355,52688,61008,58074,70003,51212,41542,66283,70084,56375,56396,56430,65125,61593,46531,69280,62369,41461,56449,56483,56517,56546,63230,66178,37927,69494,47228,56575,66873,56144,56596,56612,70031,45388,56647,56669,56693,56729,56747,56781,56815,56873,56892,51765,56928,56955,37318,37318,61883,53848,56976,57010,57028,57047,57072,57089,57107,57133,57151,57170,57197,57216,56936,60597,37318,40353,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,57236,61615,37318,57252,51333,57276,57295,62141,50073,54877,49498,57311,72644,50030,54383,59799,54339,39384,52786,55523,72337,68506,73161,59759,73663,59797,47605,60497,50030,47449,46829,57331,57347,55938,57396,53268,62159,62339,66862,41867,57424,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,42152,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,57475,57504,57488,57518,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,66211,72644,45386,41542,41542,57534,52709,65498,65498,49388,65498,57854,41461,41461,51784,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,41502,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,52736,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,47060,37318,37318,37318,37318,37318,37318,37318,37318,37318,57438,72644,72644,72644,72644,72645,61918,41542,41542,41542,41542,41542,45363,57553,65498,65498,65498,65498,59800,57571,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,39711,37318,44953,37318,42450,57589,57607,57625,51565,57641,57677,57681,57697,57726,57710,57740,65689,51556,37318,41289,37087,47346,60068,37318,37318,39892,37318,40511,57756,45560,57818,57834,63977,57879,60331,41648,58e3,57914,37318,37318,38814,37318,37318,57949,44882,37318,57925,37318,67807,49037,57985,58044,51257,58061,58115,58131,41542,58165,54574,59660,56705,57154,47834,58193,52256,58227,57863,58246,50918,53781,37318,37318,37318,37318,49029,67667,37318,37318,37318,37318,73164,60986,49757,72644,58283,72644,58309,58331,63863,47408,61105,41542,58368,58389,67585,57555,49801,65498,58422,58441,68033,65185,60256,69351,47041,37318,61839,58465,37318,37318,45281,53688,37318,37318,37318,72643,72644,72644,63835,58500,58535,38772,41542,41542,55268,69704,69729,45363,65498,65498,61489,63774,58568,59800,41461,41461,66754,51734,58602,47863,54854,58637,37318,37318,68901,37318,37318,37318,72642,66219,72644,72644,72644,38767,67986,41542,41542,41542,41444,65497,56713,65498,65498,65498,59803,71875,41461,41461,41461,47863,54899,37318,58657,37318,51097,69488,55754,58674,72644,72644,58694,58724,41542,41542,58745,58769,65498,65498,61143,58793,41461,41461,71804,37318,68935,37318,73352,37318,72644,49303,60920,41542,72302,41542,65498,52557,65498,63673,46570,41461,56936,37318,38852,37318,73163,72644,56106,50031,41542,58818,65498,73828,59802,41461,48715,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,53248,58845,64251,68569,67094,58879,59108,47606,53268,62159,58907,58895,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37319,37318,44953,37318,37318,58923,37318,37038,61423,60807,58942,58956,58972,59001,58985,59015,65689,38336,37318,41289,37087,37318,59031,37318,37318,40327,37318,38338,59049,40328,59079,54363,41369,59103,48516,62003,72217,37318,37318,59124,68839,37318,63001,62951,44924,37318,37318,37318,59142,59160,59182,72644,59203,59223,59256,41542,57091,48815,59272,59718,65498,52599,56799,57854,54450,41461,63259,59312,52629,59347,40308,54027,37318,37318,37318,37318,56028,37318,37318,37318,73164,56849,59370,68264,72644,72644,41363,63477,59429,70290,41542,41542,65493,64678,69828,70882,65498,65498,46825,59459,66600,59489,41461,41461,47041,37318,60820,72604,37318,37318,56414,63654,59509,37318,37318,72643,61043,72644,72644,59543,72645,59566,72479,41542,41542,59585,41542,65528,73531,59619,65498,70373,65498,59800,54834,59637,41461,64050,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,44851,37318,37318,37318,37318,59207,72644,60920,61740,41542,41542,73606,65498,65498,49876,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,61445,73662,65498,59655,59802,56876,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,59676,72644,59695,59713,71108,58802,59734,59756,59775,59794,59819,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,59854,73737,67066,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,67305,48392,37318,54855,59885,59896,59919,66152,67290,59971,59985,60001,60031,60044,60015,65689,47586,44905,38860,60060,60084,37318,60579,48333,40435,72237,60111,60138,60122,60182,60217,60279,60316,65566,60366,50482,58641,37318,37318,48606,72949,68216,73429,60392,69215,60419,37318,60465,60494,60514,60535,72871,72644,60555,49584,41542,47939,52709,70645,70888,65498,70640,57854,54601,60344,63674,41461,59473,64205,46157,37318,60571,37318,37318,37318,60595,37318,37318,45177,73164,60613,72644,53647,72644,72644,41363,60640,41542,61097,41542,41542,58708,70406,65498,55874,65498,65498,50904,58204,41461,60666,41461,41461,47041,37318,37318,37318,37318,40106,37318,37318,44677,60687,37318,60703,72644,72644,46744,72644,58087,60725,41542,41542,41542,60758,74033,52815,65498,65498,65498,52593,61759,41832,41461,41461,41461,53066,69906,47863,49504,60776,60792,64608,60842,51384,60860,60895,60918,60939,60974,61031,61070,38767,70056,61088,61121,61167,41444,65497,61193,61228,55536,61274,59803,61293,61309,61258,72531,61332,54854,48246,61348,61369,61414,58477,51897,68272,58678,65107,61439,53722,46795,49566,61461,54813,65498,61486,61505,72623,61531,61548,61568,67348,61609,37318,37318,61636,61678,47889,61697,61718,52147,61736,61756,56291,61775,61796,55608,61816,46251,61838,37318,61855,73163,61899,68974,61934,52295,73662,61950,58777,71058,61966,62e3,62019,63023,62043,40852,60923,72471,73664,62062,59801,62083,49498,62101,55233,62122,54383,62157,62175,62225,62247,62263,62279,62295,62331,57449,55864,54413,66647,60497,50030,47449,46829,60496,73658,47451,47606,62355,62391,62339,66862,41867,41898,57361,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,62425,44953,37318,41929,62645,37318,37318,67919,62449,62465,62479,62495,62524,62508,62538,62554,62570,62591,51116,40267,62636,62669,37763,62688,62721,40114,62768,62784,62800,62846,62862,62878,62894,62929,62967,62983,37318,74513,46381,42254,37318,40466,50397,50445,63017,37318,37318,63039,73164,72644,63059,63089,55789,45386,47983,63105,51466,69257,65498,47963,66977,63139,63162,41461,63187,63203,63246,60376,37318,65243,37318,54083,37318,65923,63281,37318,49694,37318,63306,63323,63356,63373,63389,72644,67473,63412,41542,63428,63500,41542,54700,59443,65498,63522,63557,65498,56187,53414,41461,63578,63594,41461,68051,48021,46148,37318,59832,55125,37318,37318,37318,37318,37318,63803,72643,72644,70758,59187,72644,72645,38772,41542,55434,57073,41542,41542,45363,65498,74070,65498,63613,65498,59800,41461,60671,41461,63633,41461,47863,54854,37318,37318,63653,44684,37318,37318,37318,72642,72644,72644,72644,57012,55426,41542,41542,41542,41542,66835,62140,65498,65498,65498,65498,63670,41461,41461,41461,41461,63690,54854,67948,37318,37318,37318,37318,63712,72644,63734,72644,46430,41542,63751,41542,56170,65498,63769,65498,41577,41461,51728,41461,47288,63790,37318,37318,37318,37318,62822,66520,60920,41416,71239,41542,47825,58753,65498,61151,71116,41461,72584,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,45334,61615,37318,63825,73373,63858,64501,63879,65885,41461,56530,63897,63917,63966,63993,64029,64066,39534,64101,64126,64163,64186,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,50006,53268,62159,64221,66862,41867,64277,64293,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,66665,44953,37318,37318,68891,37318,64328,64337,67698,39838,64353,64369,64398,64382,64414,65689,37318,69115,41289,37087,37318,37318,63950,37318,51547,37318,37318,37318,44404,64465,64494,64517,49717,67057,64557,72217,37318,64583,37318,68839,37318,40908,40502,64605,50368,64607,37318,37318,62231,64624,67101,73183,63396,64650,67404,68345,48485,71344,64666,64694,64712,71834,64730,57181,60350,61532,53072,55317,64759,37318,64782,64801,45664,45866,38224,37318,37318,37318,37318,73164,72644,72644,52669,72644,72644,41363,41542,41542,67409,41542,41542,65493,65498,65498,55555,65498,65498,46825,41461,41461,68042,41461,41461,49668,53220,61353,37318,37318,37318,64818,59354,57374,68538,37318,72643,72644,64837,72644,72644,72645,64870,41542,64889,41542,41542,41542,68453,65498,51231,64925,65498,65498,59800,41461,61515,64943,41461,41461,47863,54854,59903,37318,37318,37318,37909,37318,37318,72642,72644,72644,64960,72644,56626,41542,41542,73894,41542,42296,65497,65498,65498,64978,65498,59803,41461,41461,71869,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,52897,37318,59144,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,62943,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,56828,64997,65024,65045,64231,59603,54339,38753,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,46305,37318,37318,37318,42426,42429,65068,54066,65102,51341,41369,65123,50559,62003,48585,65141,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,43472,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,65158,41542,41542,41542,41542,41542,66019,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,52976,72644,72644,38767,41542,41542,73801,41542,41444,65497,65498,49370,65498,65498,59803,41461,41461,65182,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,51274,72644,50031,65201,73662,71079,65498,59802,58261,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37806,44953,65219,37318,37420,65239,37318,67919,65259,65275,65288,65304,65333,65317,65347,65689,45409,47790,41289,50740,71165,72077,54775,46691,68943,37318,65363,65398,65418,65465,65515,65551,65582,68491,65617,65675,37318,37318,37318,55396,65708,50432,65732,40783,60879,37318,37318,46888,65750,54125,65773,60201,65790,65831,49353,41542,61177,57056,65855,49783,65498,65874,65901,41461,65939,58230,64743,49003,37318,37318,37318,54951,44007,65958,37318,73691,37318,44004,69414,59740,72644,52378,72644,64962,65976,66005,41542,53183,41542,52448,66040,66074,65498,73466,65498,70854,66103,60245,41461,66119,41461,72537,66911,47041,37318,37318,38803,72980,60478,40954,37318,37480,66138,66168,66202,72644,66235,46345,66251,72645,66271,41542,58177,66299,66320,41542,56559,65498,65535,66344,66367,65498,69808,41461,53763,66394,66417,41461,47863,49919,37318,37318,52902,66451,37318,66495,39978,72642,66512,60519,72644,72644,38767,65839,41542,66536,41542,41444,65497,66557,54721,65498,65498,59803,66582,73488,41461,41461,52328,47223,43477,62672,37318,37318,37318,65382,72644,72644,61681,58099,41542,41542,41542,66616,65498,65498,65498,66632,66681,41461,41461,54252,37318,70963,37318,37318,37318,66698,72644,60920,66716,41542,67896,66733,65498,69783,66751,41461,54608,56936,37318,66770,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,56009,66788,66811,66827,66851,66889,49836,61620,60922,73660,47450,46828,42223,66927,59778,49606,47605,66943,50030,47449,46829,60496,73658,47451,52229,66963,67001,67042,47192,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,42006,44953,41194,40023,67082,63290,67117,67133,67149,67200,67214,67230,67259,67243,67275,67324,37318,67347,72149,37087,37318,39873,37318,37318,73640,55694,39647,45609,60403,67364,67389,66058,64007,71278,67425,72217,39770,40165,39032,68839,68408,37318,37318,37318,37318,39965,41180,37318,67452,67489,70764,72644,72644,67522,67558,63467,41542,52709,51619,65498,67579,65498,57854,67601,63637,67628,41461,60376,37318,67645,37318,67663,67683,37318,56960,37318,65223,37318,37318,73164,52080,69630,72644,72644,72644,67733,60734,73861,41542,41542,53739,65493,58399,51643,65498,65498,63881,46825,67757,59323,41461,41461,66122,50625,37318,37318,67778,47108,48295,37318,38228,67799,44787,57969,67823,72644,72644,69591,55783,67843,67888,41542,41542,63123,65166,73809,53005,65498,65498,64714,62913,63541,72852,41461,41461,59639,69865,70909,48723,67912,59519,37318,37900,37318,51391,37318,67935,72642,72644,52056,59087,72644,38767,41542,41542,67964,67985,41444,65497,65498,65858,58406,65498,59803,41461,41461,68002,41461,47863,54854,37318,68397,37318,68076,37318,60498,68624,72644,68100,65444,66541,41542,68117,51222,72818,65498,55549,59798,53799,41461,51777,47288,37318,37318,40078,37318,68138,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,65915,37954,37318,68162,56840,72644,69566,50031,41542,68178,65498,72029,59802,41461,61324,68205,61615,68239,68255,57031,68288,49964,68312,64170,41461,72350,72946,63842,68330,50053,68366,68384,61620,60922,73660,47450,46828,40170,49310,63506,57898,47605,68424,68440,45370,63171,40400,68476,68554,68604,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,38247,68640,37318,37318,44545,44549,42062,66479,66466,68687,68703,68719,68748,68732,68764,68811,49856,37318,68835,73418,40538,54530,37318,68855,37963,68877,39120,68925,68959,68996,69012,46476,69028,71470,69063,59385,62027,45461,65008,68839,69079,37318,38220,69096,65716,69131,41882,69165,69175,69191,63718,59550,63357,69231,50874,46465,70280,70118,64531,65596,69273,69296,57117,69318,73551,69334,69350,69367,69406,69430,37318,69456,69475,69510,37318,37318,68519,50099,69530,44732,69549,69582,60998,72644,69624,41363,69646,69670,69695,41542,69720,65493,69753,69776,69799,65498,69824,48973,69844,69860,69881,41461,69903,51039,37318,69922,62705,62209,69940,52743,51107,45640,57591,40471,72643,69961,69994,72644,48835,70019,70047,70072,69679,41542,41542,70100,64902,48943,63562,65498,65498,70134,59800,68060,61822,41461,41461,70150,47863,72356,45780,37318,73436,47091,37318,37318,70166,72704,72644,70194,70221,70244,47170,73209,73218,70265,66328,41444,70313,65498,70329,70356,70389,60293,70422,70441,54423,70477,47863,50635,37318,50706,66496,53384,69533,46401,70511,72644,72644,70544,70560,70789,41542,70593,70626,69047,65498,52486,70661,69887,41461,70487,37318,41199,59126,70706,37318,70726,70746,56994,70780,70823,72308,70850,70870,65601,70904,70925,51697,70495,37450,37318,70960,70979,71002,71021,63456,46437,71047,71074,71095,49624,59493,71132,71156,71181,41086,71197,69608,71230,71263,71294,71313,57200,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,65052,64909,59331,55194,71329,71374,71410,71439,71455,66985,70676,53268,62159,62339,66862,71486,71502,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,71540,37318,37318,62697,37318,37318,67919,71622,71638,71652,71668,71697,71681,71711,65689,37318,37318,41289,71727,43243,37318,54635,37318,47100,37318,37318,37318,44404,60624,71747,71775,71820,71855,71891,71918,50345,37318,37318,68839,37318,37318,64312,71934,37318,37318,37318,63901,73164,71973,72644,72644,67498,71994,41542,41542,41542,72010,61470,65498,65498,49441,57854,72045,41461,41461,72052,56235,72068,37318,72101,73266,37318,37318,37318,72130,72165,37318,45286,73164,72644,72186,72203,52036,66700,41363,41543,41542,72253,47431,72288,65493,56731,65499,62067,70610,72324,46825,73981,63597,47312,56493,72372,47041,37318,38557,37318,72400,37318,37318,37318,52648,37318,37318,72643,69558,72644,72644,72644,72645,72419,58149,41542,41542,41542,41542,61134,64696,65498,65498,65498,65498,59800,57573,41461,41461,41461,41461,47863,56406,37318,67179,37318,37318,37318,37318,60902,62813,72644,72644,72644,72644,42340,41542,41542,41542,41542,41444,47816,65498,65498,65498,65498,64261,41461,41461,41461,41461,47863,54766,37318,37318,46970,37318,37318,39394,72444,72644,72644,67855,72462,41542,57537,51591,72495,65498,65498,72517,72553,41461,41461,72576,37318,72600,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,65757,60923,69654,73664,69041,59801,72620,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,72639,72661,49423,56501,60496,73658,47451,47606,53268,68368,54485,72691,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,42479,51143,66186,50148,37318,40519,67015,72720,37318,37318,72736,72765,72749,72779,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72795,49944,41369,72816,50989,62003,72217,37318,49091,63043,68839,37318,37318,37318,37318,37318,52920,37318,37318,73164,47899,72644,73587,72644,45386,72834,41542,56677,52709,56433,65498,65498,72024,57854,55980,41461,64944,41461,60376,37318,37318,37318,37318,37318,55361,37318,37318,37318,53853,37318,73164,72644,72644,72868,72644,72644,41363,41542,41542,72887,41542,41542,65493,65498,65498,72920,65498,65498,46825,41461,56253,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,40788,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,69080,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,72938,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,50678,37318,37318,72976,37318,72965,72996,73030,73066,73080,73096,73125,73109,73141,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,49521,50028,47181,50958,47282,59296,63932,37318,37318,37318,68839,37318,37318,37318,37318,45204,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,48411,37318,37318,37318,37318,73180,72644,72644,72644,72644,72645,73199,41542,41542,41542,41542,41542,56282,65498,65498,65498,65498,65498,56756,41461,41461,41461,41461,41461,47863,54854,37318,68223,37318,37318,37318,37318,37318,72642,72644,73234,72644,56857,38767,41542,66304,41542,41542,73255,65497,65498,73289,65498,72501,59803,41461,61976,41461,70425,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45555,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,73310,37318,39135,37318,37318,37318,46656,37318,73333,55714,73368,64110,41369,73389,53053,62003,72217,37318,37318,37318,73407,48428,48554,40049,37318,37318,37318,37318,37318,73164,72644,61072,72644,52030,45386,41542,41809,41542,73452,65498,65498,58580,63617,57854,41461,41461,73487,55972,60376,73504,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,62308,37318,37318,37318,72643,72644,52957,72644,72644,74050,38772,41542,54792,41542,41542,41542,48926,65498,65498,73527,65498,65498,59800,41461,41461,73547,41461,41461,47863,54854,73567,37318,37318,37318,37318,37318,37318,72642,73584,72644,72644,72644,38767,72904,41542,41542,41542,41444,65497,73603,65498,65498,65498,59803,70455,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,57964,37318,37318,45323,45350,63443,47e3,73622,37318,37318,41289,37087,37318,42196,37318,37318,37318,37318,37318,37318,4e4,72644,73656,60650,55287,47282,61984,73680,37318,42131,37318,68839,37318,37318,37318,37318,37318,37318,37318,41786,73164,72644,72644,72644,69600,45386,41542,41542,41542,73717,65498,65498,65498,56205,57854,41461,41461,41461,72560,60376,37318,59949,37318,37318,37318,37318,37318,37318,37318,73753,37318,73164,52385,72644,72644,73772,72644,41363,69737,41542,41542,73791,41542,65493,49792,65498,65498,73825,65498,46825,50572,41461,66682,41461,41461,47041,37318,46080,37318,37318,37318,37318,37318,37318,37318,37318,72643,41389,72644,72644,72644,72645,73844,41542,73877,41542,41542,41542,51420,65498,73910,65498,65498,65498,49986,41461,73935,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,61662,37318,72642,72644,47364,72644,72644,38767,41542,41542,70798,41542,41444,65497,65498,65498,73958,65498,59803,41461,41461,73977,41461,47863,54854,37318,37318,42105,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,73997,37318,37318,40961,37318,60952,72644,60920,74016,41542,41542,57892,65498,65498,71387,41461,41461,56936,37318,60826,37318,73163,72644,74049,50031,68296,73662,65498,74066,59802,53130,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,45302,37318,37318,37318,37318,44953,37318,37318,37318,37318,37318,67919,61870,37318,37318,45323,45350,63443,47e3,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,72217,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,45386,41542,41542,41542,52709,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,64589,74088,74086,40559,74115,74104,74140,74169,37318,74124,74153,74190,74194,74210,36991,37318,37318,41289,37087,37318,37318,74245,37318,37318,37318,37318,37318,65657,40192,74266,55734,37318,53472,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,72228,37116,37202,37162,74643,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,53226,37318,37318,67919,57964,74289,74334,37318,37318,74319,74303,36991,37318,37318,41289,37087,37318,37318,37010,37318,37318,37318,74350,37318,53463,40192,38525,37318,37318,74370,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,37182,37116,37202,37162,37222,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,74174,37318,37318,37318,37318,37318,52120,37296,74401,74403,37318,37318,74392,74419,36991,37318,37318,41289,37087,37318,37318,74464,37318,37318,74485,37318,37318,59413,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,37076,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,74504,37116,37202,37162,74529,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,39013,39048,39078,39105,39169,39156,39172,39188,39089,39218,39249,55484,39265,39291,55476,39311,39327,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,39708,37318,37318,37318,37318,48276,37318,37318,37318,37318,37318,67919,57964,37318,37318,37318,37318,37318,74564,65689,37318,37318,41289,37087,37318,37318,37318,37318,37318,37318,37318,37318,44404,72644,50028,41369,65498,47282,62003,69205,37318,37318,37318,68839,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,41324,41542,41542,41542,58552,65498,65498,65498,65498,57854,41461,41461,41461,41461,60376,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,73164,72644,72644,72644,72644,72644,41363,41542,41542,41542,41542,41542,65493,65498,65498,65498,65498,65498,46825,41461,41461,41461,41461,41461,47041,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,72643,72644,72644,72644,72644,72645,38772,41542,41542,41542,41542,41542,45363,65498,65498,65498,65498,65498,59800,41461,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,37318,37318,72642,72644,72644,72644,72644,38767,41542,41542,41542,41542,41444,65497,65498,65498,65498,65498,59803,41461,41461,41461,41461,47863,54854,37318,37318,37318,37318,37318,60498,72644,72644,72644,58547,41542,41542,41542,46770,65498,65498,65498,59798,41461,41461,41461,47288,37318,37318,37318,37318,37318,72644,72644,60920,41542,41542,41542,65498,65498,65498,63673,41461,41461,56936,37318,37318,37318,73163,72644,72644,50031,41542,73662,65498,65498,59802,41461,41462,56939,61615,37318,72643,60923,41542,73664,65498,59801,41461,49498,72946,72644,50030,54383,59799,54339,61620,60922,73660,47450,46828,73161,59759,73663,59797,47605,60497,50030,47449,46829,60496,73658,47451,47606,53268,62159,62339,66862,41867,41898,41909,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,65960,37318,37318,37318,37318,74599,74601,37318,37318,70178,74617,37014,37318,37318,37318,37318,37318,37318,37010,37318,37318,37318,37318,37318,65657,40192,38525,37318,37318,39335,40192,38527,37031,44584,37054,74641,37318,37318,74250,37318,69924,37107,37136,37152,65815,69390,37247,37265,53482,72228,37116,37202,37162,74643,37186,37120,37206,37166,74726,69388,37245,37263,53480,37281,37318,41092,37317,37318,37318,45006,57380,37335,37318,74671,64449,74683,40193,37351,37378,40192,39199,37741,69458,41098,41041,37318,46044,37882,69459,41099,41042,37318,46045,37371,74376,37355,37382,40192,39202,38523,74469,50180,37398,37414,37436,50351,37475,37318,58014,37496,39340,37628,37651,37674,55492,37717,38230,37546,37566,58028,41986,37605,37523,37542,37562,58024,37582,37601,39304,37621,37644,37667,37690,37709,37733,74273,57770,38317,37757,37779,37822,46961,37943,37979,37995,38150,38170,38011,38093,38038,38061,37792,39434,38084,38100,38045,38068,37799,39441,38116,37992,38147,38166,38186,38022,38246,38263,37318,38304,37318,38354,38370,45231,38397,38413,37861,37459,38432,38451,68861,37456,38429,38448,38467,45226,38483,38407,38516,57783,51848,38545,38580,73050,38677,38610,38626,49222,38643,38660,49221,38642,38659,38676,38693,38624,38714,38739,38791,38841,38876,38942,38892,60443,38908,60433,60449,38914,38930,38946,38962,38978,74659,39048,39078,39105,39169,39156,39172,39188,39089,39218,46272,55484,39265,39291,55476,39311,74721,37693,37318,65659,38698,39356,39410,37835,37848,39457,45051,38498,38500,45058,39494,39520,39559,39504,39575,59063,39606,39616,39632,39681,39692,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,37318,1,24578,3,0,0,0,0,0,0,0,180524,180524,180524,180524,0,188717,0,188717,180524,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,180524,180524,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,368,188717,180524,188717,188717,188717,188717,188717,131072,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,188717,139264,147456,188717,188717,188717,188717,188717,188717,188717,1,24578,3,0,0,4366336,0,0,0,180524,188717,302,303,0,0,307,0,0,0,307,0,0,0,4931584,0,0,0,0,0,0,2367,0,0,0,0,0,0,0,0,0,1854,0,0,0,0,0,0,4268032,306,307,0,0,0,0,0,0,0,0,0,0,0,0,0,302,0,0,0,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,341,0,0,0,0,0,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,328,0,0,375,375,405,0,0,0,6275072,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450560,0,0,0,0,4857856,0,0,0,0,0,0,0,0,0,0,0,0,5259264,0,0,0,0,0,0,0,0,5414912,0,5447680,0,5464064,0,5414912,5447680,0,0,5562368,5636096,5685248,0,5750784,5873664,0,0,0,0,5636096,5873664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,914,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,0,0,0,0,5447680,0,5464064,0,5480448,5562368,0,0,0,5636096,0,5685248,0,0,5750784,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,990,0,0,0,4841472,0,0,0,4898816,0,4358144,4358144,4358144,4358144,4358144,4358144,5414912,4358144,5447680,4358144,5464064,4358144,5480448,5562368,4358144,4358144,4358144,5636096,4358144,5636096,4358144,5685248,4358144,4358144,5750784,4358144,4358144,4358144,4358144,4358144,5873664,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4923392,4358144,4358144,4358144,4358144,4358144,0,4923392,0,0,0,0,4366336,0,0,0,0,418,0,0,0,0,0,0,0,0,0,0,0,4276224,1258,0,0,0,5603328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,341,0,0,5341184,0,5652480,0,0,0,0,0,0,0,0,0,0,4759552,4358144,4358144,4358144,4358144,4358144,5242880,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5341184,4358144,4358144,4358144,4358144,4358144,4358144,0,0,5808128,4358144,4358144,4358144,4825088,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5627904,5652480,4358144,5701632,4358144,4358144,5808128,4358144,4358144,4358144,5668864,0,0,5791744,0,0,0,0,0,0,0,0,0,0,6201344,6242304,6250496,0,0,0,0,6422528,0,0,0,0,0,0,0,0,0,0,351,0,0,0,0,0,0,5619712,0,0,0,0,0,0,0,5726208,5758976,0,0,5791744,0,0,0,0,0,3664,0,0,0,0,0,0,0,0,0,0,5111808,0,0,0,0,0,5283840,0,0,0,0,0,5816320,6291456,0,0,0,0,0,0,0,0,0,0,0,0,2389,0,2391,2392,0,0,0,0,6062080,6463488,0,5398528,0,0,6479872,0,0,0,0,0,0,0,3459,0,0,0,3463,0,0,0,0,0,0,6463488,0,0,0,0,0,0,0,0,0,0,0,0,0,303,0,0,0,0,4931584,4939776,0,0,0,0,0,0,5054464,0,0,0,0,0,0,0,0,5210112,0,0,0,5210112,0,0,0,0,5292032,0,0,0,0,5365760,0,0,0,5455872,0,0,5816320,0,5857280,0,0,0,0,0,0,0,0,0,0,0,0,0,327,401,0,6119424,0,6168576,0,0,0,0,0,6242304,0,6291456,0,6316032,0,0,0,0,0,0,0,4358144,4358144,4931584,4939776,4358144,4358144,4358144,4358144,4358144,4358144,5054464,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5210112,4358144,4358144,4358144,4358144,4358144,4358144,5210112,4358144,4358144,4358144,4358144,5292032,4358144,4358144,4358144,4358144,5365760,4358144,4358144,4358144,5455872,4358144,4358144,4358144,4358144,4358144,4358144,5455872,4358144,4358144,4358144,4358144,4358144,5554176,5570560,5578752,5619712,5668864,4358144,4358144,4358144,5791744,5816320,4358144,5857280,4358144,4358144,4358144,4358144,5816320,4358144,5857280,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,6119424,4358144,6168576,4358144,4358144,4358144,4358144,4358144,6242304,4358144,6291456,4358144,6316032,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6463488,0,4358144,4358144,4358144,4358144,4358144,4358144,6463488,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,4825088,0,0,0,0,0,0,0,6184960,5316608,0,0,5644288,0,0,0,0,0,0,0,0,0,0,646,755,756,757,0,0,6217728,0,0,0,0,0,0,0,0,0,0,5390336,5308416,5488640,0,0,0,0,0,0,0,0,0,5799936,0,0,5881856,0,0,0,0,0,0,0,0,0,351,352,353,0,0,0,0,5070848,5431296,0,6430720,0,0,0,0,0,0,0,0,5160960,0,0,0,0,0,0,6053888,0,0,0,0,0,5013504,0,0,0,0,0,0,6053888,0,0,0,4358144,4358144,5013504,4358144,4358144,4358144,0,0,0,0,4841472,0,0,0,4898816,0,0,0,0,0,0,1851,0,1853,0,0,0,0,0,0,0,0,4825088,0,0,0,0,0,0,0,0,2786,0,0,0,0,0,0,0,0,2809,0,0,0,0,0,0,0,0,2834,0,0,0,0,0,0,0,0,3154,0,0,0,0,0,0,0,0,3167,3168,0,0,0,0,0,0,0,0,0,6283264,6332416,0,0,0,5881856,0,5382144,0,0,0,0,0,0,0,3665,3666,0,0,0,0,0,0,0,665,0,644,0,0,0,0,0,0,0,6266880,4784128,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4915200,4358144,4956160,4972544,4358144,4358144,4358144,4358144,4358144,4358144,5070848,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5218304,4358144,5267456,4358144,4358144,4358144,6184960,4358144,4358144,6283264,4358144,4358144,6332416,4358144,4358144,4358144,6389760,4358144,4358144,6430720,6438912,4358144,4358144,4358144,6266880,6488064,0,0,0,6266880,0,0,4915200,0,4956160,4972544,0,0,0,0,0,0,5070848,0,0,0,0,0,0,0,5218304,0,5267456,0,0,0,0,5218304,0,5267456,0,0,5308416,5316608,0,0,0,5431296,0,5488640,0,0,0,0,0,0,0,0,6332416,0,0,0,6389760,0,0,6430720,6438912,0,0,0,0,0,0,4784128,0,0,0,4849664,0,0,0,0,0,4915200,0,4956160,4972544,0,0,0,6430720,6438912,4784128,4358144,4358144,4358144,4849664,4358144,4358144,4358144,4358144,4358144,4915200,4358144,4358144,0,0,0,0,0,0,0,0,0,0,302,0,303,306,5218304,4358144,5267456,4358144,4358144,5308416,5316608,4358144,4358144,4358144,5431296,4358144,5488640,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5799936,4358144,4358144,5881856,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6103040,4358144,4358144,4358144,6103040,4358144,4358144,4358144,6184960,4358144,4358144,4358144,6283264,4358144,4358144,6332416,4358144,4358144,0,0,0,0,0,0,0,0,0,368640,0,0,0,0,0,0,2411,0,0,0,0,0,0,0,0,0,1256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4931584,4939776,6488064,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,357,5660672,5718016,0,5865472,0,0,6037504,0,0,6078464,0,0,6340608,0,6455296,0,0,0,0,420,420,420,420,597,597,420,420,420,420,420,420,420,420,420,420,420,420,420,0,420,0,0,0,0,5472256,0,0,0,6209536,0,0,0,0,6176768,0,0,0,0,0,0,6373376,6389760,0,0,6488064,6103040,0,0,0,0,0,0,1850,0,0,0,0,0,0,0,0,0,662,0,0,0,0,0,0,0,0,0,4898816,0,5709824,0,0,0,5283840,0,0,0,0,5251072,0,6414336,5832704,0,5955584,0,0,4358144,4358144,4841472,4358144,4358144,4358144,4898816,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,303,0,0,0,4358144,5472256,5521408,4358144,4358144,4358144,5595136,5709824,5718016,4358144,5824512,5865472,4358144,4358144,5922816,4358144,4358144,6021120,4358144,6037504,4358144,4358144,6078464,6111232,4358144,6176768,6209536,6234112,4358144,4358144,4358144,4358144,5283840,0,0,0,0,5472256,5521408,0,0,0,0,5595136,5709824,5718016,0,5824512,5865472,0,0,5865472,0,0,5922816,0,0,6021120,0,6037504,0,0,6078464,6111232,0,6176768,6209536,0,6234112,0,0,6234112,0,0,0,0,0,0,0,4358144,4358144,4841472,4358144,4358144,4358144,4898816,4358144,5283840,4358144,4358144,4358144,4358144,5472256,5521408,4358144,4358144,4358144,4358144,5595136,5709824,5718016,4358144,4358144,0,0,0,0,0,5193728,0,0,0,0,0,0,0,0,4358144,4358144,6209536,4358144,6234112,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,573440,0,0,5890048,0,0,0,6160384,0,5095424,5349376,0,5275648,0,0,0,0,0,0,2308,0,0,0,0,0,0,0,0,0,139264,147456,0,0,344064,0,0,0,0,4997120,0,0,0,0,0,0,0,0,0,0,5947392,0,0,0,0,0,3675,0,0,0,0,0,0,0,0,4012,528,5103616,4358144,4358144,5201920,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5890048,4358144,4358144,4358144,6029312,4358144,4358144,4358144,4358144,6160384,4358144,4358144,4358144,4358144,4358144,4358144,6406144,0,5103616,0,0,5201920,0,0,0,0,0,0,0,0,0,0,0,5890048,0,0,0,0,6029312,0,0,0,0,6160384,0,0,0,0,0,0,0,6406144,6406144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4997120,4358144,4358144,5038080,4358144,4358144,4358144,5095424,5095424,5103616,4358144,4358144,5201920,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,5013504,0,4358144,6406144,4358144,4358144,4358144,0,0,0,4890624,0,0,0,0,0,0,0,0,3209,0,0,3212,0,0,0,0,0,0,5898240,5963776,0,0,6193152,0,0,5406720,6397952,5300224,5234688,5423104,0,0,0,0,0,3675,0,0,0,0,0,4009,0,4011,528,528,0,0,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58815,57893,57893,0,0,5988352,0,0,6135808,6307840,0,5996544,4800512,0,6356992,0,0,0,0,0,0,2317,2318,0,2320,2321,0,0,0,0,0,0,1207,0,1209,0,0,368,368,0,0,0,0,0,0,0,0,0,710,0,0,0,0,0,0,0,0,5496832,0,0,0,0,0,5611520,0,0,0,0,0,0,0,3673,0,0,0,0,0,0,0,0,693,0,0,0,0,0,0,368,4947968,5021696,5529600,0,0,5169152,0,0,0,4800512,4808704,4358144,4358144,4890624,4358144,4947968,4358144,4358144,4358144,5898240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6307840,4358144,4358144,6356992,6381568,5185536,0,5234688,5300224,0,0,5406720,5529600,0,0,0,0,5898240,0,0,0,0,0,0,0,0,6307840,0,0,6356992,6381568,6397952,4800512,4808704,4358144,4358144,4890624,4358144,4947968,4358144,4358144,4358144,5046272,4358144,4358144,4358144,4358144,5185536,4358144,5234688,5300224,4358144,4358144,5406720,5529600,4358144,4358144,4358144,4358144,5898240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6307840,4358144,4358144,6356992,6381568,6397952,5021696,4358144,4358144,5021696,0,0,0,4980736,0,0,0,0,0,5373952,5734400,6045696,0,0,0,0,421,421,421,421,421,421,421,421,421,421,421,421,421,0,421,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,3675,4882432,0,0,0,0,0,0,2329,0,0,0,0,0,0,0,0,0,1195,0,0,0,0,0,0,0,0,0,0,5939200,0,0,5677056,6365184,4866048,0,6070272,5545984,5152768,0,0,0,0,0,3675,0,0,0,0,4008,0,4010,0,528,4013,6144e3,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5324800,5373952,5537792,5545984,5586944,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,5537792,5545984,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,4358144,6348800,0,4866048,4882432,0,0,0,0,644,0,0,0,803,0,808,0,794,0,820,0,0,0,0,735,0,0,0,0,0,0,0,0,0,0,0,450560,450560,0,0,450560,0,6045696,0,6070272,0,0,0,0,6348800,0,4866048,4882432,0,4980736,0,0,0,0,0,0,0,0,5324800,5373952,5537792,5545984,5586944,5734400,5971968,0,6045696,0,6070272,0,0,0,0,6348800,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6348800,4358144,6144e3,0,6144e3,0,4988928,5005312,0,0,0,0,5775360,0,0,0,0,749,0,0,0,0,0,0,0,0,0,0,759,0,0,3675,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,4358144,6324224,0,0,5005312,0,0,0,512e4,5136384,0,0,0,0,0,0,0,1252,0,0,0,748,1259,0,0,0,0,0,0,0,6324224,0,0,5005312,0,0,0,512e4,5136384,0,0,0,0,0,0,6463488,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,5914624,5914624,0,0,0,0,0,5513216,5783552,0,3675,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4931584,4939776,4358144,4358144,4358144,0,6053888,0,0,0,0,0,0,0,0,6012928,4358144,4358144,5013504,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,1153,0,0,0,0,0,3675,0,0,4006,4007,0,0,0,0,528,528,528,528,3220,528,528,528,528,528,528,3227,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,0,0,5013504,0,0,0,0,0,312,414,0,0,139264,147456,0,0,0,0,0,0,0,6103040,0,0,0,6184960,0,0,0,6283264,0,0,6332416,0,0,0,6389760,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,4358144,0,0,0,0,5193728,0,0,0,0,761,0,0,0,0,0,0,0,0,0,0,528,528,528,3700,528,528,528,5742592,0,0,0,0,0,4358144,4907008,4358144,5079040,4358144,5226496,4358144,5742592,4358144,4358144,4358144,6094848,4358144,5062656,0,0,0,0,0,4358144,4358144,6094848,0,4907008,0,5079040,0,5226496,0,5742592,0,0,0,6094848,0,0,0,0,0,3675,0,4005,0,0,0,0,0,0,528,528,528,528,4155,528,528,528,528,528,528,4907008,0,5079040,0,5226496,0,5742592,0,0,0,6094848,0,4358144,4907008,4358144,5079040,5062656,4358144,4358144,4358144,4358144,4358144,0,5062656,0,0,0,0,0,6225920,0,5062656,4358144,4358144,4358144,4358144,4358144,913,5063569,913,913,913,913,913,6226833,989,5063645,0,0,0,4816896,4358144,4358144,4358144,4358144,6086656,4816896,0,0,0,0,6086656,4816896,4358144,4358144,4358144,4358144,6086656,0,5087232,0,5931008,4358144,5332992,5980160,4358144,0,5332992,5980160,0,0,5332992,5980160,0,4358144,5332992,5980160,4358144,0,0,0,0,787,0,0,0,0,806,0,0,0,0,0,0,0,3166,0,0,0,0,0,0,0,0,327,0,0,0,0,0,0,0,5439488,5128192,4358144,5128192,0,5128192,0,5128192,4358144,0,4358144,0,0,4358144,0,4358144,0,0,4358144,6004736,6004736,6004736,6004736,6004736,0,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,339,340,0,0,221652,221652,221652,468,468,468,468,468,468,468,468,468,468,468,468,221652,468,221652,221652,221652,468,221652,221652,221652,221652,221652,221652,221652,221652,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1162,0,0,1164,0,0,0,0,0,0,0,0,1311,0,0,0,0,0,1179,0,0,0,762,0,0,0,0,0,0,0,0,0,0,0,0,0,383,0,0,0,0,1064,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,913,913,913,4358144,4358144,1064,0,0,0,0,0,0,0,0,0,0,0,0,0,507,514,514,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,237568,302,0,306,237568,0,0,0,0,0,0,0,0,0,0,0,0,0,643,0,0,4268032,98304,307,0,0,0,0,0,0,0,0,0,0,0,0,0,661,0,0,4210979,24578,3,0,0,297,0,0,0,0,297,0,0,0,0,0,0,0,3685,0,0,0,3688,3689,0,0,0,0,0,245760,245760,245760,0,0,0,0,139264,147456,245760,245760,0,0,245760,0,4210979,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1164,1297,0,0,0,0,0,0,1304,0,0,0,0,0,2859,0,0,0,0,0,0,0,0,0,2867,368,368,0,0,0,303104,0,0,0,0,0,0,0,0,0,0,647,0,0,0,0,528,1158,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,379,0,0,0,0,371,0,4358144,4358144,4358144,4358144,0,1984,0,0,0,4825088,0,0,0,0,0,0,0,1253,0,0,0,0,0,0,0,0,2399,2400,0,0,2402,0,0,0,0,0,262144,262144,262144,0,0,0,0,0,0,0,0,0,0,0,0,3449,0,0,0,0,0,262144,262144,0,262144,0,0,0,139264,147456,262144,0,0,0,0,0,0,2344,2345,0,0,0,0,0,0,0,0,798,0,0,0,0,0,809,0,0,0,262144,0,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,262738,0,262738,0,0,262738,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1177,0,0,0,0,0,0,0,0,0,0,0,4086,528,528,528,528,0,270336,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5177344,278528,278528,0,0,131072,278528,0,0,0,0,278528,0,0,0,0,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,0,278528,0,0,278528,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1205,1206,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,0,0,0,712,0,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,302,638,0,0,0,0,1218,0,0,0,0,1223,0,0,0,0,0,0,0,1752,0,0,0,1755,0,0,1758,0,4268032,306,641,0,0,0,0,0,0,0,0,0,0,0,0,0,662,0,0,528,0,1430,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,3686,0,0,0,0,0,0,0,0,3826,0,3675,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,1525,0,0,0,0,0,3675,4004,0,0,0,0,0,0,0,528,528,4209,528,4210,528,528,528,528,528,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,286720,303,0,307,286720,0,0,0,0,0,0,0,0,0,0,0,0,0,663,0,792,0,307,0,0,0,0,0,0,307,139264,287139,0,0,0,307,0,0,0,0,1234,0,0,0,0,0,0,0,0,0,0,0,2414,0,0,0,0,0,307,1,24578,3,0,0,4366336,0,0,0,0,0,302,66175,0,0,0,0,1250,0,0,0,1255,0,0,0,0,0,0,0,661,0,0,0,0,0,0,0,0,378,0,363,0,0,0,0,0,4268032,306,98946,0,0,0,0,0,0,0,0,0,0,0,0,0,728,0,0,0,0,122880,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,2310144,0,0,0,0,307,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,528,528,3699,528,528,528,528,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,304,0,304,0,304,304,304,295216,304,304,304,295216,295216,304,295216,304,304,131072,304,304,304,304,304,295216,304,304,304,304,295216,304,304,304,304,295286,295216,295216,295216,295216,295216,295216,304,304,304,304,304,0,0,304,304,295216,304,304,304,304,304,304,304,304,304,304,304,304,369,304,0,295216,304,295286,295216,295216,295216,304,304,304,295286,139264,147456,295216,295216,304,304,295216,295216,295216,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,295216,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295216,295216,295216,295216,295216,304,304,304,295216,304,304,304,304,304,304,304,295216,374,304,304,304,304,304,304,304,295216,304,295216,295216,295216,295216,295216,295216,295216,295216,295286,295286,295286,295286,295286,295286,295216,295216,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1267,0,0,0,0,0,0,0,0,0,0,0,3170,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,4399804,4399804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4399804,0,0,319488,0,0,0,0,0,0,319488,319488,0,0,0,0,0,0,0,3696,0,528,528,528,528,528,528,528,528,528,528,528,3849,528,528,528,319488,0,0,0,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,0,24578,3,0,0,4366336,253952,0,0,0,0,302,303,0,0,0,0,1282,0,0,0,0,0,0,0,0,0,0,0,1241,0,0,0,0,368,425984,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4399805,0,0,0,6275072,0,0,0,0,0,0,0,368,0,0,0,0,0,0,2357,0,0,0,0,0,0,0,0,0,3461,0,0,0,0,0,0,0,327680,327680,327680,0,0,0,0,0,0,0,0,0,0,327680,327680,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,327680,327680,327680,327680,327680,335872,327680,327680,327680,335872,327680,327680,327680,327680,327680,327680,49723,0,0,0,0,0,0,0,49723,49723,0,0,0,0,0,0,0,1270,0,0,0,0,0,0,0,0,0,5627904,5652480,0,5701632,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,49152,990,0,0,0,0,0,3683,0,0,0,0,0,0,0,3690,0,0,0,0,0,3836,0,0,0,0,0,0,0,0,0,0,5242880,0,0,0,0,0,0,0,5341184,0,0,0,0,0,344064,344064,344064,0,0,0,0,0,0,0,0,0,0,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,352256,352256,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1309,0,0,0,0,0,0,0,0,1315,0,0,0,0,371,0,0,0,0,0,0,0,0,0,0,0,3438,0,0,3440,0,1,292,3,0,0,0,298,0,0,0,0,0,0,0,0,0,528,3698,528,528,528,3701,528,0,360448,360448,360448,0,0,0,0,0,0,0,0,0,0,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,1,0,3,155942,155942,296,0,636,0,0,0,302,303,0,1230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,528,528,1376,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2460,528,0,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60322,57943,57943,57943,57943,59004,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,57893,3998,0,4e3,528,528,528,528,58773,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,528,528,528,2437,528,528,528,528,528,528,528,528,528,528,528,528,528,2446,528,2448,0,0,0,57893,57893,57893,57893,57893,57893,57893,59856,57893,57893,57893,57893,57893,57893,60873,57893,57893,57893,57893,57893,57893,57893,57893,57893,61213,57893,57893,57893,57893,61214,61215,57893,57893,57893,57893,60300,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,0,0,0,60432,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,0,0,0,3191,0,0,0,0,0,0,0,0,0,0,0,0,319,0,0,0,0,0,0,3682,0,0,0,0,0,0,0,0,0,0,0,0,338,0,0,0,528,57893,61069,57893,57893,57893,61072,57893,57893,57893,57893,57893,57893,57893,57893,57893,58331,0,57916,57916,57916,57916,57916,61080,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59358,61101,57916,57916,57916,57916,57916,57916,57916,57916,57916,61109,57916,57916,57916,57916,57916,57916,60360,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,60707,57943,57943,57943,57943,57943,57943,57943,57943,57943,61138,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59568,57943,57943,57943,528,528,3852,3853,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,58291,57893,57893,57943,57943,57943,61251,57943,57943,57943,57943,61252,61253,57943,57943,57943,57943,57943,57943,57943,58468,57943,57943,57943,57943,528,528,528,898,0,0,3675,0,0,3929,0,0,0,0,0,0,0,0,0,0,695,0,0,0,0,368,528,528,57893,57893,57893,57893,57893,57893,61299,57893,57893,57893,57893,57893,57893,61305,57893,57893,57893,61309,57893,57916,57916,57916,57916,57916,57916,61315,57916,57916,57916,57916,57916,57943,57943,61128,57943,57943,57943,57943,57943,57943,57943,57943,57943,60066,57943,57943,57943,57943,57943,57943,57916,57916,61321,57916,57916,57916,61325,57916,57943,57943,57943,57943,57943,57943,61331,57943,528,1951,528,2283,528,57893,59394,57893,59632,57893,2290,0,2291,0,0,0,0,0,417792,0,417792,0,0,0,0,310,0,0,0,0,0,316,0,0,0,0,0,0,0,0,0,0,1328,0,0,0,0,0,528,528,57893,57893,57893,57893,61511,57893,57893,57893,57893,57893,57893,57893,57893,57893,58826,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,61524,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,60024,57943,60026,57943,57943,57943,57943,57943,61537,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,4244,528,528,528,57893,57893,57893,57893,57916,57916,57916,57916,57943,57943,57943,57943,0,0,0,0,1310,0,0,0,0,0,0,0,0,0,1316,1269,0,528,528,57893,57893,57916,57916,57943,57943,0,528,57893,57916,57943,0,528,57893,57916,57943,0,528,57893,57916,57943,0,0,0,0,376832,376832,376832,0,0,0,0,0,0,0,0,0,0,0,0,346,0,0,0,0,420,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1731,0,0,0,0,0,0,0,0,0,0,0,648,0,0,0,0,0,0,0,0,4268780,0,0,0,0,0,0,0,0,0,0,0,0,6119424,0,6168576,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0,354,355,356,0,0,393685,393685,393685,0,0,0,0,0,0,0,0,0,0,0,0,368,0,0,245760,0,0,475136,0,0,0,0,0,0,0,0,0,0,0,0,0,761,0,0,305,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,411,0,421,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,1731,0,0,0,0,1738,0,1740,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,0,0,352256,0,352256,352256,0,0,0,305,306,307,0,0,0,0,0,0,0,0,0,0,0,0,0,1185,0,0,0,0,0,748,421,0,0,0,0,0,0,0,0,0,0,0,337,0,0,0,0,57916,0,0,0,748,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,3413,57893,57893,60760,1725,0,0,0,1731,1732,0,0,0,0,0,0,0,0,0,0,741,0,0,0,0,0,0,0,0,1252,1825,0,0,0,0,1259,1259,0,0,0,0,0,0,0,4083,0,4085,0,528,528,528,528,528,528,528,528,528,528,3848,528,528,528,528,0,0,2293,1732,2294,0,0,0,0,0,0,0,0,0,0,0,368,368,1212,0,0,528,528,2499,2932,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59860,528,528,528,2932,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,2592,0,0,417792,0,0,0,0,417792,0,0,0,0,0,310,0,310,0,0,0,0,0,4151,4152,4153,528,528,528,4156,528,4158,528,528,0,0,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,60283,417792,417792,0,0,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,418102,417792,417792,418101,418102,417792,417792,418101,417792,418101,417792,0,417792,0,0,0,0,417792,0,0,0,0,0,0,0,0,0,0,0,310,310,310,0,418101,417792,1,24578,3,0,0,4366971,0,0,0,0,0,302,303,311296,4399805,0,0,0,311296,0,0,0,0,0,0,0,0,0,0,800,0,0,0,0,0,0,0,0,4268032,306,307,0,434176,0,0,0,0,0,0,0,0,0,0,0,381,0,384,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,4399805,0,0,0,0,0,363,0,0,0,0,0,0,368,0,296,0,0,914,913,913,913,913,913,4858769,4875153,913,913,913,913,913,913,913,913,913,5628817,5653393,913,5702545,913,913,913,913,5448593,913,5464977,913,5481361,5563281,913,913,913,5637009,913,5686161,913,913,5751697,913,6275985,913,913,913,913,913,913,913,913,913,0,0,990,989,989,989,989,6087645,4817809,4359057,4359057,4359057,4359057,6087569,0,5087232,0,5931008,4358144,989,989,5260253,989,989,989,989,989,989,989,989,5415901,989,5448669,989,5465053,989,5481437,5563357,989,989,989,5637085,989,5686237,989,989,5751773,989,989,989,989,989,989,6300637,989,989,989,989,989,989,989,989,989,989,5112797,989,989,989,989,989,989,5874653,989,989,989,989,989,989,989,989,989,989,989,6276061,989,989,989,4858845,4875229,989,989,989,989,989,989,989,989,989,989,989,989,989,5178333,989,989,4359057,5637009,4359057,5686161,4359057,4359057,5751697,4359057,4359057,4359057,4359057,4359057,5874577,4359057,4359057,4359057,4359057,5186449,4359057,5235601,5301137,4359057,4359057,5407633,5530513,4359057,4359057,4359057,4359057,4359057,6300561,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5112721,4359057,4359057,4359057,4359057,989,989,5809041,4359057,4359057,4359057,4826001,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5178257,4359057,4359057,4359057,4359057,4359057,5243793,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5342097,4359057,4359057,4359057,4359057,4359057,4359057,5415825,4359057,5448593,4359057,5464977,4359057,5481361,5563281,4359057,4359057,0,0,0,913,913,913,913,913,913,913,913,913,913,913,4932497,4940689,913,913,6464401,0,0,0,0,989,989,989,989,989,989,989,989,989,4998109,989,989,5039069,989,989,989,5096413,989,5456861,989,989,989,989,989,5555165,5571549,5579741,5620701,5669853,989,989,989,5792733,5817309,989,5858269,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,989,4359057,4359057,4359057,6120413,989,6169565,989,989,989,989,989,6243293,989,6292445,989,6317021,989,989,989,989,989,5071837,989,989,989,989,989,989,989,5219293,989,5268445,4359057,4359057,4932497,4940689,4359057,4359057,4359057,4359057,4359057,4359057,5055377,4359057,4359057,4359057,4359057,4359057,4359057,6054801,4359057,4359057,4359057,0,0,0,0,5193728,0,4359057,5456785,4359057,4359057,4359057,4359057,4359057,5555089,5571473,5579665,5620625,5669777,4359057,4359057,4359057,5792657,5817233,4359057,5858193,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,0,5013504,0,6120337,4359057,6169489,4359057,4359057,4359057,4359057,4359057,6243217,4359057,6292369,4359057,6316945,4359057,4359057,4359057,5194641,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4907008,0,5079040,6094848,6430720,6438912,0,0,0,0,0,0,4785041,913,913,913,4850577,913,913,913,913,913,913,5055377,913,913,913,913,913,913,913,913,5211025,5489553,913,913,913,913,913,913,913,913,913,5800849,913,913,5882769,913,913,913,913,5219217,913,5268369,913,913,5309329,5317521,913,913,913,5432209,913,913,913,6333329,913,913,913,6390673,913,913,6431633,6439825,0,0,0,0,0,0,0,393685,0,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,393685,0,393685,0,4785117,989,989,989,4850653,989,989,989,989,989,4916189,989,4957149,4973533,989,989,989,6030301,989,989,989,989,6161373,989,989,989,989,989,989,989,6325213,4359057,4359057,5006225,4359057,4359057,4359057,5120913,5137297,989,989,5309405,5317597,989,989,989,5432285,989,5489629,989,989,989,989,989,989,5325789,5374941,5538781,5546973,5587933,5735389,5972957,989,6046685,989,6104029,989,989,989,6185949,989,989,989,6284253,989,989,6333405,989,989,989,6390749,989,989,6431709,6439901,4785041,4359057,4359057,4359057,4850577,4359057,4359057,4359057,4359057,4359057,4916113,4359057,4358144,4358144,4358144,4358144,4358144,913,913,913,913,913,0,0,0,0,0,0,0,319488,0,0,0,0,0,0,0,0,0,0,319488,0,4957073,4973457,4359057,4359057,4359057,4359057,4359057,4359057,5071761,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,6275985,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5219217,4359057,5268369,4359057,4359057,5309329,5317521,4359057,4359057,4359057,5432209,4359057,5489553,4359057,4359057,4359057,5211025,4359057,4359057,4359057,4359057,5292945,4359057,4359057,4359057,4359057,5366673,4359057,4359057,4359057,4359057,6390673,4359057,4359057,6431633,6439825,4358144,4358144,4358144,6266880,6488064,913,913,913,6267793,6488977,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,730,4358144,4358144,4358144,0,0,913,913,4842385,913,913,913,4899729,913,913,913,913,913,913,913,6103953,913,913,913,6185873,913,913,913,6284177,913,913,5473169,5522321,913,913,913,913,5596049,5710737,5718929,913,5825425,5866385,913,913,913,913,5243793,913,913,913,913,913,913,913,5342097,913,913,913,0,0,989,989,989,4826077,989,989,989,989,989,989,989,0,913,4359057,4359057,4359057,4359057,4359057,4858769,4875153,5923729,913,913,6022033,913,6038417,913,913,6079377,6112145,913,6177681,6210449,913,6235025,913,913,913,913,6243217,913,6292369,913,6316945,913,913,913,913,913,913,913,4998033,913,913,5038993,913,913,913,5096337,5104529,5284829,989,989,989,989,5473245,5522397,989,989,989,989,5596125,5710813,5719005,989,5825501,5866461,989,989,5923805,989,989,6022109,989,6038493,989,989,6079453,6112221,989,6177757,6210525,989,6235101,989,989,989,989,989,989,989,4359057,4359057,4842385,4359057,4359057,4359057,4899729,4359057,5284753,4359057,4359057,4359057,4359057,5473169,5522321,4359057,4359057,4359057,4359057,5596049,5710737,5718929,4359057,4359057,4359057,6103953,4359057,4359057,4359057,6185873,4359057,4359057,4359057,6284177,4359057,4359057,6333329,4359057,4359057,4923392,4358144,4358144,4358144,4358144,4358144,913,4924305,913,913,913,913,4366336,0,0,0,0,1779,0,0,0,0,0,0,0,0,0,0,0,3156,0,3157,0,0,5825425,5866385,4359057,4359057,5923729,4359057,4359057,6022033,4359057,6038417,4359057,4359057,6079377,6112145,4359057,6177681,6210449,4359057,6235025,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4358144,4358144,4358144,913,913,913,913,913,5194641,913,913,913,913,913,913,913,913,913,913,988,989,989,989,989,989,4358144,4358144,6029312,4358144,4358144,4358144,4358144,6160384,4358144,4358144,4358144,4358144,4358144,4358144,6406144,913,913,913,913,6325137,989,989,5006301,989,989,989,5120989,5137373,989,989,989,989,989,6226909,4359057,5063569,4359057,4359057,4359057,4359057,4359057,6226833,0,6086656,913,913,5202833,913,913,913,913,913,913,913,913,913,913,913,5890961,913,913,913,5555089,5571473,5579665,5620625,5669777,913,913,913,5792657,5817233,913,5858193,913,913,913,913,5292945,913,913,913,913,5366673,913,913,913,5456785,913,913,913,913,913,6308753,913,913,6357905,6382481,6398865,4801501,4809693,989,989,4891613,913,913,6030225,913,913,913,913,6161297,913,913,913,913,913,913,913,6407057,5104605,989,989,5202909,989,989,989,989,989,989,989,989,989,989,989,5891037,6407133,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4998033,4359057,4359057,5038993,4359057,4359057,4359057,5325713,5374865,5538705,5546897,5587857,5735313,5972881,4359057,6046609,4359057,6071185,4359057,4359057,5096337,5104529,4359057,4359057,5202833,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4358144,4358144,4358144,4358144,5890961,4359057,4359057,4359057,6030225,4359057,4359057,4359057,4359057,6161297,4359057,4359057,4359057,4359057,4359057,4359057,5800849,4359057,4359057,5882769,4359057,4359057,4359057,4359057,4359057,4359057,5628817,5653393,4359057,5702545,4359057,4359057,5809041,4359057,4359057,4359057,4359057,6407057,4358144,4358144,4358144,913,913,913,4890624,0,0,0,0,0,0,0,0,327680,0,0,0,0,0,0,0,0,319488,0,0,0,0,319488,0,319488,6397952,4801425,4809617,913,913,4891537,913,4948881,913,913,913,5047185,913,913,913,913,913,913,913,6300561,913,913,913,913,913,913,913,913,913,913,913,913,6120337,913,6169489,913,5186449,913,5235601,5301137,913,913,5407633,5530513,913,913,913,913,5899153,913,913,913,913,913,913,6054801,913,913,913,989,989,5014493,989,989,989,989,989,5194717,989,989,989,989,989,989,989,989,4359057,4359057,989,4948957,989,989,989,5047261,989,989,989,989,5186525,989,5235677,5301213,989,989,989,5211101,989,989,989,989,5293021,989,989,989,989,5366749,989,989,989,5243869,989,989,989,989,989,989,989,5342173,989,989,989,989,989,989,6464477,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,6325137,5914624,5915537,0,0,0,5407709,5530589,989,989,989,989,5899229,989,989,989,989,989,989,989,989,6308829,989,989,6357981,6382557,6398941,4801425,4809617,4359057,4359057,4891537,4359057,4948881,4359057,4359057,4359057,5047185,5899153,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,6308753,4359057,4359057,6357905,6382481,6398865,5021696,4358144,4358144,5022609,913,913,0,4980736,0,0,0,0,0,5373952,5734400,6045696,0,0,0,0,1792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114688,0,5537792,5545984,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,4358144,6348800,913,4866961,4883345,913,913,4916113,913,4957073,4973457,913,913,913,913,913,913,5071761,913,913,913,913,913,913,5260177,913,913,913,913,913,913,913,913,5415825,4981649,913,913,913,913,913,913,913,913,5325713,5374865,5538705,5546897,5587857,5735313,5972881,913,6046609,913,6071185,913,913,913,913,6349713,989,4867037,4883421,989,4981725,989,989,989,5800925,989,989,5882845,989,989,989,989,989,989,989,989,989,5628893,5653469,989,5702621,989,989,989,989,6071261,989,989,989,989,6349789,4359057,4866961,4883345,4359057,4981649,4359057,4359057,4359057,4359057,4359057,4359057,6464401,4358144,4358144,4358144,4358144,4358144,913,913,913,913,913,913,913,913,913,913,913,913,913,913,913,913,5178257,913,4359057,4359057,6349713,4358144,6144e3,913,6144913,0,4988928,5005312,0,0,0,0,5775360,0,0,0,0,1795,0,0,1798,0,1800,0,0,0,0,0,1806,4358144,6324224,913,913,5006225,913,913,913,5120913,5137297,913,913,913,913,913,913,913,5112721,913,913,913,913,913,5284753,913,913,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,913,913,5014417,913,913,913,913,913,5874577,913,913,913,913,913,913,913,913,913,913,913,913,913,989,989,989,4358144,6094848,913,4907921,913,5079953,913,5227409,913,5743505,913,913,913,6095761,913,989,989,4932573,4940765,989,989,989,989,989,989,5055453,989,989,989,989,989,989,6054877,989,989,989,4359057,4359057,5014417,4359057,4359057,4359057,4907997,989,5080029,989,5227485,989,5743581,989,989,989,6095837,989,4359057,4907921,4359057,5079953,4359057,5227409,4359057,5743505,4359057,4359057,4359057,6095761,4359057,5062656,0,0,0,0,0,4358144,4358144,0,913,913,913,913,913,913,0,0,0,0,0,0,0,0,4956160,4964352,0,0,0,0,0,0,0,0,4816896,4358144,4358144,4358144,4358144,6086656,4817809,913,913,913,913,6087569,4817885,5332992,5980160,4358144,913,5333905,5981073,913,989,5333981,5981149,989,4359057,5333905,5981073,4359057,0,0,0,0,1811,0,0,0,0,0,0,0,0,0,1820,0,0,0,0,1825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,528,5439488,5128192,4358144,5129105,913,5129181,989,5129105,4359057,0,4358144,913,989,4359057,0,4358144,913,989,4359057,6004736,6004736,6005649,6005725,6005649,0,0,0,450560,450560,0,0,0,0,0,0,0,0,0,0,0,0,0,0,375,0,450560,450560,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1876,1877,0,0,0,0,0,0,0,0,0,0,1867,0,0,1870,0,0,0,0,0,196608,0,0,0,106496,0,0,4284416,0,0,0,0,0,0,0,417792,0,0,417792,0,0,417792,0,417792,0,0,0,0,139264,147456,417792,0,0,0,417792,196608,0,0,5816320,6291456,0,0,0,0,0,0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,303,0,0,307,0,0,0,4956160,4964352,0,0,0,0,0,0,0,466944,0,0,0,0,0,0,0,0,0,5480448,0,0,0,0,0,0,6430720,6438912,914,0,0,0,914,0,4784128,0,0,0,4849664,0,0,0,0,0,648,0,0,0,0,0,0,818,0,0,0,0,0,658,659,0,0,0,0,0,0,0,0,0,1272,0,0,0,0,0,0,0,0,6332416,0,0,0,6389760,0,0,6430720,6438912,990,0,0,0,990,4358144,4358144,4358144,914,0,0,0,4841472,0,0,0,4898816,0,0,0,0,0,0,2383,0,0,0,0,0,0,0,0,0,2825,0,0,0,0,0,0,0,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459222,459379,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1887,0,1889,1865,528,528,528,528,528,528,528,528,3516,528,528,3519,528,528,528,60866,4358144,4358144,483328,0,0,0,0,0,0,0,0,0,0,0,0,0,1243,0,0,1,24578,3,0,0,0,0,507904,0,0,0,507904,0,0,0,0,0,0,2398,0,0,0,0,0,0,0,0,0,49723,0,0,0,0,0,327680,0,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2084,0,0,0,4825088,0,0,0,0,0,0,0,0,3423,0,0,0,0,0,0,0,0,3460,0,0,0,0,0,3465,0,4268032,306,307,0,0,442368,0,0,0,0,0,0,0,0,0,0,1168,1167,0,0,0,0,0,0,0,229376,0,491520,524288,0,0,0,0,0,0,0,0,0,678,0,0,0,0,0,0,4358144,4358144,491520,0,0,0,0,0,0,0,0,0,0,0,0,0,1275,0,1277,1,24578,3,0,0,0,0,0,516096,0,0,0,516096,0,0,0,0,0,0,0,0,0,0,0,0,368,0,296,0,0,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,516567,1,24578,0,0,0,4366336,0,0,548864,0,0,302,303,0,0,0,0,2306,0,0,0,0,0,0,0,0,0,0,0,0,5627904,0,0,0,4268032,306,307,409600,0,0,0,0,0,0,0,0,0,0,0,0,368,0,308,0,0,0,5513216,5783552,0,40960,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,5193728,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4907008,0,5079040,6094848,1,24578,4227365,0,0,0,0,0,0,299,0,0,0,299,0,0,0,0,0,245760,0,245760,245760,0,0,0,245760,245760,0,0,0,0,0,0,245760,0,0,0,245760,0,0,245760,245760,245760,0,0,540672,0,0,540672,0,0,0,540672,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,0,0,417792,0,0,0,417792,0,0,0,0,0,1,24578,4227365,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2328,0,0,0,0,2332,0,0,0,0,0,0,0,1879,0,0,0,0,0,0,0,0,768,0,0,771,0,0,0,0,0,0,499712,0,0,0,0,0,0,0,0,0,0,0,0,0,1291,0,0,0,0,499712,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5111808,4358144,4358144,4358144,4358144,4358144,5283840,4358144,4358144,4358144,4358144,4358144,499712,0,0,0,0,0,0,0,0,0,0,0,0,0,1314,0,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2355,0,0,0,0,0,0,0,0,0,0,0,1882,0,0,0,0,1,24578,3,155942,296,0,0,0,0,0,0,0,0,0,0,0,528,4087,528,4088,528,528,57893,528,57893,528,528,57893,528,528,57916,57893,528,528,57893,57893,57893,0,0,0,0,0,0,3821,0,0,0,0,57916,57893,57893,57893,57893,57893,57893,57893,57916,57916,57893,57893,57943,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61529,57916,57916,57916,57943,57943,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60631,0,0,2293,0,2294,0,0,0,0,0,0,0,0,0,0,0,664,0,0,0,0,3453,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,744,1825,0,0,0,0,0,0,0,0,0,0,0,2373,0,0,0,0,0,674,0,0,0,0,0,0,0,0,0,0,1182,0,0,0,0,0,0,0,1280,0,0,0,0,0,0,0,0,0,0,0,0,0,1788,0,0,528,57894,528,57894,528,528,57894,528,528,57917,57894,528,528,57894,57894,57894,57894,57944,57944,57894,57894,57894,57894,57944,57944,57894,528,57894,57894,57917,57894,57894,57894,57894,57894,57894,57894,57917,57917,57894,57894,57944,57894,57894,57894,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,1,24578,3,155943,296,0,0,0,0,0,0,0,0,0,0,0,740,661,0,0,528,0,573440,573440,573440,0,0,0,0,0,0,0,0,0,0,0,0,368,0,516096,0,0,0,5988352,0,0,6135808,6307840,0,5996544,4800512,0,6356992,3675,0,0,0,0,0,694,0,0,0,787,0,0,0,0,806,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,637,303,0,0,0,0,2381,0,0,0,0,0,0,0,0,0,0,0,344064,0,0,0,0,4268032,640,307,0,0,0,0,0,0,0,0,0,0,0,0,0,1804,0,0,581632,0,0,0,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,0,581632,0,0,0,0,0,0,0,0,0,0,0,581632,0,581632,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,746,581632,581632,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,2397,0,0,0,0,0,0,0,0,0,0,0,1225,0,0,0,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,3827,4882432,0,0,0,0,0,0,2784,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,420,0,0,0,3926,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,0,0,5513216,5783552,0,3926,0,0,0,0,0,0,0,0,4358144,4358144,0,0,0,0,0,0,0,0,0,0,302,0,0,306,0,0,0,0,0,0,306,237983,147456,0,0,0,306,0,0,311,312,0,0,0,0,0,0,0,0,0,0,0,0,0,1819,0,0,312,0,311,311,312,0,0,0,0,0,0,0,0,0,0,0,311,409,312,0,458,472,472,472,485,485,485,485,485,485,485,485,485,506,485,485,485,485,485,524,485,485,485,524,485,485,485,485,485,485,529,57895,529,57895,529,529,57895,529,529,57918,57895,529,529,57895,57895,57895,57895,57945,57945,57895,57895,57895,57895,57945,57945,57895,529,57895,57895,57918,57895,57895,57895,57895,57895,57895,57895,57918,57918,57895,57895,57945,57895,57895,57895,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,306,307,0,0,0,0,0,645,0,0,648,649,0,0,0,0,0,736,0,0,0,0,0,0,0,0,0,745,368,368,0,0,704,0,0,0,0,0,0,0,711,0,0,0,0,0,750,0,0,0,0,645,0,0,0,0,0,0,0,6299648,0,0,0,0,0,0,0,0,0,777,0,0,781,0,0,0,0,0,0,0,789,0,0,0,0,0,0,2807,0,0,0,0,0,0,0,0,0,2310,0,0,0,0,0,0,793,0,0,0,0,0,0,0,797,0,0,0,0,0,0,0,0,557056,557056,0,0,0,0,0,0,0,833,793,0,0,0,0,0,837,838,0,0,0,0,793,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,0,1155,0,0,0,0,2295,0,1160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1759,528,847,851,528,528,863,528,528,528,879,528,884,528,892,528,895,528,528,909,528,57893,57893,57893,58266,58270,57893,57893,58282,57893,57893,57893,58298,57893,58303,57893,58311,57893,58314,57893,57893,58328,57893,0,57916,57916,57916,58342,58346,57916,57916,58358,57916,57916,57916,58374,57916,58379,57916,58387,57916,58390,57916,57916,58404,57916,0,0,0,0,58303,57943,57943,57943,58417,58421,57943,57943,58433,57943,57943,528,528,528,57893,57893,57893,0,0,3655,0,3657,0,0,0,0,0,2356,0,2358,0,0,0,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,57943,58449,57943,58454,57943,58462,57943,58465,57943,57943,58479,57943,847,851,1141,895,1159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,747,0,0,0,1320,0,0,0,0,0,0,0,0,0,0,0,0,368,302,0,0,528,528,528,1411,528,528,528,528,528,528,528,528,528,528,528,528,528,2470,528,528,0,0,1809,0,0,0,0,0,0,0,0,0,0,0,0,0,1842,0,0,1832,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1201,1885,0,0,1886,0,0,0,0,528,528,528,528,528,528,528,528,528,528,3225,528,528,528,1899,528,528,528,528,528,528,528,528,528,1912,528,528,528,0,0,57893,60609,57893,57893,57893,57893,57893,57893,57893,57893,57893,61085,57893,57893,57893,57893,57893,57893,528,528,528,528,58773,1985,57893,57893,57893,57893,57893,59336,57893,57893,57893,57893,57893,58822,57893,57893,57893,57893,58827,57893,57893,57893,57893,57893,58319,57893,57893,57893,57893,0,57916,57916,58341,57916,57916,57893,59342,57893,57893,57893,57893,57893,57893,57893,57893,57893,59355,57893,57893,57893,57893,57893,58859,57893,57893,57893,58866,57893,50676,58773,990,57916,57916,59442,57916,57916,57916,57916,57916,57916,57916,57916,57916,59455,57916,57916,57916,57916,57916,57916,60387,57916,57916,57916,57916,57916,57916,60394,57916,57916,57916,57916,57916,57916,59514,57916,57916,57916,57916,57916,57916,59520,57916,57916,57916,57916,57916,57943,61127,57943,57943,57943,61130,57943,57943,57943,57943,57943,57943,57943,60968,57943,57943,57943,57943,57943,57943,57943,57943,57943,60721,57943,57943,57943,57943,57943,57943,57943,57943,57943,59610,57943,57943,57943,57943,57943,57943,59616,57943,57943,57943,57943,57943,57943,57943,60982,60984,57943,57943,57943,57943,60988,57943,60990,0,0,2293,0,2294,0,0,0,0,0,0,0,0,0,2300,0,0,0,0,2806,0,0,0,0,0,2811,0,2813,2814,0,0,0,0,0,483328,0,0,0,0,0,0,0,0,0,0,801,0,0,0,0,0,0,2325,0,0,0,0,0,0,0,0,0,2334,0,0,0,0,0,0,2822,0,0,0,0,0,0,0,0,0,769,0,0,0,774,0,0,0,2407,0,0,0,0,0,0,0,0,0,0,0,0,0,0,702,528,2399,528,528,528,528,528,528,528,528,528,528,528,2429,528,528,2432,528,528,2475,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2471,528,57893,57893,59863,57893,57893,57893,57893,57893,57893,59871,57893,57893,57893,57893,57893,57893,0,0,57916,57916,57916,57916,57916,57916,57916,57916,60351,57916,57916,57916,57916,57916,57916,57893,59891,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60640,57916,57916,57916,59949,57916,57916,59952,57916,57916,57916,57916,57916,57916,59960,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,57916,57916,60017,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,60417,57943,57943,57943,57943,57943,60032,57943,57943,60035,57943,57943,57943,57943,57943,57943,60043,57943,57943,528,528,528,57893,57893,57893,0,3654,0,0,0,0,0,0,0,1325,0,0,0,1329,0,0,0,0,57943,57943,60100,57943,57943,57943,57943,2760,528,528,528,528,60109,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,57916,59945,57916,0,0,2781,0,0,0,0,0,0,0,0,0,0,0,0,0,1884,0,0,0,0,2794,0,0,0,0,0,2798,0,0,0,0,0,0,0,0,4784128,0,0,0,0,0,0,0,0,3181,0,0,0,0,0,3186,0,57893,60285,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60293,57893,57893,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,57943,57943,60461,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,4075,0,4076,57943,60472,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,0,0,0,0,3150,0,0,0,0,0,0,0,0,0,0,0,0,0,2299,0,0,0,3160,0,0,0,0,0,0,0,0,0,0,0,0,3173,0,0,0,0,2820,0,0,0,2824,0,0,0,0,0,0,0,703,0,0,0,0,0,0,0,0,2331,0,0,0,0,0,0,0,0,3189,0,0,0,0,0,0,0,0,0,0,0,0,3202,3203,0,0,3215,0,528,528,528,528,528,528,528,528,528,528,528,3226,528,528,3230,528,528,528,528,528,528,528,528,528,528,3239,528,528,0,0,0,0,0,0,57893,57893,60279,57893,57893,57893,57893,57893,58320,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,0,0,4289,0,528,60617,57893,57893,60621,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60630,57893,0,0,3137,3138,0,0,0,0,0,0,0,0,0,0,0,3199,0,0,0,0,57916,57916,57916,60666,57916,57916,60670,57916,57916,57916,57916,57916,57916,57916,57916,57916,58383,57916,57916,57916,57916,57916,57916,57916,60679,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60687,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,57893,57893,57893,57943,57943,57943,57943,60715,57943,57943,60719,57943,57943,57943,57943,57943,57943,57943,57943,57943,59582,57943,57943,57943,57943,57943,57943,57943,57943,60728,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60736,0,3430,0,0,0,0,0,0,0,0,0,0,0,0,0,0,729,0,528,3495,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2904,528,528,528,528,3512,528,3514,528,528,528,528,528,528,528,528,57893,57893,58259,57893,57893,57893,57893,57893,57893,58292,57893,57893,60879,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59389,57893,57893,57893,57893,60897,57893,60899,57893,57893,57893,57893,57893,57893,57893,57893,57893,59399,57893,57893,57893,57893,57893,57893,57916,60921,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,60963,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60457,57943,528,4015,528,528,528,528,528,528,528,528,528,528,528,57893,61372,57893,302,306,0,0,0,0,0,0,0,0,0,0,0,0,0,1199,0,0,61374,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,61388,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,58442,61390,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,61404,57943,528,2281,528,528,528,57893,59630,57893,57893,57893,2290,0,2291,0,0,0,0,0,262144,0,0,0,0,0,0,0,0,0,0,663,0,0,666,667,0,61406,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,528,4077,0,0,0,0,0,0,0,4084,0,0,528,528,528,528,4089,0,0,4148,0,4150,528,528,528,528,528,528,528,528,528,528,528,528,1399,528,528,528,0,0,0,313,314,315,0,0,0,0,0,0,0,0,0,0,1240,0,0,0,0,0,0,0,427,0,131072,0,0,0,0,427,0,0,0,0,0,427,459,0,0,0,459,459,459,459,459,459,459,459,459,459,459,459,523,459,523,523,523,459,523,523,523,523,523,523,530,57896,530,57896,530,530,57896,530,530,57919,57896,530,530,57896,57896,57896,57896,57946,57946,57896,57896,57896,57896,57946,57946,57896,621,57896,57973,57919,57896,57896,57896,57896,57896,57896,57896,57919,57919,57896,57896,57946,57896,57896,57896,57973,57973,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,2830,0,0,0,0,0,0,0,0,0,0,0,680,681,0,0,0,57893,57893,58307,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,57916,57916,60350,57916,57916,57916,57916,57916,57916,57916,60915,57916,57916,57916,57916,57916,57916,57916,57916,58942,57916,57916,57916,57916,57916,57916,57916,57916,60389,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,58458,57943,57943,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,528,528,1965,528,528,528,528,528,528,1972,528,528,528,528,528,528,528,3501,528,3503,528,528,528,528,528,528,1360,528,528,528,528,528,528,528,528,528,2887,528,2889,528,528,528,528,57893,59408,57893,57893,57893,57893,57893,57893,59416,57893,57893,57893,57893,57893,57893,57893,58823,57893,57893,57893,57893,57893,57893,57893,57893,58840,57893,57893,57893,57893,57893,57893,57893,59508,57916,57916,57916,57916,57916,57916,59516,57916,57916,57916,57916,57916,57916,57916,57916,58909,57916,57916,57916,58912,57916,57916,57916,57893,57893,57893,60286,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58814,57893,57893,57893,60408,57916,57916,57916,57943,57943,57943,57943,57943,57943,60414,57943,57943,57943,57943,60418,57943,57943,57943,60473,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,0,2292,528,528,528,4093,528,4095,528,528,4097,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61077,57893,57893,57893,57893,61450,57893,61452,57893,57893,61454,57893,57893,57916,57916,57916,57916,57916,57916,58879,57916,57916,57916,57916,57916,58891,57916,57916,57916,57916,57916,61464,57916,61466,57916,57916,61468,57916,57916,57943,57943,57943,57943,57943,57943,60956,57943,57943,57943,57943,57943,60960,57943,57943,57943,57943,61478,57943,61480,57943,57943,61482,57943,57943,0,0,0,0,0,0,0,1766,0,0,1769,0,0,0,0,0,320,320,428,429,131072,436,429,437,439,428,436,437,0,316,437,455,460,473,473,473,486,486,486,486,486,486,486,486,486,486,508,508,521,521,522,522,508,522,522,522,508,522,522,522,522,522,522,531,57897,531,57897,531,531,57897,531,531,57920,57897,531,531,57897,57897,57897,57897,57947,57947,57897,57897,57897,57897,57947,57947,57897,622,57972,57972,57920,57897,57897,57897,57897,57897,57897,57897,57920,57920,57897,57897,57947,57897,57897,57897,57972,57972,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,3151,0,0,0,0,0,3155,0,0,0,0,0,0,814,0,0,0,0,0,0,819,0,0,0,686,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,0,0,368,368,702,0,0,0,0,0,0,0,0,0,0,0,0,0,2315,0,0,0,0,0,734,0,0,0,0,0,0,0,0,0,0,0,0,368,303,0,0,0,823,0,0,0,0,0,0,0,0,0,0,0,0,0,0,775,0,0,1174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,804,0,0,0,0,1216,1174,0,0,0,0,0,0,0,0,0,0,0,0,0,2336,0,0,0,0,0,1281,0,0,0,0,0,0,0,0,0,0,0,0,368,342,296,0,0,0,1295,0,0,0,0,0,0,0,0,0,0,0,0,0,2363,0,0,1307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1229,58773,914,57893,57893,58777,57893,57893,58781,57893,57893,57893,57893,57893,57893,57893,57893,58808,57893,57893,57893,57893,57893,57893,57893,58795,57893,58800,57893,57893,58804,57893,57893,58807,57893,57893,57893,57893,57893,57893,57893,58838,57893,57893,57893,57893,57893,57893,57893,57893,58841,57893,57893,57893,57893,57893,57893,57893,58872,57916,57916,58876,57916,57916,57916,57916,57916,57916,57916,57916,58890,57916,58895,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58428,57943,57943,58444,57916,58899,57916,57916,58902,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59985,57916,57916,57916,1860,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1245,528,528,528,528,1902,528,528,528,528,528,528,528,528,528,1914,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,0,1156,0,0,0,0,327,327,377,0,0,0,0,0,0,0,0,0,1210,0,368,368,0,1213,0,1929,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,896,57893,57893,57893,59345,57893,57893,57893,57893,57893,57893,57893,57893,57893,59357,57893,57893,1,24578,3,155942,156282,296,0,0,0,0,0,302,303,0,57916,57916,59445,57916,57916,57916,57916,57916,57916,57916,57916,57916,59457,57916,57916,57916,57916,57916,59967,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,61474,57943,59541,57943,57943,57943,57943,57943,57943,57943,57943,57943,59553,57943,57943,57943,57943,57943,57943,57943,61152,57943,57943,57943,57943,57943,57943,57943,528,528,528,2763,2764,57893,57893,57893,60112,57943,57943,57943,59591,59592,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59601,57943,57943,57943,57893,59917,59918,59919,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58848,57893,57893,58852,57916,59989,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60002,57943,60072,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60085,57893,57893,60325,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58849,57893,57893,0,0,0,3216,528,528,528,528,528,528,528,528,528,528,528,528,528,2484,528,528,528,528,528,3243,528,528,528,528,528,528,528,528,528,528,528,528,528,2891,528,528,57893,57893,57893,57893,60634,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,2999,0,0,0,61125,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60962,528,528,4092,528,528,528,528,528,528,528,57893,61444,57893,61445,57893,57893,57893,2589,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,61106,57916,57916,57916,57916,57916,57916,57916,57916,59954,57916,57916,59958,57916,57916,57916,59962,57893,61449,57893,57893,57893,57893,57893,57893,57893,57893,57916,61458,57916,61459,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59540,57916,61463,57916,57916,57916,57916,57916,57916,57916,57916,57943,61472,57943,61473,57943,57943,528,528,1715,528,528,1718,57893,57893,59064,57893,57893,59067,1151,0,57943,61477,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,0,1814,0,0,0,0,0,0,0,0,528,1338,528,528,528,528,528,528,528,528,4291,57893,57893,57893,61637,57916,57916,57916,61639,57943,57943,57943,61641,0,0,0,0,3178,0,0,0,0,0,0,0,0,0,0,0,1312,0,0,0,0,326,327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1186,0,0,0,377,0,131072,0,0,0,440,377,0,0,445,451,0,377,461,474,474,474,487,487,487,487,487,487,487,487,487,487,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,509,532,57898,532,57898,532,532,57898,532,532,57921,57898,532,532,57898,57898,57898,57898,57948,57948,57898,57898,57898,57898,57948,57948,57898,532,57898,57898,57921,57898,57898,57898,57898,57898,57898,57898,57921,57921,57898,57898,57948,57898,57898,57898,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,1188,0,1190,1191,0,0,0,1193,1194,0,0,0,0,0,0,0,0,4997120,0,0,5038080,0,0,0,5095424,5103616,0,0,1232,1233,0,0,0,0,0,0,0,0,0,0,0,0,370,0,0,0,1263,1265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1200,0,1317,0,0,0,0,0,0,0,0,0,1303,0,0,0,1331,1193,528,528,1390,528,528,1392,528,528,528,528,1397,528,528,528,528,528,528,3500,528,528,528,528,528,528,528,528,528,528,61443,57893,57893,57893,57893,57893,58773,914,57893,57893,58778,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,2588,2999,0,0,0,58831,57893,57893,57893,57893,58836,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58811,58813,57893,57893,57893,57893,58873,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60380,57916,58900,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58928,57916,57916,58915,57916,57916,57916,57916,57916,57916,57916,58924,57916,57916,58926,57916,57916,57916,57916,57916,59980,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61530,57916,57916,57943,57943,57916,58931,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58950,57916,57916,57916,58956,57916,57916,57916,57916,0,58831,57943,57943,58967,57943,57943,57943,57943,57943,57943,60464,57943,57943,57943,57943,57943,57943,57943,57943,60470,57943,57943,57943,57943,59018,57943,57943,59020,57943,57943,57943,57943,59026,57943,57943,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2778,1963,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,901,0,0,2293,0,2294,0,0,0,0,0,2297,0,0,0,0,0,0,316,317,318,319,320,321,322,323,324,325,57893,59862,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60650,57893,59878,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58816,57893,59947,57916,57916,57916,57916,59951,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,61475,60015,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,61133,57943,60030,57943,57943,57943,57943,60034,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60723,57943,57943,57943,60098,57943,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,1729,0,0,0,0,2844,0,0,0,0,0,2849,0,0,0,0,0,0,0,1852,0,0,0,0,0,0,0,1859,0,57916,57916,57916,60347,57916,60348,57916,57916,57916,57916,57916,57916,57916,57916,57916,58385,57916,57916,57916,57916,58403,57916,0,0,3205,0,0,0,0,0,0,0,0,0,0,0,0,0,2374,0,0,528,528,528,528,3253,528,528,528,528,528,528,528,528,528,528,528,528,1926,528,528,528,57916,60688,57916,57916,57916,57916,57916,57916,57916,60694,57916,57916,57916,57916,57916,57916,58906,58908,57916,57916,57916,57916,57916,57916,57916,57916,59451,57916,57916,57916,57916,57916,57916,57916,57916,59498,57916,57916,57916,57916,57916,57916,57916,57916,60672,57916,57916,57916,57916,57916,57916,57916,57943,57943,60737,57943,57943,57943,57943,57943,57943,57943,60743,57943,57943,57943,57943,57943,57943,57943,61339,57943,57943,57943,528,57893,0,0,0,0,0,0,3671,0,0,0,0,0,0,0,0,0,0,0,0,665,0,0,668,57916,61126,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60961,57943,57916,57916,57916,61239,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60959,57943,57943,57943,57943,61258,57943,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,0,0,0,0,2776,2777,0,528,528,528,528,4018,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58280,57893,57893,57893,57893,57893,57893,57893,57893,61377,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,61223,57916,57916,57916,57916,57916,57916,61393,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60025,57943,57943,57943,57943,57943,57943,57943,61409,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,4241,0,4243,528,528,528,528,528,4094,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59372,57893,57893,57893,61451,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61318,57916,57916,57916,61465,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,61244,57943,57943,57943,57943,57943,57943,61479,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,0,1865,1866,0,0,0,1869,0,0,0,0,0,328,329,330,331,0,0,0,0,0,0,0,0,0,0,1855,1856,0,1857,1858,0,0,376,0,0,0,0,0,328,376,331,375,0,0,0,0,0,0,363,0,0,0,0,0,0,0,0,0,139264,147456,0,0,450560,0,0,0,331,0,0,0,0,0,0,376,0,0,0,0,0,0,0,0,5210112,0,5365760,0,5554176,5570560,5578752,0,462,475,475,475,488,488,488,488,499,501,488,488,499,488,510,510,510,510,510,525,510,510,510,525,510,510,510,510,510,510,533,57899,533,57899,533,533,57899,533,533,57922,57899,533,533,57899,57899,57899,57899,57949,57949,57899,57899,57899,57899,57949,57949,57899,533,57899,57899,57922,57899,57899,57899,57899,57899,57899,57899,57922,57922,57899,57899,57949,57899,57899,57899,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,670,671,0,0,0,0,0,0,0,0,0,0,0,683,684,685,0,0,0,689,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,707,708,0,0,0,0,0,714,0,0,0,718,0,720,0,0,0,0,0,0,727,0,0,0,0,0,1163,0,0,0,0,0,0,0,0,0,0,6152192,0,0,0,6316032,0,731,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1292,778,779,0,0,0,0,0,0,0,0,788,0,790,0,0,0,0,0,1201,0,0,0,0,0,0,0,0,0,0,3675,0,0,0,3830,0,822,0,0,0,0,0,822,822,825,0,0,0,790,0,0,0,0,0,1235,0,1237,0,0,0,0,1242,0,0,0,0,0,1268,0,0,0,0,0,0,0,0,0,0,3675,0,0,3829,0,0,0,0,834,0,0,0,0,0,0,0,788,0,0,0,834,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,302,0,0,306,1,24578,3,0,0,4366336,0,0,0,0,0,65536,303,0,528,848,528,854,528,528,869,528,528,880,528,885,528,528,894,897,902,528,910,528,57893,57893,57893,58267,57893,58273,57893,57893,58288,57893,57893,58299,57893,58304,57893,57893,58313,58316,58321,57893,58329,57893,0,57916,57916,57916,58343,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58430,57943,57943,57943,57943,57943,59547,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61417,57943,0,0,0,58349,57916,57916,58364,57916,57916,58375,57916,58380,57916,57916,58389,58392,58397,57916,58405,57916,0,0,0,0,58304,57943,57943,57943,58418,57943,58424,57943,57943,58439,57943,1906,528,528,528,528,59349,57893,57893,57893,57893,0,0,0,0,0,3140,0,0,3143,3144,0,0,3147,3148,0,57943,58450,57943,58455,57943,57943,58464,58467,58472,57943,58480,57943,848,528,528,1142,902,528,0,57893,58267,57893,58492,58321,57893,155942,1151,0,0,0,0,0,0,364,365,366,367,0,0,368,0,296,0,0,0,0,1176,0,0,0,0,0,0,0,1183,0,0,0,0,0,0,3165,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,421,0,0,1203,1204,0,0,0,0,1208,0,0,0,368,368,0,0,0,0,0,0,0,0,0,0,0,0,713,0,0,1231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1244,0,0,0,1248,0,0,1200,0,0,0,0,0,749,0,0,0,0,0,0,0,0,0,0,0,726,0,0,0,0,528,1347,528,528,528,528,528,528,1362,528,528,528,1367,528,528,528,528,528,2464,528,528,528,528,528,528,528,528,528,528,528,1910,528,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58786,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,59944,57916,57916,57893,57893,57893,58801,57893,57893,57893,58806,57893,57893,57893,57893,57893,57893,57893,57893,58809,57893,57893,57893,57893,57893,57893,57893,57893,57893,58854,57893,57893,57893,57893,57893,57893,58865,57893,50676,58773,990,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59537,57943,57943,528,1351,528,1408,528,528,58790,57893,57893,58847,57893,57893,1151,0,57916,57916,57916,58901,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58391,57916,57916,57916,57916,57916,57916,58918,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58396,57916,57916,57916,57916,57916,57916,58933,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58949,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58431,57943,57943,57943,57943,57943,60063,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60428,57943,60430,57943,57943,57943,57943,58975,57943,57943,57943,57943,57943,57943,58990,57943,57943,57943,58995,57943,2280,528,2282,528,528,59629,57893,59631,57893,57893,0,0,0,0,0,0,1298,0,0,0,0,1303,0,0,0,0,59055,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,1724,0,1760,0,0,1763,1764,1765,0,1767,1768,0,0,0,0,1773,0,0,0,0,3192,0,0,0,0,3197,0,0,0,0,0,0,0,2368,2369,0,0,0,0,0,0,0,692,0,0,0,0,0,0,699,368,1807,0,0,0,0,0,0,0,0,1816,1817,0,0,0,0,0,0,373,0,0,0,0,0,0,0,0,0,139264,147456,0,0,352256,0,0,0,1823,0,0,1825,0,0,0,0,0,0,0,0,1829,1830,1831,0,1870,0,0,0,1888,1740,1740,1890,528,1892,528,1893,1894,528,1896,528,528,528,1900,528,528,528,528,528,528,528,528,528,1913,528,528,0,0,0,0,0,0,57893,60278,57893,57893,57893,57893,57893,57893,0,2592,57916,57916,57916,57916,57916,57916,57916,57916,59969,57916,57916,57916,57916,57916,57916,59974,57916,528,528,1917,528,528,528,528,1921,528,1923,528,528,528,528,528,528,1393,528,1395,528,528,528,528,528,528,528,872,528,528,528,528,528,528,528,528,528,3710,528,528,528,528,528,528,528,528,528,528,1933,1934,1936,528,528,528,528,528,528,528,1944,1945,528,1947,528,528,1950,1951,528,528,528,528,528,528,528,1959,528,1961,528,1964,528,528,528,528,528,1971,528,528,1973,528,528,528,528,528,528,3855,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58279,57893,57893,57893,57893,57893,528,528,528,528,58773,0,59332,57893,59334,57893,59335,57893,59337,57893,59339,57893,302,306,0,0,0,0,3141,0,0,0,3145,0,0,0,0,0,0,2832,0,0,0,0,0,0,0,0,0,2835,0,0,0,0,0,0,57893,57893,59343,57893,57893,57893,57893,57893,57893,57893,57893,57893,59356,57893,57893,57893,0,0,0,0,57916,57916,57916,57916,59942,57916,57916,57916,57916,57916,59515,57916,57916,59517,57916,57916,57916,57916,57916,57916,57916,0,57893,57943,57943,58966,57943,57943,58970,57943,57893,59360,57893,57893,57893,57893,59364,57893,59366,57893,57893,57893,57893,57893,57893,57893,58839,57893,57893,58846,57893,57893,57893,57893,57893,57893,57893,57893,59376,59377,59379,57893,57893,57893,57893,57893,57893,57893,59387,59388,57893,2770,2291,0,2771,2294,0,0,0,0,0,0,0,0,0,0,770,0,0,0,0,0,59390,57893,57893,59393,59394,57893,57893,57893,57893,57893,57893,57893,59402,57893,59404,57893,2770,2291,0,2771,2294,0,0,0,0,0,0,2775,0,0,0,0,0,784,0,0,679,0,0,0,0,0,0,0,660,661,0,0,0,0,0,0,0,384,0,139264,147456,0,406,0,0,406,59407,57893,57893,57893,57893,57893,59415,57893,57893,59417,57893,57893,57893,57893,57893,57893,0,0,57916,57916,57916,57916,60660,57916,57916,57916,57916,59443,57916,57916,57916,57916,57916,57916,57916,57916,57916,59456,57916,57916,57916,57916,57916,58878,57916,57916,57916,58882,57916,57916,58893,57916,57916,58897,59460,57916,57916,57916,57916,59464,57916,59466,57916,57916,57916,57916,57916,57916,57916,57916,59467,59468,57916,57916,57916,57916,57916,57916,57916,57916,59476,59477,59479,57916,57916,57916,57916,57916,57916,57916,59487,59488,57916,59490,57916,57916,59493,59494,57916,57916,57916,57916,57916,57916,57916,59502,57916,59504,57916,59507,57943,57943,57943,59560,57943,59562,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60987,57943,57943,57943,59572,59573,59575,57943,57943,57943,57943,57943,57943,57943,59583,59584,57943,57943,59586,57943,57943,57943,57943,57943,60731,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60081,57943,57943,57943,57943,57943,59589,59590,57943,57943,57943,57943,57943,57943,57943,59598,57943,59600,57943,59603,57943,57943,57943,57943,57943,60739,57943,57943,57943,60742,57943,60744,57943,57943,57943,57943,57943,57943,60740,57943,57943,57943,57943,57943,57943,57943,57943,57943,59023,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59611,57943,57943,59613,57943,57943,57943,57943,57943,57943,57943,57943,57943,60039,57943,57943,57943,57943,57943,57943,0,0,2293,0,2294,0,0,0,0,0,0,0,0,0,0,2301,0,0,2304,2305,0,0,0,2309,0,0,0,0,0,0,0,0,0,6406144,5357568,0,5505024,0,0,0,0,2352,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1276,0,1825,0,2365,0,0,0,0,0,0,0,0,2372,0,0,2375,0,0,0,0,3217,528,528,528,528,528,528,528,528,528,528,528,528,2929,528,528,528,0,2378,0,0,0,0,0,0,2385,0,2387,0,0,0,0,0,0,403,0,0,0,0,0,0,0,0,332,333,0,0,0,0,0,0,0,0,334,335,336,0,0,0,0,0,0,0,0,2396,0,0,0,0,0,0,0,0,0,0,0,0,697,698,0,368,2406,0,0,0,0,0,0,0,0,0,0,0,0,0,2417,0,0,0,0,3433,0,0,0,0,0,0,0,0,0,0,0,786,0,0,0,528,2433,528,2435,528,528,528,528,528,528,2443,528,2445,528,528,528,528,528,1414,528,528,528,528,528,528,528,528,528,528,1956,528,528,528,528,528,528,528,528,2451,528,528,528,528,528,528,528,528,528,528,528,528,528,2902,528,528,2473,528,528,528,528,528,528,2480,528,528,528,528,528,528,528,528,1906,528,528,528,528,528,528,528,57893,57893,57893,59864,57893,59866,57893,57893,57893,57893,57893,57893,59874,57893,59876,57893,2770,2291,0,2771,2294,0,0,2773,0,0,0,0,0,0,0,0,2359296,418,418,0,0,0,0,0,57893,57893,59904,59905,57893,57893,57893,57893,57893,57893,59912,57893,57893,57893,57893,57893,57893,60885,57893,60887,57893,57893,57893,57893,57893,57893,57893,59397,57893,57893,59400,57893,57893,57893,57893,57893,59930,59931,57893,0,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,58910,57916,57916,57916,57916,57916,57916,59963,57916,59965,57916,57916,57916,57916,57916,57916,57916,59971,57916,57916,57916,57916,57916,57916,60914,57916,57916,57916,57916,57916,60918,57916,57916,57916,57916,60016,57916,57916,60019,60020,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,4239,0,0,0,0,528,60046,57943,60048,57943,57943,57943,57943,57943,57943,57943,60054,57943,57943,57943,57943,57943,57943,58979,58986,57943,57943,57943,57943,57943,57943,57943,57943,57943,60079,57943,57943,57943,57943,57943,57943,57943,60099,57943,57943,60102,60103,57943,2435,528,2762,528,528,59866,57893,60111,57893,57893,57893,57893,57893,61083,57893,57893,57893,57893,57893,57893,57893,57893,61089,57893,57893,57893,57893,57893,61219,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,1272,57893,57943,57943,57943,57943,57943,57943,57943,528,3132,528,528,528,57893,60479,57893,57893,0,0,2829,0,0,0,0,2833,0,0,0,0,0,0,0,0,312,311,0,0,0,311,311,312,2905,528,528,528,528,2909,528,528,528,2914,528,528,528,528,528,528,1920,528,528,528,528,528,528,528,528,528,1908,528,528,528,528,528,528,528,528,2922,528,528,528,528,528,528,528,2927,528,528,528,528,528,528,3940,528,528,528,528,528,528,3946,528,528,60284,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59406,60296,57893,60298,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59403,57893,57893,57893,60324,57893,57893,57893,57893,57893,57893,57893,57893,60332,57893,57893,57893,57893,57893,57893,61096,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,60703,57916,57916,57943,57943,57943,57943,57943,57943,57943,58466,57943,57943,57943,57943,528,528,528,896,57893,57893,57893,60338,57893,57893,57893,57893,57893,57893,57893,0,2999,0,0,0,0,0,1323,0,0,0,0,0,0,0,0,0,0,2836,2837,0,0,0,0,57916,60382,57916,57916,57916,57916,60386,57916,57916,57916,60391,57916,57916,57916,57916,57916,57916,60926,57916,57916,57916,57916,57916,57916,57916,57916,57916,59956,57916,57916,57916,57916,57916,57916,57916,57916,57916,60399,57916,57916,57916,57916,57916,57916,57916,57916,60405,57916,57916,57916,57916,57916,59992,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58925,57916,57916,57916,57916,57916,57943,57943,57943,57943,60447,57943,57943,57943,57943,60451,57943,57943,57943,60456,57943,57943,528,1352,528,528,1717,528,58791,57893,57893,57893,59066,57893,1151,0,0,0,3177,0,0,0,0,0,0,0,0,0,0,0,0,0,2390,0,0,528,528,528,528,3232,528,528,528,528,528,528,528,528,528,528,528,528,1941,528,528,528,528,528,3251,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2892,528,57893,57893,57893,57893,60643,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,3442,3443,0,3444,0,3446,0,0,0,0,3448,0,0,0,0,0,0,737,0,0,0,0,0,0,0,0,0,2360,0,0,0,0,0,2364,3467,0,0,0,0,3472,3473,0,3475,0,0,3478,0,0,0,3481,528,528,528,528,3498,528,528,528,528,528,3504,528,528,528,528,528,528,4020,528,4022,4023,528,4025,528,57893,57893,57893,57893,57893,57893,60882,57893,57893,57893,57893,57893,60888,57893,57893,60891,57893,57893,57893,0,0,0,0,57916,57916,57916,59941,57916,59943,57916,57916,57916,57916,57916,60006,60007,60008,57916,57916,57916,57916,57916,57916,57916,57916,58943,57916,57916,58947,57916,57916,57916,57916,57916,57916,57916,57916,60924,57916,57916,57916,57916,57916,60930,57916,57916,60933,57916,57916,57893,57943,57943,57943,57943,57943,59532,57943,57943,57943,57943,57943,59538,57943,60991,57943,528,528,3650,57893,57893,60997,0,0,0,0,0,0,3659,0,0,0,0,3445,0,0,0,0,0,0,0,0,0,0,0,2812,0,0,2815,0,0,3662,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1306,0,3669,0,0,0,0,0,0,0,0,0,0,0,0,3676,0,3678,528,528,528,528,3705,528,528,528,528,528,528,528,528,528,528,528,528,2458,528,528,528,528,528,3715,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2903,528,528,57893,57893,57893,61071,57893,57893,57893,57893,57893,57893,57893,61076,57893,57893,57893,0,0,0,0,57916,57916,59940,57916,57916,57916,57916,57916,57916,59981,57916,57916,57916,57916,57916,57916,57916,57916,57916,59453,57916,57916,57916,57916,57916,57916,57893,57893,57893,57893,61095,57893,57893,57893,57893,57893,57893,57916,57916,57916,61100,57916,0,0,0,0,57893,57943,57943,57943,57943,57943,57943,58432,57943,57943,57943,57943,57943,60075,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59048,57943,57943,57943,57943,61134,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61145,3832,0,0,3835,0,0,0,0,0,0,0,0,0,0,0,0,772,0,0,0,57916,57916,61238,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61142,57943,57943,57943,3924,0,3675,0,0,0,0,0,3932,0,0,0,0,0,0,0,312,0,0,0,0,0,311,0,311,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,61301,57893,57893,57893,57893,57893,59363,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60315,57893,57893,57893,57893,60319,57893,57893,57943,61333,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,57893,0,0,0,0,0,1736,0,0,0,0,0,0,0,0,0,0,2334720,0,2334720,0,0,0,0,0,0,4079,0,0,0,0,0,0,0,528,528,528,528,528,528,528,4157,528,4159,528,528,4091,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,61448,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,61317,57916,61462,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,60028,57943,61476,57943,57943,57943,57943,57943,57943,57943,57943,57943,4141,4142,0,0,0,4145,528,528,61507,61508,61509,57893,57893,57893,61512,57893,61514,57893,57893,57893,57893,61519,61520,61521,61522,57916,57916,57916,61525,57916,61527,57916,57916,57916,57916,61532,61533,61534,61535,57943,57943,57943,61538,57943,61540,57943,57943,57943,57943,61545,0,0,0,0,0,0,3194,0,0,0,3198,0,3200,0,0,0,528,4245,528,528,528,4249,57893,57893,61595,57893,57893,57893,61599,57893,57916,57916,57893,57943,59529,57943,57943,57943,57943,57943,57943,57943,59536,57943,57943,57943,57943,57943,59040,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,3412,528,57893,60759,57893,61601,57916,57916,57916,61605,57916,57943,57943,61607,57943,57943,57943,61611,57943,0,0,0,0,0,2342912,0,0,0,0,0,0,0,0,0,4358144,4359058,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,413,0,0,0,0,0,0,413,139264,147456,0,0,0,422,0,0,0,0,3456,0,0,0,0,0,0,0,0,0,0,0,749,0,0,0,0,372,372,0,430,131072,372,430,430,0,333,372,430,0,0,430,456,430,0,0,0,430,495,495,495,500,495,495,495,500,495,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,430,534,57900,534,57900,534,534,57900,534,534,57923,57900,534,534,57900,57900,57900,57900,57950,57950,57900,57900,57900,57900,57950,57950,57900,534,57900,57900,57923,57900,57900,57900,57900,57900,57900,57900,57923,57923,57900,57900,57950,57900,57900,57900,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,841,528,528,528,528,528,528,873,528,528,528,528,528,528,528,528,1939,528,528,528,528,528,528,528,0,0,1175,0,0,0,0,0,0,0,0,0,0,0,0,0,2416,0,0,0,0,0,1296,0,1175,0,0,0,0,0,0,0,0,0,0,2371,0,0,0,0,0,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,58784,57893,57893,57893,57893,57893,57893,61210,57893,57893,57893,57893,57893,57893,57893,57893,57893,60626,57893,57893,60629,57893,57893,57893,58796,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59424,57943,58973,57943,57943,57943,57943,57943,58985,57943,57943,57943,57943,57943,57943,57943,57943,57943,60053,57943,57943,57943,57943,57943,57943,0,1873,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1743,1744,57943,60460,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60726,57943,61135,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61257,528,528,528,61636,57893,57893,57893,61638,57916,57916,57916,61640,57943,57943,57943,0,0,0,0,3471,0,0,0,0,0,0,0,0,0,0,0,1868,0,0,0,0,0,0,0,431,131072,0,431,431,0,0,0,431,446,0,431,0,0,0,0,3663,0,0,0,0,0,0,0,0,0,0,0,1289,0,0,0,0,431,476,476,476,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,535,57901,535,57901,535,535,57901,535,535,57924,57901,535,535,57901,57901,57901,57901,57951,57951,57901,57901,57901,57901,57951,57951,57901,535,57901,57901,57924,57901,57901,57901,57901,57901,57901,57901,57924,57924,57901,57901,57951,57901,57901,57901,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,528,528,528,528,58773,1986,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59353,57893,57893,57893,57893,57893,0,0,0,2327,0,0,0,0,0,0,0,0,0,0,0,0,773,0,0,776,2351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1774,57893,57893,59892,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59900,57893,57893,0,0,0,2805,0,0,0,0,0,0,0,0,0,0,0,0,800,0,0,528,3175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1790,0,0,3431,0,0,0,0,0,3437,0,0,0,0,0,0,0,331,0,139264,147456,0,0,0,0,0,3482,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1372,57893,57893,57893,57893,60883,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60893,60908,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60396,60935,57916,57916,57916,57916,57916,57916,57916,57916,57916,60944,57916,57916,60947,57916,57916,57893,59528,57943,59530,57943,59531,57943,59533,57943,59535,57943,57943,57943,59539,57916,60950,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59012,57943,57943,60977,57943,57943,57943,57943,57943,57943,57943,57943,57943,60986,57943,57943,60989,57943,57943,57943,57943,57943,60966,57943,57943,57943,57943,57943,60972,57943,57943,60975,57943,57943,57943,57943,57943,60750,57943,57943,57943,57943,528,528,528,57893,57893,57893,0,0,0,0,0,0,0,3660,528,528,528,528,3716,528,3718,528,528,528,528,528,528,528,528,528,528,3491,528,528,528,528,528,528,57893,57893,61070,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59385,57893,57893,57893,57893,57893,57893,57893,61082,57893,57893,57893,57893,57893,57893,57893,57893,61088,57893,61090,57943,61146,57943,61148,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,57893,0,0,0,528,528,528,528,3854,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58277,57893,57893,58293,57893,57893,61216,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61229,57916,57916,57916,57916,57916,57916,57916,57916,57916,61235,57916,57916,57916,57916,57916,61467,57916,57916,61469,57916,57943,57943,57943,57943,57943,57943,57943,60449,57943,57943,60453,57943,57943,57943,57943,57943,61248,57943,57943,57943,57943,57943,57943,57943,57943,57943,61254,57943,57943,57943,57943,57943,57943,58980,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60734,57943,57943,57943,57943,57943,57916,61625,61626,57916,57916,57943,57943,61629,61630,57943,57943,0,0,0,0,528,528,528,528,4275,528,57893,57893,57893,57893,61623,57893,57916,0,761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1789,0,761,0,0,0,0,0,761,761,0,0,828,0,0,0,0,0,0,738,0,644,738,0,742,743,644,0,0,528,528,852,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2919,528,528,528,528,911,57893,57893,57893,57893,58271,57893,57893,57893,57893,57893,57893,57893,58862,57893,57893,57893,50676,58773,990,57916,58871,58406,0,0,0,0,57893,57943,57943,57943,57943,58422,57943,57943,57943,57943,57943,57943,58981,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60985,57943,57943,57943,57943,57943,528,911,0,58271,57893,57893,57893,57893,58330,155942,1151,0,0,0,0,0,0,751,0,0,0,0,0,0,0,0,0,139264,147456,0,0,319,0,0,0,1279,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2337,0,57943,59035,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59028,57943,528,528,528,1983,58773,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59418,57893,57893,57893,57893,57893,57893,57893,59427,50676,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60377,57916,57916,57916,57916,59527,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60746,57943,59623,528,528,528,528,528,57893,57893,57893,57893,57893,0,0,0,0,0,0,0,3142,0,0,0,0,0,0,0,752,0,0,0,0,0,0,758,0,59861,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59889,57916,57916,57916,57916,59950,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60675,57916,57916,60678,57943,57943,57943,57943,60033,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60042,57943,57943,57943,3812,528,57893,61158,57893,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,386,57916,57916,57916,57916,61240,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61255,57943,57943,57943,57943,61259,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,0,0,0,3146,0,0,0,0,0,334,0,0,0,0,0,0,0,0,0,0,0,334,385,387,0,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,0,3672,0,0,0,0,0,0,0,0,0,0,0,1786,0,0,0,0,334,0,0,0,0,0,0,0,0,0,0,0,0,334,0,0,139264,147456,0,0,0,0,0,425,425,0,0,131072,425,0,0,0,0,425,0,447,0,0,425,335,477,477,477,490,490,490,490,490,490,490,490,490,490,511,519,519,519,519,519,526,519,519,519,526,519,519,519,519,519,519,536,57902,536,57902,536,536,57902,536,536,57925,57902,536,536,57902,57902,57902,57902,57952,57952,57902,57902,57902,57902,57952,57952,57902,536,57902,57902,57925,57902,57902,57902,57902,57902,57902,57902,57925,57925,57902,57902,57952,57902,57902,57902,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,780,0,0,0,0,0,0,0,0,0,0,0,0,0,2789,2790,0,0,795,0,0,0,0,0,0,0,799,0,0,0,0,0,0,0,2330,0,0,0,0,0,0,0,0,1238,0,0,0,0,0,0,0,819,0,0,0,0,0,819,819,0,0,0,0,799,0,0,0,0,0,1750,0,0,0,0,0,0,0,0,0,0,2850,0,0,0,0,0,0,0,0,835,795,0,0,835,0,0,0,0,0,0,0,528,528,528,4154,528,528,528,528,528,528,528,3234,528,528,528,528,528,528,528,528,528,3942,528,528,528,528,528,528,528,528,528,855,528,864,528,528,528,528,528,528,528,528,528,528,528,3944,528,528,528,528,528,528,528,912,57893,57893,57893,57893,57893,58274,57893,58283,57893,57893,57893,57893,57893,59395,59396,57893,57893,57893,57893,57893,57893,57893,57893,57893,59897,57893,57893,57893,57893,57893,57893,58350,57916,58359,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58401,57916,57916,58407,0,0,0,0,57893,57943,57943,57943,57943,57943,58425,57943,58434,57943,57943,528,1354,528,528,528,528,58793,57893,57893,57893,57893,57893,1151,0,1143,912,0,57893,57893,57893,57893,58493,58331,155942,1151,0,0,0,0,0,0,790,0,802,0,816,0,0,0,0,810,1246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1821,0,0,0,1308,0,0,0,0,0,0,0,0,1313,0,0,0,0,0,1796,0,0,0,0,0,0,0,0,0,0,1211,368,368,0,0,1214,528,528,528,1350,528,528,528,528,528,528,528,528,528,1369,528,528,0,0,0,2933,0,1986,57893,57893,57893,57893,57893,57893,57893,57893,59884,57893,57893,57893,57893,57893,57893,57893,528,1409,528,528,1413,528,528,528,528,528,1420,528,528,528,1427,528,528,0,57893,57893,57893,58315,57893,57893,155942,1151,0,0,0,0,0,0,0,6324224,4358144,4358144,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6119424,4358144,6168576,4358144,4358144,4358144,4358144,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58789,57893,57893,57893,57893,57893,61379,57893,61381,61382,57893,61384,57893,61386,57916,57916,57916,57916,57916,60385,57916,57916,57916,57916,57916,57916,60393,57916,57916,57916,57916,57916,60691,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59484,57916,57916,57916,57916,57916,57893,57893,58818,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59914,57893,57893,57916,58954,57916,57916,57916,58961,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,61140,57943,57943,57943,57943,57943,57943,57943,57943,60969,57943,60971,57943,57943,57943,57943,57943,57943,57943,57943,59038,57943,57943,59042,57943,57943,57943,57943,57943,59049,57943,57943,57943,528,528,57893,57893,0,0,0,0,0,0,0,0,3923,59056,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,0,0,0,0,4003,3675,0,0,0,0,0,0,0,0,528,528,528,528,528,528,528,1345,1844,1845,0,1847,0,0,0,0,0,0,0,0,0,0,0,0,806,0,0,0,0,1861,0,1863,0,0,0,0,0,0,0,0,0,0,0,0,839,0,0,528,0,0,0,1875,0,0,0,0,0,0,0,0,0,0,0,0,990,0,0,0,0,0,1861,0,0,0,0,0,528,528,528,528,528,528,528,528,3223,528,528,528,528,528,528,1949,528,528,528,528,528,528,528,528,1958,528,528,528,528,528,2478,528,528,528,528,528,528,528,528,528,528,1421,528,528,528,528,528,528,528,528,1967,528,528,528,528,528,528,528,528,528,528,1977,1979,57893,57893,59392,57893,57893,57893,57893,57893,57893,57893,57893,59401,57893,57893,57893,57893,57893,59414,57893,57893,57893,57893,57893,57893,59420,57893,57893,57893,57893,57893,59410,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59421,59423,57893,57893,57893,57893,57893,61453,57893,57893,61455,57893,57916,57916,57916,57916,57916,57916,59482,57916,57916,57916,57916,57916,57916,57916,57916,57916,59983,57916,57916,57916,57916,57916,57916,57916,59492,57916,57916,57916,57916,57916,57916,57916,57916,59501,57916,57916,57916,57916,57916,57916,60940,60942,57916,57916,57916,57916,60946,57916,60948,60949,57916,59510,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59521,59523,57916,57916,57916,57916,57916,61570,57916,61571,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,60416,57943,57943,57943,59588,57943,57943,57943,57943,57943,57943,57943,57943,59597,57943,57943,57943,57943,57943,57943,57943,59043,57943,57943,57943,57943,57943,57943,57943,57943,58988,57943,57943,57943,57943,57943,57943,57943,59606,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59617,59619,57943,57943,57943,528,528,57893,57893,0,0,0,0,0,3921,0,0,0,0,0,1812,0,0,0,0,0,0,0,0,0,0,1839,0,0,0,0,0,0,0,2340,0,0,0,0,0,2346,0,0,0,0,0,0,0,372,0,0,0,380,382,0,0,0,0,0,0,2354,0,0,0,0,0,0,0,0,2362,0,0,0,0,0,1835,0,0,0,0,0,0,0,0,0,0,0,0,528,528,528,528,528,2424,528,528,528,528,528,528,528,528,528,528,3722,528,528,528,528,528,528,528,2436,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2930,528,528,528,2463,528,528,528,528,528,528,528,528,528,528,528,528,528,528,3240,3241,0,0,0,57893,57893,57893,57893,57893,57893,59855,57893,57893,57893,57893,57893,57893,0,0,57916,60658,57916,57916,57916,57916,57916,57916,58940,57916,57916,57916,57916,57916,57916,57916,57916,57916,59518,57916,57916,57916,57916,57916,57916,57916,60003,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58951,57916,57916,57916,57916,60018,57916,57916,57916,57943,57943,57943,57943,57943,57943,60027,57943,57943,528,1355,528,528,528,528,58794,57893,57893,57893,57893,57893,1151,0,57943,60086,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59570,57943,57943,57943,57943,60101,57943,57943,57943,2436,528,528,528,528,59867,57893,57893,57893,0,0,0,0,57916,59939,57916,57916,57916,57916,57916,57916,57916,60927,57916,60929,57916,57916,57916,57916,57916,57916,0,2793,0,2795,0,0,0,0,0,0,0,0,2800,0,0,2803,0,0,2818,0,0,0,0,0,0,0,2826,0,0,0,0,2828,0,2842,0,0,2845,0,0,0,0,0,0,0,0,0,0,2855,0,0,528,2869,528,528,528,528,528,528,528,528,528,528,528,528,528,2918,528,528,57893,57893,57893,57893,60327,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,61099,57916,57916,60336,57893,57893,57893,60339,57893,57893,57893,57893,57893,57893,0,0,0,0,0,0,2772,0,0,0,0,0,0,0,0,2359,0,0,0,0,0,0,0,0,57916,60345,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58894,57916,57916,57943,60433,57943,57943,57943,57943,57943,57943,57943,60438,57943,57943,57943,57943,57943,57943,57943,59549,57943,57943,57943,57943,57943,57943,57943,57943,57943,60067,57943,57943,57943,57943,57943,57943,57943,60444,57943,57943,57943,57943,57943,57943,57943,60452,57943,57943,57943,57943,57943,57943,57943,59595,57943,57943,57943,57943,57943,57943,57943,57943,57943,61543,57943,57943,0,0,0,0,60459,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60468,57943,57943,57943,528,528,57893,57893,0,0,0,3919,0,0,3922,0,0,60471,57943,57943,57943,57943,57943,57943,3131,528,528,528,528,60478,57893,57893,57893,0,0,0,0,59938,57916,57916,57916,57916,57916,57916,57916,59946,3204,0,0,0,3206,0,0,0,0,0,0,0,0,0,0,0,1818,0,0,0,0,528,528,528,528,3244,528,528,528,528,528,528,528,528,528,528,3249,528,528,528,3252,528,3254,528,528,528,528,528,528,528,3258,528,528,0,0,2503,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,59858,57893,57893,57893,60632,57893,57893,57893,57893,60635,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59924,57893,59926,57893,57893,57893,57893,60641,57893,57893,57893,60644,57893,60646,57893,57893,57893,57893,57893,57893,57893,57893,58843,57893,57893,57893,57893,57893,57893,57893,60651,57893,57893,57893,57893,57893,0,0,57916,57916,57916,60659,57916,57916,57916,57916,57916,58905,57916,58907,57916,57916,57916,57916,57916,57916,57916,57916,60362,57916,57916,57916,57916,57916,57916,57916,57916,60664,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59458,57916,57916,57916,60680,60681,57916,57916,57916,57916,60684,57916,57916,57916,57916,57916,57916,57916,57943,60022,57943,57943,57943,57943,57943,57943,57943,57943,61153,57943,57943,57943,57943,57943,57943,528,57916,57916,57916,57916,60690,57916,57916,57916,60693,57916,60695,57916,57916,57916,57916,57916,57916,61105,57916,57916,57916,57916,57916,57916,57916,57916,57916,58944,57916,57916,57916,57916,57916,58952,57916,57916,57916,60700,57916,57916,57916,57916,57916,57943,57943,57943,60708,57943,57943,57943,528,528,57893,57893,3918,0,0,0,3920,0,0,0,0,0,0,3695,0,3697,528,528,528,528,528,528,528,1905,528,528,528,528,528,528,528,528,2926,528,528,528,528,528,528,528,57943,57943,60713,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61144,57943,57943,57943,57943,60729,60730,57943,57943,57943,57943,60733,57943,57943,57943,57943,57943,57943,57943,60036,57943,60038,57943,57943,57943,57943,57943,57943,57943,58984,57943,58989,57943,57943,58993,57943,57943,58996,57943,57943,57943,57943,60749,57943,57943,57943,57943,57943,528,528,528,57893,57893,57893,0,0,0,0,0,0,0,0,0,0,0,3417,0,0,3420,3421,0,0,0,0,0,0,0,0,0,0,0,1827,0,0,0,0,528,528,528,528,3486,528,528,528,528,3490,528,528,528,528,528,528,1952,1953,528,528,528,528,528,528,528,528,528,3517,528,528,528,528,528,57893,528,3496,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2931,528,3510,528,528,528,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,61204,57893,57893,57893,60870,57893,57893,57893,57893,60874,57893,57893,57893,57893,57893,57893,57893,58863,58864,57893,57893,50676,58773,990,57916,57916,60880,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59901,57893,60895,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58830,57893,57916,57916,57916,57916,60912,57916,57916,57916,57916,60916,57916,57916,57916,57916,57916,57916,58962,0,58963,58964,57943,57943,57943,57943,57943,58971,57916,60922,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59472,57916,57916,57916,60937,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58927,57916,58929,57916,57943,57943,57943,57943,60954,57943,57943,57943,57943,60958,57943,57943,57943,57943,57943,57943,58982,57943,57943,57943,57943,58992,57943,57943,57943,57943,57943,57943,60964,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61256,57943,57943,57943,57943,60979,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60974,57943,60976,528,528,57893,57893,57893,0,0,0,0,3819,0,0,0,0,0,3822,0,528,528,528,528,528,528,3844,528,528,528,528,528,528,528,528,2481,528,528,528,528,528,2485,2486,57893,57893,61206,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59927,57893,57893,57893,57893,61217,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,61225,0,0,3675,0,0,0,0,0,0,0,0,0,0,0,3934,0,0,0,0,4080,0,0,0,0,0,0,528,528,528,528,528,528,4211,528,4212,528,528,528,57893,57893,57893,57893,57893,57893,61562,57893,61563,57893,57893,57893,57893,57916,57943,4313,4314,61659,61660,61661,0,528,57893,57916,57943,0,0,0,0,0,2382,0,0,0,0,0,0,0,0,0,0,4284416,0,0,0,0,0,57943,57943,61578,57943,61579,57943,57943,57943,57943,0,0,0,0,0,0,528,528,4273,4274,528,528,57893,57893,61621,61622,57893,57893,57916,0,528,528,57893,57893,57916,57916,57943,57943,4303,4304,61649,61650,61651,0,528,528,528,528,528,528,528,528,528,2428,528,528,528,528,528,528,4096,528,528,4098,57893,57893,57893,57893,57893,57893,58861,57893,57893,57893,57893,50676,58773,990,57916,57916,537,57903,537,57903,537,537,57903,537,537,57926,57903,537,537,57903,57903,57903,57903,57953,57953,57903,57903,57903,57903,57953,57953,57903,537,57903,57903,57926,57903,57903,57903,57903,57903,57903,57903,57926,57926,57903,57903,57953,57903,57903,57903,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,57893,57893,58833,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60649,57893,57893,57916,59948,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59489,57916,57943,60031,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60044,57943,0,384,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2404,0,0,340,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2854,0,0,0,406,0,0,0,0,0,0,0,0,0,0,0,0,406,0,0,0,432,131072,0,432,432,0,0,0,432,0,452,432,0,0,0,0,4206,0,528,528,528,528,528,528,528,528,528,528,528,528,2430,528,528,432,478,478,478,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,538,57904,538,57904,538,538,57904,538,538,57927,57904,538,538,57904,57904,57904,57904,57954,57954,57904,57904,57904,57904,57954,57954,57904,538,57904,57904,57927,57904,57904,57904,57904,57904,57904,57904,57927,57927,57904,57904,57954,57904,57904,57904,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,661,0,661,0,0,0,0,826,0,0,0,661,0,0,0,0,0,5218304,0,0,0,0,5799936,0,5881856,0,0,0,0,0,0,5029888,5038080,0,0,5103616,5201920,0,0,0,0,0,0,1878,0,0,0,0,0,0,0,0,0,2296,0,0,0,0,0,0,842,528,528,528,857,528,528,528,528,528,528,528,528,528,528,898,528,528,528,528,57893,57893,58260,57893,57893,57893,58276,57893,57893,57893,57893,57893,57893,61220,57893,57893,57916,57916,57916,57916,57916,57916,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,59022,57943,59024,57943,57943,57943,57943,57943,57916,58352,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58393,57916,57916,57916,57916,57916,60913,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61471,57943,57943,57943,57943,57943,1160,0,0,0,0,0,0,0,0,0,1167,1168,0,0,0,0,0,0,1299,0,0,0,0,0,0,0,0,528,528,1340,528,528,528,528,528,0,0,0,1249,0,0,0,0,0,0,0,0,0,1260,1261,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,2415,0,0,2418,528,528,528,528,1351,1358,528,528,528,528,528,528,528,528,1371,528,528,0,57893,57893,57893,58317,57893,57893,294,1151,0,0,1155,0,0,0,0,0,5857280,0,6463488,4939776,0,0,5455872,0,0,0,0,0,5554176,5570560,5578752,5619712,5668864,0,0,0,5791744,5816320,0,5857280,0,1373,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1406,1408,528,528,528,528,528,528,528,528,528,528,528,1423,528,528,528,528,528,2910,528,528,528,528,528,528,2917,528,528,528,528,528,2490,528,528,528,528,528,528,528,528,528,0,0,57893,57893,57893,57893,57893,60612,57893,60613,57893,57893,57893,58773,914,57893,58776,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58790,58797,57893,57893,57893,57893,57893,57893,57893,57893,58810,57893,58812,57893,57893,57893,57893,57893,59867,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59872,57893,57893,57893,57893,57893,57893,58832,57893,58834,57893,57893,57893,57893,57893,57893,57893,58847,57893,57893,57893,57893,57893,59881,57893,57893,57893,57893,57893,57893,57893,57893,59888,57893,57916,57916,57916,58957,57916,57916,57916,0,57893,57943,58965,57943,57943,57943,57943,57943,57943,59548,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61154,57943,57943,57943,57943,528,58999,57943,59001,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59027,57943,57943,57943,57943,59037,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59052,57943,57943,57943,57943,57943,61139,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60454,57943,57943,57943,57943,1946,528,528,528,528,528,528,528,528,1955,528,528,528,528,528,528,1970,528,528,528,528,528,528,1976,528,528,528,528,1982,528,58773,1986,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60648,57893,57893,57893,57893,57893,57893,57893,57893,57893,59346,59347,57893,57893,57893,57893,59354,57893,57893,57893,57893,57893,58315,57893,57893,57893,57893,0,57916,57916,57916,57916,57916,57916,60349,57916,57916,57916,57916,60353,57916,57916,57916,57893,59426,57893,50676,2086,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60932,57916,60934,57916,57916,57916,57916,59446,59447,57916,57916,57916,57916,59454,57916,57916,57916,57916,57916,57916,59449,57916,57916,57916,57916,57916,57916,57916,57916,57916,60390,57916,57916,57916,57916,57916,57916,59526,57916,57893,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59051,57943,57943,57943,59542,59543,57943,57943,57943,57943,59550,57943,57943,57943,57943,57943,57943,57943,57943,57943,60425,57943,57943,57943,57943,57943,57943,0,2313,0,0,0,0,0,0,0,0,0,2322,0,0,0,0,0,0,3208,0,0,0,0,0,0,0,0,0,3210,3211,0,0,0,0,0,528,528,528,528,2477,528,528,528,528,528,528,528,2483,528,528,528,528,528,2924,528,528,528,528,528,528,528,528,528,528,528,2496,528,528,528,0,528,528,528,2488,528,528,528,528,528,528,528,528,528,528,528,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,990,57916,57916,57916,57916,57916,60004,57916,57916,57916,57916,57916,57916,57916,60010,57916,57916,57916,57916,57916,58921,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60917,57916,57916,57916,57916,57916,57943,57943,57943,60087,57943,57943,57943,57943,57943,57943,57943,60093,57943,57943,57943,57943,57943,57943,60967,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60040,57943,57943,57943,57943,57943,0,0,0,2782,0,0,0,0,0,0,0,0,0,0,0,0,1169,1170,1171,1172,3159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1871,528,528,528,3231,528,528,528,528,528,528,528,528,528,528,528,528,528,3248,528,528,528,3262,528,0,0,57893,57893,57893,57893,57893,57893,57893,57893,60614,57893,57893,57893,50676,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59441,57893,57893,57893,57893,60622,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,61098,57916,57916,57916,57893,57893,57893,57893,60655,57893,0,0,57916,57916,57916,57916,57916,57916,57916,57916,60928,57916,57916,57916,57916,57916,57916,57916,60663,57916,57916,57916,57916,57916,57916,60671,57916,57916,57916,57916,57916,57916,57916,57916,61118,57916,57916,57916,57916,57916,57916,57916,57943,60712,57943,57943,57943,57943,57943,57943,60720,57943,57943,57943,57943,57943,57943,57943,57943,61340,57943,57943,528,57893,0,0,0,57893,57893,57893,61094,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,61232,57916,57916,57916,57916,61233,61234,57916,57916,57916,528,528,57893,57893,57893,57893,57893,57893,57893,61513,57893,61515,57893,57893,57893,57893,57893,59894,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,58335,57916,57916,528,528,61559,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61567,61624,57916,57916,57916,57916,57943,61628,57943,57943,57943,57943,0,0,0,0,528,4272,528,528,528,528,57893,61620,57893,57893,57893,57893,57916,0,389,341,0,0,0,0,0,0,0,0,0,0,0,0,0,2801,0,0,463,479,479,479,463,463,463,463,463,463,463,463,463,463,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,539,57905,539,57905,539,539,57905,539,539,57928,57905,539,539,57905,57905,57905,57905,57955,57955,57905,57905,57905,57905,57955,57955,57905,539,57905,57905,57928,57905,57905,57905,57905,57905,57905,57905,57928,57928,57905,57905,57955,57905,57905,57905,1,24578,3,155942,156282,296,0,0,0,0,0,302,303,0,0,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3427,0,0,0,662,0,662,0,0,0,0,0,0,0,0,662,0,0,0,0,0,6225920,4358144,5062656,4358144,4358144,4358144,4358144,4358144,6225920,0,6086656,528,528,528,528,858,528,528,874,528,528,528,528,528,528,528,528,2913,528,528,528,528,528,528,528,57916,58353,57916,57916,58369,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61575,57943,57943,57943,0,1189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3451,0,0,1318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3480,0,0,0,1334,0,0,0,0,0,528,528,528,528,528,528,528,528,2876,528,528,528,528,528,528,528,528,528,1352,528,528,528,528,528,528,528,528,528,528,528,528,2469,528,528,528,528,528,528,1391,528,528,528,528,528,528,528,528,528,528,528,528,528,3493,528,528,528,528,1410,528,528,528,528,528,1418,528,528,528,528,528,528,528,1379,528,528,528,528,528,528,528,528,1954,528,528,1957,528,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58791,57893,57893,57893,58857,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,57943,57943,57943,60412,57943,60413,57943,57943,57943,57943,57943,57943,57943,58471,57943,57943,57943,57943,528,528,528,901,57943,57943,57943,57943,59039,57943,57943,57943,57943,57943,59047,57943,57943,57943,57943,57943,57943,59563,59564,57943,57943,57943,57943,57943,57943,57943,57943,57943,61484,0,0,4143,4144,0,0,0,1727,0,0,0,0,1734,0,0,0,0,0,0,0,0,0,2370,0,0,0,0,0,0,528,1916,528,528,528,528,528,528,528,528,528,528,528,528,1927,528,528,0,57893,57893,57893,58319,57893,57893,155942,1151,0,302,0,0,306,307,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,2351104,0,0,0,0,0,0,0,0,0,4358144,59359,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59370,57893,57893,57893,50676,0,57916,59433,57916,57916,57916,57916,57916,57916,57916,59440,57916,57943,57943,57943,59544,57943,57943,57943,57943,57943,57943,57943,57943,57943,59555,57943,57943,528,1714,528,1716,528,528,59063,57893,57893,59065,57893,57893,1151,0,57943,57943,57943,59577,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61143,57943,57943,0,0,2379,2380,0,0,0,0,0,2386,0,0,0,0,0,0,0,2785,0,0,0,0,0,0,0,0,1753,0,0,0,0,0,0,0,528,2474,528,528,528,528,2479,528,528,528,528,528,528,528,528,528,1396,528,528,528,1403,1405,528,2501,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60878,57893,57893,57893,57893,57893,57893,59906,57893,57893,57893,57893,59911,57893,57893,57893,57893,57893,57893,2999,0,57916,57916,57916,57916,57916,57916,57916,57916,57943,61327,57943,57943,61329,57943,57943,57943,57916,59964,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59506,57916,57943,60047,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60070,60071,57916,57916,57916,57916,61115,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58885,58892,57916,57916,57916,0,3925,3675,0,0,0,0,0,0,0,0,0,0,0,0,0,2838,2839,0,3949,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58850,57893,57893,57893,61308,57893,57893,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58886,57916,57916,57916,57916,4001,0,0,0,0,3675,0,0,0,0,0,0,0,0,528,528,528,528,528,528,1895,528,528,528,4016,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57893,61375,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,61461,57916,61391,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61407,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,2316,0,0,0,0,0,0,0,0,0,0,3838,0,0,0,0,0,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61566,57916,0,0,0,0,57893,57943,57943,58410,57943,57943,57943,57943,57943,57943,58443,0,0,0,390,391,393,343,0,0,0,0,0,0,342,0,0,0,343,0,0,0,0,0,0,0,0,0,2787,0,0,0,0,0,0,0,0,0,390,0,0,0,0,0,0,343,0,0,0,390,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,310,0,0,0,0,1749,0,0,0,0,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,480,480,480,480,496,496,496,496,496,496,496,496,496,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,480,540,57906,540,57906,540,540,57906,540,540,57929,57906,540,540,57906,57906,57906,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,57929,57906,57906,57906,57906,57906,57906,57906,57929,57929,57906,57942,57956,57942,57942,57942,57942,57956,57956,57942,57942,57942,57942,57956,57956,57942,540,57906,57906,368,368,0,0,0,0,0,706,0,0,0,0,0,0,0,0,740,0,0,0,0,740,0,746,715,0,717,0,0,0,0,0,0,0,725,0,0,0,0,0,0,804,0,0,0,0,0,0,804,0,528,0,0,813,0,796,0,0,815,0,667,0,792,0,0,0,0,0,836,0,0,0,0,796,663,840,0,528,0,792,815,0,815,813,0,0,0,827,0,0,0,663,830,0,0,0,0,131072,0,0,0,0,0,0,0,444,0,0,0,0,0,690,691,0,0,0,0,696,0,0,0,368,843,528,528,528,859,528,528,875,528,528,528,528,889,528,528,528,528,528,3245,528,528,528,528,528,528,528,528,528,528,528,1398,528,528,528,528,528,907,528,528,57893,57893,58261,57893,57893,57893,58278,57893,57893,58294,57893,57893,57893,50676,0,59432,57916,59434,57916,59435,57916,59437,57916,59439,57916,57916,57893,57943,57943,57943,57943,57943,57943,57943,59534,57943,57943,57943,57943,57943,57943,59594,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60467,57943,57943,57943,57943,57943,57893,57893,58308,57893,57893,57893,57893,58326,57893,57893,0,57916,57916,58337,57916,57916,57916,57916,57943,57943,60411,57943,57943,57943,57943,57943,57943,57943,57943,57943,59044,57943,57943,57943,57943,57943,57943,57916,58354,57916,57916,58370,57916,57916,57916,57916,58384,57916,57916,57916,57916,58402,57916,0,0,0,0,57893,57943,57943,58411,57943,57943,57943,58427,57943,57943,57943,57943,57943,59005,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59008,57943,57943,57943,57943,57943,57943,57943,57943,58459,57943,57943,57943,57943,58477,57943,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,0,0,0,1170,0,0,0,0,0,0,0,1172,0,0,0,0,0,0,806,0,0,0,0,787,0,806,0,528,1293,0,0,0,0,0,0,0,0,0,0,0,0,1305,0,0,0,0,0,6307840,0,0,6356992,6381568,6397952,4800512,4808704,0,0,4890624,0,4947968,0,0,0,5046272,0,0,0,0,5185536,0,5234688,5300224,0,0,0,0,1210,0,0,0,0,0,0,0,0,0,1305,0,0,0,0,0,2343,0,0,0,0,0,2347,0,0,2349,0,0,1333,0,0,0,0,0,0,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1353,528,528,528,528,528,528,528,528,528,528,528,528,2901,528,528,528,528,528,528,1377,528,528,528,528,528,528,528,528,528,528,528,528,528,3724,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58792,0,0,1777,0,0,1780,0,1782,0,0,0,0,0,0,0,0,753,0,0,0,0,0,0,0,0,1833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3667,3668,528,1898,528,528,528,528,528,528,528,528,1909,528,528,528,528,528,868,528,528,528,528,528,887,528,528,528,528,59341,57893,57893,57893,57893,57893,57893,57893,57893,59352,57893,57893,57893,57893,57893,57893,58325,57893,57893,57893,0,57916,57916,57916,57916,57916,57943,57943,57943,57943,59578,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60056,57943,57943,57943,0,2394,0,0,0,0,0,0,0,0,0,0,0,0,0,2405,0,528,528,528,2422,2423,528,528,528,528,528,528,528,528,528,528,1366,528,528,528,528,528,0,0,0,57893,57893,57893,59852,57893,59854,57893,57893,57893,57893,57893,57893,57893,59349,57893,57893,57893,57893,57893,57893,57893,57893,60647,57893,57893,57893,57893,57893,57893,57893,57893,59903,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59405,57893,0,2780,0,0,2783,0,0,0,0,0,0,2788,0,0,0,2791,2792,0,0,0,0,0,0,0,0,0,0,0,0,0,2802,0,0,0,0,131072,0,0,0,0,0,0,0,448,0,0,0,0,0,2307,0,0,0,0,0,0,0,0,0,0,3674,0,0,0,0,0,0,2817,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3677,0,0,0,2843,0,0,0,0,0,0,0,0,2851,0,0,0,0,0,0,3448,0,0,0,0,0,0,0,0,0,1287,1288,0,0,0,0,0,0,2857,0,0,0,0,2860,0,0,0,0,0,0,0,0,0,2862,0,0,0,0,0,0,2868,0,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,2879,528,528,2882,2883,528,528,528,528,528,2888,528,2890,528,528,528,528,528,3487,528,528,528,528,528,528,528,528,528,528,2468,528,528,528,528,528,528,2894,528,528,528,528,528,528,528,528,528,2900,528,528,528,528,528,1903,1904,528,528,528,528,1911,528,528,528,528,528,1935,528,528,528,1940,528,528,528,528,528,528,2897,528,528,528,528,528,528,528,528,528,528,3858,528,57893,57893,57893,57893,528,528,528,528,2908,528,528,528,528,528,528,2916,528,528,528,528,528,2439,528,528,528,528,2444,528,528,528,528,528,528,61594,57893,57893,57893,57893,57893,57893,57893,61600,57916,528,2921,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1387,528,57893,60297,57893,60299,57893,57893,57893,57893,60303,57893,57893,57893,57893,57893,57893,57893,59382,57893,57893,57893,57893,57893,57893,57893,57893,59398,57893,57893,57893,57893,57893,57893,57893,57893,57893,60309,57893,57893,57893,57893,57893,57893,57893,57893,57893,60318,57893,57893,57893,0,0,0,2593,57916,57916,57916,57916,57916,57916,57916,57916,57916,60704,57916,57943,57943,57943,57943,57943,57943,57943,60957,57943,57943,57943,57943,57943,57943,57943,57893,57893,57893,60326,57893,57893,57893,57893,57893,60331,57893,57893,57893,57893,57893,57893,58837,57893,57893,57893,57893,57893,57893,57893,58851,57893,60355,57916,57916,60358,60359,57916,57916,57916,57916,57916,60364,57916,60366,57916,57916,57916,57916,57916,60925,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58884,57916,57916,57916,57916,57916,57916,60370,57916,57916,57916,57916,57916,57916,57916,57916,57916,60376,57916,57916,57916,57916,57916,58960,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,60732,57943,57943,57943,57943,57943,57943,57943,57943,60450,57943,57943,57943,57943,57943,57943,60458,57916,57916,60398,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59505,57916,57916,57943,57943,57943,60420,57943,57943,60423,60424,57943,57943,57943,57943,57943,60429,57943,60431,57943,57943,57943,57943,60435,57943,57943,57943,57943,57943,57943,57943,57943,57943,60441,57943,57943,57943,57943,57943,61150,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,3133,528,528,57893,57893,60480,57893,0,0,3161,3162,3163,0,0,0,0,0,0,0,0,0,0,0,2311,0,0,0,0,0,3176,0,0,0,0,0,0,0,3182,0,3184,0,0,0,0,0,0,3458,0,0,0,0,0,0,0,0,0,786,0,0,0,0,0,0,0,0,0,0,0,802,0,807,0,810,3188,0,0,0,0,3193,0,0,3196,0,0,0,0,0,0,0,389,0,139264,147456,0,0,0,0,0,528,528,3263,0,0,60608,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61086,57893,57893,57893,57893,57893,57893,57893,60653,57893,57893,60656,0,0,60657,57916,57916,57916,57916,57916,57916,57916,58880,57916,57916,57916,58889,57916,57916,57916,57916,57916,57916,60689,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59986,57916,57916,57916,57916,60699,57916,57916,60702,57916,57916,60705,60706,57943,57943,57943,57943,57943,57943,57943,60052,57943,57943,57943,57943,57943,57943,60057,57943,60727,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59031,57943,57943,57943,60738,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58994,57943,57943,57943,57943,57943,57943,60748,57943,57943,60751,57943,57943,60754,3411,528,528,60758,57893,57893,57893,50676,2085,57916,57916,57916,57916,57916,59436,57916,57916,57916,57916,57916,57916,60373,57916,57916,57916,57916,57916,57916,57916,60379,57916,3429,0,0,0,0,3434,0,0,0,0,0,0,0,0,0,0,3675,0,0,0,0,0,0,0,0,528,528,0,0,0,3470,0,0,0,0,0,0,3477,0,0,3479,0,0,0,0,306,0,0,0,0,0,0,306,0,0,0,0,0,0,0,0,0,0,0,0,2852,0,0,0,528,528,3484,528,528,528,528,528,528,528,528,528,528,528,528,528,528,3259,528,3509,528,528,3511,528,528,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,61446,57893,57893,60868,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59928,57893,60894,57893,57893,60896,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60877,57893,57893,57893,57916,57916,60910,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60012,57916,57916,57916,60936,57916,57916,60938,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59485,57916,57916,57916,57916,57916,57943,57943,60952,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59009,57943,57943,57943,57943,57943,60978,57943,57943,60980,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60055,57943,57943,57943,60058,3661,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2312,3679,0,0,0,0,0,0,0,0,0,0,0,0,0,3691,0,0,0,0,131072,0,0,0,0,0,0,0,450,0,0,0,0,0,3457,0,0,0,0,3462,0,0,0,0,3466,3702,3703,528,528,528,528,3707,3708,528,528,528,528,528,3712,528,528,0,2932,0,0,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59859,57893,57893,528,57893,57893,57893,57893,57893,57893,57893,61073,61074,57893,57893,57893,57893,61078,61079,57916,57916,61102,61103,57916,57916,57916,57916,61107,61108,57916,57916,57916,57916,57916,61112,57943,57943,61136,61137,57943,57943,57943,57943,57943,61141,57943,57943,57943,57943,57943,57943,57943,60436,57943,57943,57943,57943,57943,57943,57943,57943,58476,57943,57943,57943,1139,528,528,528,57943,57943,61147,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,528,528,528,57893,57893,57893,0,0,3817,0,0,0,0,0,0,0,0,1165,0,0,0,0,0,0,0,0,0,3834,0,0,0,0,0,0,0,0,0,0,0,0,0,2865,0,0,57916,57916,57916,57916,61230,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59486,57916,57916,57916,57916,57943,61249,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60096,57943,0,0,3675,0,3928,0,0,0,0,0,0,0,0,0,0,0,2361,0,0,0,0,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61303,57893,57893,57893,50676,2086,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61236,61319,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,0,0,57943,57943,57943,61335,57943,57943,57943,57943,57943,57943,57943,528,57893,0,3999,0,0,0,0,131072,0,0,0,0,0,0,0,450560,0,0,0,0,0,372,0,0,0,0,0,0,0,0,0,0,2333,0,0,0,0,2338,0,4002,0,0,0,3675,0,0,0,0,0,0,0,0,528,528,528,1341,528,528,528,528,4014,528,528,528,528,4019,528,528,528,528,4024,528,528,57893,57893,61373,57893,57893,57893,57893,61378,57893,57893,57893,57893,61383,57893,57893,57893,57916,57916,61389,57916,57916,57916,57916,61394,57916,57916,57916,57916,61399,57916,57916,57916,57943,57943,61405,57943,57943,57943,57943,61410,57943,57943,57943,57943,61415,57943,57943,57943,0,0,0,0,0,2366,0,0,0,0,0,0,0,0,0,0,352256,0,352256,0,0,0,0,0,0,4078,0,0,4081,0,0,0,0,0,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57916,528,528,4246,4247,528,528,57893,57893,57893,61596,61597,57893,57893,57893,57916,57916,57916,57916,57943,60410,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58481,528,852,528,528,57916,61602,61603,57916,57916,57916,57943,57943,57943,61608,61609,57943,57943,57943,0,0,0,0,306,306,306,306,306,306,306,306,306,306,306,306,306,0,306,0,0,0,0,345,346,347,348,349,0,0,0,0,0,0,0,0,1181,0,0,0,0,0,0,0,0,0,349,348,131072,347,348,348,0,349,347,348,0,347,348,457,464,481,481,481,492,492,492,498,492,492,498,498,492,498,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,541,57907,541,57907,541,541,57907,541,541,57930,57907,541,541,57907,57907,57907,57907,57957,57957,57907,57907,57907,57907,57957,57957,57907,541,57907,57907,57930,57907,57907,57907,57907,57907,57907,57907,57930,57930,57907,57907,57957,57907,57907,57907,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,306,307,0,0,0,0,0,0,646,0,0,0,0,651,652,653,654,655,656,657,0,0,0,0,0,0,0,0,0,0,0,2388,0,0,0,0,0,0,0,672,673,0,675,676,0,0,0,0,0,682,0,0,0,0,307,0,0,0,0,0,0,307,0,0,0,0,0,0,0,0,0,0,0,0,352256,0,0,0,0,0,0,0,716,0,0,719,0,721,0,723,0,0,0,0,0,0,0,394,0,0,0,0,0,0,0,0,1222,0,0,0,0,0,0,0,0,0,733,0,0,0,0,0,0,0,0,0,0,0,0,0,3172,0,0,0,0,0,763,764,0,766,767,675,0,0,0,0,0,0,0,395,0,0,0,0,0,0,0,0,2319,0,0,0,0,0,0,0,0,0,0,782,783,0,785,0,0,0,0,764,0,0,791,0,0,0,0,131072,0,0,0,0,0,245760,0,0,0,0,245760,0,0,0,0,0,0,0,0,0,0,0,0,3171,0,0,0,0,692,0,0,0,764,0,0,0,0,0,0,0,0,757,821,0,0,0,757,0,0,824,699,0,0,0,829,0,0,0,831,0,0,0,692,699,0,0,692,829,829,0,0,0,0,0,528,528,528,528,528,528,2874,528,528,528,528,528,528,528,3489,528,528,528,528,528,528,528,528,3256,528,528,528,528,528,528,528,528,849,853,856,528,865,528,528,528,881,883,886,528,528,528,899,903,528,528,528,57893,57893,57893,58268,58272,58275,57893,58284,57893,57893,57893,58300,58302,58305,57893,57893,57893,58318,58322,57893,57893,57893,0,57916,57916,57916,58344,58348,58351,57916,58360,57916,57916,57916,58376,58378,58381,57916,57916,57916,58394,58398,57916,57916,57916,57916,58367,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59999,57916,57916,57916,57916,0,0,0,0,58409,57943,57943,57943,58419,58423,58426,57943,58435,57943,57943,528,3649,528,57893,60996,57893,0,0,0,0,0,0,0,0,1254,0,0,0,0,0,0,0,57943,58451,58453,58456,57943,57943,57943,58469,58473,57943,57943,57943,849,1140,528,899,903,1144,0,58489,58268,57893,58318,58322,58494,155942,1151,0,0,0,0,0,0,1179,0,0,0,0,0,0,0,0,0,1239,0,0,0,0,0,0,1278,0,0,0,0,1283,0,0,0,0,0,0,0,0,0,0,3675,0,3828,0,0,0,0,0,0,1321,0,0,0,0,0,0,0,0,0,0,0,0,1198,0,0,0,528,1375,528,528,528,1378,528,528,528,528,528,528,528,1385,528,528,0,2932,0,0,0,0,57893,57893,57893,57893,57893,57893,60282,57893,1389,528,528,528,528,528,528,528,528,528,528,528,1400,528,528,1407,58817,57893,57893,57893,57893,57893,57893,57893,58824,57893,57893,58828,57893,57893,57893,57893,57893,59895,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59898,59899,57893,57893,57893,57893,57916,57916,57916,58934,57916,57916,58941,57916,57916,57916,57916,57916,57916,57916,57916,57916,59984,57916,57916,57916,57916,57916,57916,57916,58955,57916,57916,57916,57916,57916,0,57893,57943,57943,57943,57943,57943,57943,57943,57943,61542,57943,57943,57943,0,4202,0,0,57943,57943,57943,59003,57943,57943,57943,59006,57943,57943,57943,57943,57943,57943,57943,59013,57943,57943,59017,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59029,57943,57943,57943,57943,57943,61337,57943,57943,57943,61341,57943,528,57893,0,0,0,0,3139,0,0,0,0,0,0,0,0,0,3149,57943,59036,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59050,57943,57943,57943,57943,57943,59019,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58482,528,528,528,528,1822,0,1824,0,0,0,1826,0,746,0,0,0,0,0,0,0,399,0,0,404,0,0,0,0,0,1872,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2350,0,1757,0,0,0,0,0,0,528,1891,528,528,528,528,528,528,2440,528,528,528,528,528,528,528,528,528,528,2495,528,528,528,528,0,1897,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1428,528,528,528,528,1919,528,528,528,528,528,528,528,528,528,528,1928,528,528,528,1932,528,528,1937,528,528,528,528,528,528,528,528,528,1419,528,528,528,528,528,528,528,528,528,528,58773,0,57893,59333,57893,57893,57893,57893,57893,57893,57893,59340,57893,57893,57893,59362,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59371,57893,57893,57893,57893,57943,57943,57893,57893,57893,57893,57943,57943,57893,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,61075,57893,57893,57893,57893,57893,58821,57893,57893,57893,58825,57893,57893,57893,57893,57893,57893,59348,57893,57893,57893,57893,57893,57893,57893,57893,57893,60875,57893,57893,57893,57893,57893,57893,57893,57893,59375,57893,57893,59380,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61457,57916,57916,57916,57916,57916,57916,57916,59462,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59471,57916,57916,57916,57916,58368,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60011,57916,57916,57916,57916,59475,57916,57916,59480,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59972,57916,57916,57916,59975,59558,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59567,57943,57943,57943,59571,57943,57943,59576,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59569,57943,57943,57916,57916,57916,59990,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58948,57916,57916,57916,57943,57943,57943,60073,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59010,57943,57943,57943,2804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2376,57916,60409,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59030,57943,57943,57943,57943,60474,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,2290,0,2291,0,0,3214,0,0,0,528,3218,528,528,528,528,528,528,528,528,528,528,1383,528,528,528,528,1388,3242,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1962,57893,60633,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60335,57893,57916,57916,57916,57916,60682,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59998,57916,57916,57916,57916,0,0,3419,0,0,0,0,0,0,0,0,0,3425,0,0,0,0,0,2410,0,0,0,0,0,0,0,0,0,0,417792,309,310,0,0,0,0,3841,528,528,528,528,528,528,528,3846,528,528,528,528,528,528,2465,528,528,528,528,528,528,528,528,528,528,3943,528,3945,528,528,528,57893,57893,57893,57893,61208,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59369,57893,57893,57893,57893,57916,61227,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59524,57916,0,0,3675,3927,0,0,0,0,0,0,0,0,0,0,0,0,1266,0,0,0,528,528,528,3937,528,528,528,528,3941,528,528,528,528,528,3947,528,528,0,57893,57893,57893,58320,57893,57893,155942,1151,0,0,0,0,0,0,1751,0,0,0,0,0,0,0,0,0,754,0,0,0,0,0,0,528,528,57893,57893,57893,61296,57893,57893,57893,57893,61300,57893,57893,57893,57893,57893,58317,57893,57893,57893,57893,0,57916,57916,58336,57916,57916,61306,57893,57893,57893,57893,57916,57916,57916,61312,57916,57916,57916,57916,61316,57916,57916,57916,57916,58371,58373,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58945,57916,57916,57916,57916,57916,57916,57916,57916,61322,57916,57916,57916,57916,57943,57943,57943,61328,57943,57943,57943,57943,57943,57943,60981,57943,60983,57943,57943,57943,57943,57943,57943,57943,57943,60078,57943,57943,57943,57943,60083,57943,57943,61332,57943,57943,57943,57943,57943,61338,57943,57943,57943,57943,528,57893,0,0,0,0,0,2797,0,0,0,0,0,0,0,0,0,0,1881,0,0,0,0,0,528,528,528,4017,528,528,528,4021,528,528,528,528,528,57893,57893,57893,57893,57893,57893,58281,57893,57893,57893,57893,57893,57893,57893,61376,57893,57893,57893,61380,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,60939,57916,60941,57916,57916,57916,57916,57916,57916,57916,57916,58881,57916,57916,57916,57916,57916,57916,58896,57916,57916,61392,57916,57916,57916,61396,57916,57916,57916,57916,57916,57916,57943,57943,57943,61242,57943,57943,57943,61245,57943,57943,57943,57943,61408,57943,57943,57943,61412,57943,57943,57943,57943,57943,57943,0,0,0,0,0,2821,0,0,0,0,0,0,0,0,0,0,1739,0,0,0,0,0,0,4270,0,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57916,61311,57916,57916,61313,57916,57916,57916,57916,57916,57916,59497,57916,57916,59500,57916,57916,57916,57916,57916,57916,57916,61526,57916,61528,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,60415,57943,57943,57943,57943,0,528,528,57893,57893,57916,57916,57943,57943,0,528,57893,57916,57943,4308,4309,61654,61655,61656,0,528,57893,57916,57943,0,528,57893,57916,57943,0,0,0,0,0,2831,0,0,0,0,0,0,0,0,0,0,1257,0,0,0,0,1262,0,350,0,408,0,0,0,0,0,0,0,0,0,0,408,0,350,0,139264,147456,0,0,0,0,0,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,542,57908,542,57908,542,542,57908,542,542,57931,57908,542,542,57908,57908,57908,57908,57958,57958,57908,57908,57908,57908,57958,57958,57908,623,57908,57974,57931,57908,57908,57908,57908,57908,57908,57908,57931,57931,57908,57908,57958,57908,57908,57908,57974,57974,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,131072,0,0,0,328,0,0,330,0,0,0,0,0,0,2847,2848,0,0,0,0,0,0,0,0,0,5808128,0,0,0,0,4792320,4833280,844,528,528,528,528,528,528,528,528,528,528,528,890,528,528,528,528,528,3499,528,528,528,528,528,528,528,528,528,3508,528,908,528,528,57893,57893,58262,57893,57893,57893,57893,57893,57893,57893,57893,57893,61222,57916,57916,57916,57916,57916,57916,57893,57893,58309,57893,57893,57893,57893,58327,57893,57893,0,57916,57916,58338,57916,57916,57916,57916,58877,57916,57916,57916,57916,58883,57916,57916,57916,57916,57916,57916,59993,59994,57916,57916,57916,57916,57916,57916,60001,57916,57943,57943,57943,57943,58460,57943,57943,57943,57943,58478,57943,57943,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,1724,1173,0,0,0,0,1178,0,0,0,0,0,0,0,0,0,0,2310144,0,368,0,0,0,0,0,1173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2816,528,528,528,528,1354,528,528,528,528,1364,528,528,528,528,528,528,2491,528,2493,528,528,528,528,528,528,0,58773,914,57893,57893,57893,58779,57893,57893,57893,57893,57893,57893,57893,57893,57893,58793,57916,58874,57916,57916,57916,57916,57916,57916,57916,57916,57916,58888,57916,57916,57916,57916,57916,59448,57916,57916,57916,57916,57916,57916,57916,57916,57916,59459,58898,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59961,57916,58914,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59987,59988,58953,57916,57916,57916,57916,57916,57916,0,57893,57943,57943,57943,58968,57943,57943,57943,57943,57943,59041,57943,57943,57943,57943,57943,57943,57943,57943,59053,59054,0,1728,0,0,0,0,1735,0,0,0,0,0,0,0,0,0,3424,0,0,0,0,0,0,0,0,1761,0,0,0,0,0,0,0,0,0,0,0,0,0,3185,0,0,1775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2840,0,0,2353,0,0,0,0,0,0,0,0,0,0,0,0,0,3201,0,0,2449,528,528,528,528,528,528,2454,528,2456,528,528,528,528,528,528,2884,528,528,528,528,528,528,528,528,528,528,2915,528,528,528,528,528,2502,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61387,57916,57916,57893,57893,57893,59880,57893,57893,57893,57893,57893,57893,59885,57893,59887,57893,57893,57893,0,0,2592,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,61470,57943,57943,57943,57943,57943,57943,59976,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60013,57916,60059,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59033,528,2906,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1960,528,57916,57916,60383,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60367,57916,57916,0,0,3675,0,0,0,0,3931,0,0,3933,0,0,0,0,0,0,1192,0,0,0,1196,1197,0,0,0,0,528,3936,528,528,3938,528,528,528,528,528,528,528,528,528,528,528,528,3247,528,528,528,528,528,57893,61295,57893,57893,61297,57893,57893,57893,57893,57893,57893,57893,57893,57893,61456,57916,57916,57916,57916,57916,57916,0,0,800,0,800,0,0,0,0,0,0,0,0,800,0,0,0,0,307,307,307,307,307,307,307,307,307,307,307,307,307,0,307,0,528,528,528,528,860,528,528,528,528,528,528,528,528,528,528,528,528,3257,528,528,3260,57916,58355,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60368,57916,1161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3174,528,528,528,528,58773,1987,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59910,57893,57893,57893,57893,57893,57893,57893,57943,57943,60445,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59585,57943,57943,57893,61081,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60639,57893,0,0,0,351,0,0,0,0,0,0,0,0,0,0,0,0,1746,0,0,0,0,0,0,352,0,0,0,0,0,0,0,0,0,0,0,0,1756,1757,0,0,0,0,353,351,131072,0,351,351,0,353,0,351,0,0,351,353,351,0,0,0,351,351,351,351,351,351,351,351,505,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,351,543,57909,543,57909,543,543,57909,543,543,57932,57909,543,543,57909,57909,57909,57909,57959,57959,57909,57909,57909,57909,57959,57959,57909,543,57909,57909,57932,57909,57909,57909,57909,57909,57909,57909,57932,57932,57909,57909,57959,57909,57909,57909,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,811,812,0,0,0,0,0,0,758,0,0,817,0,0,0,0,0,0,4082,0,0,0,0,528,528,528,528,528,3221,528,3222,528,528,528,528,0,817,0,664,0,0,0,0,0,0,0,0,0,0,0,0,1787,0,0,0,832,0,0,0,0,0,0,812,0,0,0,0,0,0,0,528,528,528,528,528,2873,528,528,528,528,2877,528,528,528,0,2503,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61087,57893,57893,57893,57893,528,850,528,528,528,866,870,528,528,528,528,528,891,893,528,528,0,2932,0,0,0,0,57893,57893,57893,60280,57893,60281,57893,57893,57893,50676,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59473,904,528,528,528,57893,57893,58263,58269,57893,57893,57893,58285,58289,57893,57893,57893,0,2590,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,59970,57916,57916,57916,57916,57916,57916,57893,57893,58310,58312,57893,57893,58323,57893,57893,57893,0,57916,57916,58339,58345,57916,0,0,0,0,57893,57943,57943,58412,57943,57943,57943,58429,57943,57943,58445,57916,57916,58361,58365,57916,57916,57916,57916,57916,58386,58388,57916,57916,58399,57916,57916,57916,57916,58904,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60945,57916,57916,57916,57916,57943,57943,57943,57943,58461,58463,57943,57943,58474,57943,57943,57943,850,528,893,528,528,0,58270,58266,58491,58314,57893,57893,155942,1151,0,0,1154,0,0,0,0,0,245760,245760,245760,245760,245760,245760,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,904,528,0,57893,58269,58312,57893,58323,57893,155942,1151,0,302,0,0,306,307,0,0,0,0,0,0,0,0,0,0,0,0,0,1772,0,0,0,0,0,1217,0,1219,0,1221,0,0,0,0,0,0,0,0,1286,0,0,0,0,0,0,0,0,1247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3839,0,1332,0,0,0,0,0,0,0,528,528,528,528,528,528,528,528,528,528,528,528,3850,528,528,1374,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2461,528,528,528,1412,528,528,528,528,528,528,528,528,1424,1425,528,528,0,57893,57893,57893,57893,57893,57893,294,1151,0,0,0,0,0,0,0,5480448,4358144,4358144,4358144,4358144,4857856,4874240,4358144,4358144,58773,914,57893,57893,57893,57893,58780,57893,57893,57893,57893,57893,57893,57893,57893,57893,60289,57893,57893,57893,57893,57893,60294,57893,57916,57916,58875,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60378,57916,57916,57916,57916,58932,57916,57916,57916,57916,57916,57916,57916,58946,57916,57916,57916,57916,57916,57916,61241,57943,57943,57943,57943,57943,57943,57943,61246,57943,57916,57916,57916,58958,58959,57916,57916,0,57893,57943,57943,57943,57943,58969,57943,57943,3648,528,528,60995,57893,57893,0,0,0,0,0,0,0,0,1815,0,0,0,0,0,0,0,57943,59e3,59002,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59602,57943,57943,0,1808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212992,0,528,528,1966,528,528,528,528,528,528,528,528,528,1975,528,528,528,528,528,3513,3515,528,528,528,3518,528,3520,3521,528,57893,528,1981,528,528,58773,0,57893,57893,57893,57893,57893,57893,57893,59338,57893,57893,57893,50676,2087,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60674,57916,57916,57916,57916,57893,59409,57893,57893,57893,57893,57893,57893,57893,57893,57893,59419,57893,57893,57893,57893,57893,59907,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,57916,57916,58340,57916,57916,59425,57893,57893,50676,0,57916,57916,57916,57916,57916,57916,57916,59438,57916,57916,57916,57916,57916,61116,57916,57916,57916,57916,57916,57916,57916,57916,61124,57916,59509,57916,57916,57916,57916,57916,57916,57916,57916,57916,59519,57916,57916,57916,57916,59525,57943,57943,59559,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59620,57943,57943,2393,0,2395,0,0,0,0,0,0,0,0,0,0,2403,0,0,0,0,343,390,0,0,0,139264,147456,0,0,0,423,0,0,0,2408,2409,0,0,0,0,0,2413,0,0,0,0,0,0,0,3153,0,0,0,0,0,0,0,0,378,0,0,0,0,0,0,0,0,2419,528,528,528,528,528,528,2426,528,528,528,528,528,528,528,1394,528,528,528,528,528,528,528,528,2886,528,528,528,528,528,528,528,528,528,2450,528,528,528,528,528,528,528,528,2457,528,2459,528,2462,528,528,528,2476,528,528,528,528,528,528,528,528,528,528,528,528,528,61371,57893,57893,0,0,0,59849,57893,57893,57893,57893,57893,57893,57893,59857,57893,57893,57893,57893,57893,60301,57893,57893,57893,57893,57893,57893,57893,60306,57893,57893,59890,57893,59893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60304,57893,57893,57893,57893,59902,57893,57893,57893,57893,57893,59908,57893,57893,57893,57893,57893,57893,57893,57893,57893,60330,57893,57893,57893,60333,60334,57893,57893,57916,57916,59977,57916,59979,57916,59982,57916,57916,57916,57916,57916,57916,57916,57916,57916,60363,57916,60365,57916,57916,57916,57916,57916,57916,57916,57916,59991,57916,57916,57916,57916,57916,59997,57916,57916,57916,57916,57916,57916,61606,57943,57943,57943,57943,57943,57943,57943,0,0,57943,57943,60060,57943,60062,57943,60065,57943,57943,57943,57943,57943,57943,57943,57943,57943,59007,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60074,57943,57943,57943,57943,57943,60080,57943,57943,57943,57943,57943,57943,59612,57943,57943,57943,57943,57943,57943,57943,57943,57943,0,0,4240,0,0,0,528,0,0,0,2819,0,0,0,0,0,0,0,0,0,0,2827,0,0,0,0,131072,0,0,0,357,0,0,0,0,359,0,0,400,0,0,0,0,0,139264,147456,400,411,0,424,411,2841,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3187,528,2880,528,528,528,528,528,2885,528,528,528,528,528,528,528,528,3502,528,528,528,528,528,528,528,57893,57893,57893,60310,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60628,57893,57893,57893,57893,57916,60356,57916,57916,57916,57916,57916,60361,57916,57916,57916,57916,57916,57916,57916,57916,59953,57916,59955,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60421,57943,57943,57943,57943,57943,60426,57943,57943,57943,57943,57943,57943,60064,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59566,57943,57943,57943,57943,57943,57893,60652,57893,57893,57893,57893,0,0,57916,57916,57916,57916,57916,60661,57916,60662,57916,57916,57916,57916,60701,57916,57916,57916,57916,57943,57943,57943,57943,57943,60710,57943,57943,57943,57943,57943,61481,57943,57943,61483,57943,0,0,0,0,0,0,0,2808,0,0,0,0,0,0,0,0,350,0,0,0,0,0,0,0,60711,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59587,528,3483,528,528,528,528,528,528,528,528,528,528,528,528,528,528,1978,528,60867,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59929,57916,60909,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60395,57916,57916,57943,60951,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60069,57943,57943,0,3670,0,0,0,0,0,0,0,0,0,0,0,0,0,0,278528,0,0,0,3675,0,0,0,3930,0,0,0,0,0,0,0,0,0,3476,0,0,0,0,0,0,3935,528,528,528,528,3939,528,528,528,528,528,528,528,528,528,3948,528,528,61294,57893,57893,57893,57893,61298,57893,57893,57893,57893,57893,57893,57893,57893,60342,57893,57893,0,0,0,3e3,0,57893,61307,57893,57893,57893,61310,57916,57916,57916,57916,61314,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,0,0,0,0,528,528,528,3219,528,528,528,528,528,3224,528,528,57916,57916,57916,57916,61323,57916,57916,57916,61326,57943,57943,57943,57943,61330,57943,57943,57943,57943,57943,60089,60090,60091,57943,57943,57943,57943,57943,57943,57943,57943,57943,59615,57943,57943,57943,57943,59621,57943,4090,528,528,528,528,528,528,528,528,528,57893,57893,57893,57893,57893,61447,0,0,0,4149,0,528,528,528,528,528,528,528,528,528,528,528,528,528,3851,528,528,528,528,528,4248,528,57893,57893,57893,57893,57893,61598,57893,57893,57916,57916,57916,57916,58919,57916,57916,58923,57916,57916,57916,57916,57916,57916,57916,57916,61572,61573,57916,57916,57943,57943,57943,57943,57916,57916,57916,61604,57916,57916,57943,57943,57943,57943,57943,61610,57943,57943,0,0,0,0,363,0,0,0,0,139264,147456,0,0,0,0,0,0,1307,0,528,528,1339,528,1342,528,528,528,4269,0,4271,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,57916,0,0,0,0,57893,57943,57943,58413,57943,57943,57943,57943,57943,57943,57943,57943,61582,0,0,0,0,0,0,528,388,0,354,0,0,0,0,0,397,398,0,399,0,0,0,0,0,0,4208,528,528,528,528,528,528,528,528,528,1380,528,528,528,528,528,528,371,379,407,0,0,0,371,0,0,354,0,0,0,371,0,410,412,0,371,399,0,0,371,379,0,139264,147456,399,410,0,0,410,0,0,0,433,131072,0,433,433,443,0,0,433,0,412,433,0,0,0,0,131072,0,0,0,438,0,0,0,0,0,311,0,0,0,0,2796,0,0,0,0,0,0,0,0,0,0,0,450560,450560,0,0,0,465,0,0,0,493,493,493,493,493,493,493,493,493,493,515,515,515,515,515,527,515,515,515,527,515,515,515,515,515,515,544,57910,544,57910,544,544,57910,544,544,57933,57910,544,544,57910,57910,57910,57910,57960,57960,57910,57910,57910,57910,57960,57960,57910,624,57910,57975,57933,57910,57910,57910,57910,57910,57910,57910,57933,57933,57910,57910,57960,57910,57910,57910,57975,57975,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,131072,0,0,0,441,342,0,0,0,453,0,342,343,344,0,0,0,0,0,0,0,0,0,0,0,0,0,2853,0,0,0,306,307,0,0,0,643,0,0,0,0,0,0,0,0,0,3687,0,0,0,0,0,0,669,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3428,845,528,528,528,528,528,528,876,878,528,528,528,528,528,528,528,1415,528,528,528,528,528,528,1426,528,528,528,528,528,57893,57893,58264,57893,57893,57893,57893,57893,57893,58295,58297,57893,57893,57893,57893,58803,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59384,57893,57893,57893,57893,58448,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,528,528,57893,57893,57893,57893,57893,2290,1725,2291,0,0,0,0,0,1309,1335,1336,0,1309,528,528,528,528,528,528,1344,528,528,528,528,528,3706,528,528,528,528,528,528,528,528,528,528,528,1974,528,528,528,528,528,528,1348,528,528,1359,528,528,1363,528,528,528,528,528,528,528,1416,528,528,528,528,528,528,528,528,3709,528,528,528,528,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,58783,57893,57893,57893,58787,57893,57893,57893,57893,57893,60623,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58845,57893,57893,57893,57893,57893,58798,57893,57893,58802,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60638,57893,57893,57893,57893,57916,58916,57916,57916,57916,58920,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59469,57916,57916,57916,57916,57916,58972,57943,57943,57943,58976,57943,57943,58987,57943,57943,58991,57943,57943,57943,57943,57943,57943,60076,60077,57943,57943,57943,57943,57943,57943,60084,57943,59014,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59604,1745,1746,0,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,0,0,0,0,1778,0,0,0,0,0,0,0,0,0,0,0,0,1828,0,0,0,1791,0,1793,0,0,0,1797,0,0,0,1801,0,0,0,1805,0,0,0,0,131072,0,0,0,442,0,0,0,449,0,0,0,0,0,2846,0,0,0,0,0,0,0,0,0,0,1224,0,0,0,0,0,1980,528,528,528,58773,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60625,57893,57893,57893,57893,57893,57893,57893,57943,57943,57943,57943,59545,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60068,57943,57943,57943,0,0,2314,0,2315,0,0,0,0,0,0,0,0,0,0,0,262738,0,0,0,0,2377,0,0,0,0,0,0,2384,0,0,0,0,0,0,0,0,1326,1327,0,0,1167,0,0,0,0,528,528,2421,528,528,528,528,528,528,528,528,528,528,528,528,888,528,528,528,528,528,528,528,2489,528,528,528,528,528,528,528,528,528,528,0,0,57893,57893,57893,57893,60611,57893,57893,57893,57893,57893,57893,59868,57893,57893,57893,57893,57893,57893,57893,57893,57893,58330,0,57916,57916,57916,57916,58347,0,0,0,57893,57893,59851,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60901,57893,57893,57893,57893,57893,57893,57893,60113,0,0,1729,0,0,1736,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,0,0,0,0,2858,0,0,0,0,0,0,0,0,0,2864,0,0,0,0,0,3152,0,0,0,0,0,0,0,0,0,3158,57893,57893,57893,57893,60311,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60890,57893,60892,57893,57893,60323,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60295,60443,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60455,57943,57943,57943,57943,57943,59593,57943,57943,59596,57943,57943,57943,57943,57943,57943,57943,57943,59551,57943,57943,57943,57943,57943,57943,57943,57943,59565,57943,57943,57943,57943,57943,57943,57943,57943,59580,57943,57943,57943,57943,57943,57943,57943,57943,59614,57943,57943,57943,57943,57943,57943,57943,57943,60037,57943,57943,60041,57943,57943,57943,60045,0,0,3190,0,0,0,0,3195,0,0,0,0,0,0,0,0,1783,1784,1785,0,0,0,0,0,3250,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2472,57893,57893,60642,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61385,57893,57916,57916,57916,0,3468,3469,0,0,0,0,3474,0,0,0,0,0,0,0,0,1799,0,0,0,0,0,0,0,0,0,3681,0,0,0,3684,0,0,0,0,0,0,0,0,3692,57893,61092,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,0,0,0,0,4290,528,3813,57893,57893,61159,3816,0,0,0,0,3820,0,0,0,0,0,0,1236,0,0,0,0,0,0,0,0,0,2799,0,0,0,0,0,0,0,3833,0,0,0,0,3837,0,0,0,0,0,0,0,0,3840,0,528,528,528,3842,528,528,528,3845,528,528,528,528,528,528,528,1938,528,528,528,528,528,528,528,528,3235,528,528,3238,528,528,528,528,57893,57893,57893,61207,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61084,57893,57893,57893,57893,57893,57893,57893,61226,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60407,57916,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61302,57893,61304,57893,57893,57893,57893,58819,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59913,57893,57893,57893,57893,57916,61320,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,4268,0,57943,57943,61334,57943,61336,57943,57943,57943,57943,57943,57943,528,57893,0,0,0,0,0,3164,0,0,0,0,3169,0,0,0,0,0,0,1220,0,0,0,0,0,1226,0,1228,0,4146,0,0,0,0,528,528,528,528,528,528,528,528,528,528,4160,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61516,57893,57893,57893,0,2591,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,59996,57916,57916,57916,57916,57916,57916,528,528,57893,57893,61560,57893,61561,57893,57893,57893,57893,57893,57893,57893,57893,57916,0,0,0,0,57893,57943,57943,58414,58420,57943,57943,57943,58436,58440,57943,57943,57943,57943,57943,61411,57943,61413,61414,57943,61416,57943,61418,0,0,0,0,0,1849,0,0,0,0,0,0,1748,0,0,0,0,0,1864,0,0,0,0,0,0,0,0,0,0,2401,0,0,0,0,0,57916,61568,57916,61569,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,61576,57943,57943,57943,57943,57943,61539,57943,61541,57943,57943,57943,57943,0,0,0,0,0,0,3435,0,0,0,0,0,0,0,0,0,1273,0,0,0,0,0,0,61577,57943,57943,57943,57943,57943,57943,57943,57943,0,0,0,0,0,0,528,528,528,2871,2872,528,528,528,528,528,528,528,528,528,528,3237,528,528,528,528,528,358,359,360,0,0,0,0,0,0,0,0,0,368,0,296,0,0,0,0,131072,0,352256,352256,0,0,0,352256,0,0,352256,0,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,0,482,482,482,0,0,0,0,0,0,0,0,0,0,516,516,520,520,520,520,520,516,520,520,520,516,520,520,520,520,520,520,545,57911,545,57911,545,545,57911,545,545,57934,57911,545,545,57911,57911,57911,57911,57961,57961,57911,57911,57911,57911,57961,57961,57911,625,57911,57976,57934,57911,57911,57911,57911,57911,57911,57911,57934,57934,57911,57911,57961,57911,57911,57911,57976,57976,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,245760,0,0,245760,0,0,245760,0,0,245760,0,245760,0,0,0,0,0,0,0,0,0,0,0,0,0,516567,516567,516567,0,306,307,0,0,0,0,644,0,0,0,0,0,0,0,0,1837,0,0,0,0,0,0,0,0,0,687,688,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,760,0,0,0,0,765,0,0,0,0,0,0,0,0,0,0,4841472,0,0,0,4898816,0,794,0,0,0,0,0,0,0,0,0,0,803,0,808,0,0,0,0,392,0,0,0,396,392,0,0,0,0,0,0,0,2823,0,0,0,0,0,0,0,0,677,0,0,0,0,0,0,0,0,0,0,820,0,0,0,0,0,644,0,0,0,0,0,0,0,3436,0,0,0,0,0,0,0,0,681,0,0,0,0,0,0,680,0,0,794,0,0,0,0,0,0,0,0,644,0,0,794,528,528,528,528,528,3717,528,528,528,528,528,528,528,528,528,528,1381,528,528,528,528,528,846,528,528,528,528,867,871,877,528,882,528,528,528,528,528,900,528,528,528,528,57893,57893,58265,57893,57893,57893,57893,58286,58290,58296,57893,58301,57916,57916,58362,58366,58372,57916,58377,57916,57916,57916,57916,57916,58395,57916,57916,57916,57916,57916,61231,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60686,57916,57916,57916,57916,57916,57943,58452,57943,57943,57943,57943,57943,58470,57943,57943,57943,57943,528,528,528,900,1215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3441,1264,0,0,0,0,0,1269,0,0,0,0,0,1274,0,0,0,0,0,3179,0,0,0,0,0,0,0,0,0,0,679,0,0,0,0,0,0,1294,0,0,1165,0,0,0,1300,0,1302,0,0,0,0,0,0,1284,0,0,0,0,0,0,0,0,0,1301,0,0,0,0,0,0,0,1300,1319,0,1322,0,0,0,1196,0,0,0,0,1330,0,0,1215,1330,1337,528,528,528,528,1343,528,528,528,528,1349,528,528,528,528,528,528,528,528,528,528,1370,528,528,0,57893,57893,57893,57893,57893,57893,155942,0,0,0,0,0,0,0,1285,0,0,0,0,1290,0,0,0,58773,914,58775,57893,57893,57893,57893,57893,58782,57893,57893,57893,57893,58788,57893,57893,57893,57893,57893,60872,57893,57893,57893,57893,57893,60876,57893,57893,57893,57893,57893,58860,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,58917,57916,57916,57916,57916,58922,57916,57916,57916,57916,57916,57916,57916,57916,57916,60403,57916,57916,57916,60406,57916,57916,58930,57916,57916,57916,58937,58939,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59957,57916,57916,57916,57916,57916,57943,57943,57943,57943,58977,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,58998,57943,59016,57943,57943,57943,57943,57943,59021,57943,57943,57943,59025,57943,57943,57943,59032,59034,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59622,57943,59057,528,528,528,528,528,528,57893,57893,57893,57893,57893,57893,1151,0,0,0,0,385024,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5259264,4358144,4358144,4358144,4358144,0,0,1729,0,0,0,0,1736,0,0,0,0,0,0,0,0,1880,0,0,0,0,0,0,0,0,0,1747,1748,0,0,0,0,0,1754,0,0,0,0,0,0,0,3447,0,0,0,0,0,3450,0,3452,0,1776,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5177344,0,0,0,0,0,1794,0,0,0,0,0,0,0,1802,1803,0,0,0,0,0,3207,0,0,0,0,0,0,0,0,0,0,3183,0,0,0,0,0,0,0,0,1810,0,0,0,0,0,0,0,0,0,0,0,0,1841,0,1843,0,0,0,1874,0,0,0,0,0,0,0,0,0,0,0,0,0,3213,0,0,528,528,528,1901,528,528,528,528,1907,528,528,528,528,528,528,528,2441,528,528,528,528,528,528,528,528,3720,528,528,528,528,528,528,528,528,528,528,1918,528,528,528,528,1922,528,528,528,528,528,528,528,2466,2467,528,528,528,528,528,528,528,1417,528,528,528,528,528,528,528,528,3856,528,528,528,57893,57893,57893,57893,528,528,528,528,1968,1969,528,528,528,528,528,528,528,528,528,528,1924,1925,528,528,528,528,57893,57893,59344,57893,57893,57893,57893,59350,57893,57893,57893,57893,57893,57893,57893,57893,61212,57893,57893,57893,57893,57893,57893,57893,57893,57893,59361,57893,57893,57893,57893,59365,57893,57893,57893,57893,57893,57893,57893,57893,59883,57893,57893,57893,59886,57893,57893,57893,57893,57893,57893,57893,57893,59378,57893,57893,57893,59383,57893,57893,57893,57893,57893,57893,57893,59909,57893,57893,57893,57893,57893,57893,57893,59915,57893,57893,57893,59412,59413,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59921,57893,57893,57893,57893,57893,57893,57893,57893,59351,57893,57893,57893,57893,57893,57893,57893,57916,59444,57916,57916,57916,57916,59450,57916,57916,57916,57916,57916,57916,57916,57916,57916,60685,57916,57916,57916,57916,57916,57916,57916,59461,57916,57916,57916,57916,59465,57916,57916,57916,57916,57916,57916,57916,57916,57916,60943,57916,57916,57916,57916,57916,57916,57916,57916,57916,59478,57916,57916,57916,59483,57916,57916,57916,57916,57916,57916,57916,57916,60021,57943,57943,57943,57943,57943,57943,57943,60029,57916,57916,59512,59513,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59470,57916,57916,57916,57943,57943,57943,57943,59546,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59557,57943,57943,57943,57943,59561,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60082,57943,57943,57943,57943,59574,57943,57943,57943,59579,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60735,57943,57943,57943,57943,57943,59608,59609,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60095,57943,57943,2302,2303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5767168,0,2339,0,0,2341,2342,0,0,0,0,0,0,0,0,0,0,0,335872,0,0,0,0,528,2434,528,528,2438,528,528,528,2442,528,528,528,528,528,528,528,2912,528,528,528,528,528,528,528,528,528,3857,528,528,57893,57893,57893,57893,528,528,528,528,2452,528,528,528,2455,528,528,528,528,528,528,528,2925,528,528,528,2928,528,528,528,528,528,2487,528,528,528,528,528,2492,528,528,528,528,528,528,528,0,0,57893,57893,57893,60610,57893,57893,57893,57893,57893,60615,57893,0,2503,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60288,57893,57893,60291,60292,57893,57893,57893,57893,57893,57893,57893,57893,59865,57893,57893,59869,57893,57893,57893,59873,57893,57893,57893,57893,57893,60312,57893,57893,57893,57893,57893,57893,57893,60320,57893,57893,59916,57893,57893,57893,57893,59920,57893,57893,57893,57893,57893,59925,57893,57893,57893,57893,57893,60328,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,58867,50676,58773,990,58870,57916,57916,57916,57916,57916,60005,57916,57916,57916,57916,60009,57916,57916,57916,57916,57916,60014,57943,57943,57943,57943,60088,57943,57943,57943,57943,60092,57943,57943,57943,57943,57943,60097,2856,0,0,0,0,0,0,0,0,0,0,2863,0,0,0,0,0,0,212992,0,0,0,0,0,212992,212992,212992,212992,2893,528,528,528,528,2896,528,528,2898,528,2899,528,528,528,528,528,1356,528,1361,528,528,1365,528,528,1368,528,528,528,528,528,2907,528,528,2911,528,528,528,528,528,528,528,528,528,2494,528,528,2497,2498,528,0,2920,528,528,528,2923,528,528,528,528,528,528,528,528,528,528,528,528,3506,3507,528,528,57893,60308,57893,57893,57893,57893,57893,57893,57893,57893,57893,60317,57893,57893,60321,57893,57893,57893,57893,58835,57893,57893,57893,58842,58844,57893,57893,57893,57893,57893,57893,59381,57893,57893,57893,57893,57893,57893,57893,57893,57893,60902,57893,57893,60905,57893,57893,57893,0,57916,57916,60346,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60354,60369,57916,57916,57916,57916,60372,57916,57916,60374,57916,60375,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,4288,0,0,0,528,57916,57916,57916,57916,60384,57916,57916,60388,57916,57916,57916,57916,57916,57916,57916,57916,60402,57916,57916,57916,57916,57916,57916,57916,57916,59995,57916,57916,57916,57916,6e4,57916,57916,57916,60397,57916,57916,57916,60400,60401,57916,57916,57916,57916,57916,57916,57916,57916,57916,60683,57916,57916,57916,57916,57916,57916,57916,57916,59452,57916,57916,57916,57916,57916,57916,57916,57943,57943,60419,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60469,57943,57943,57943,57943,57943,60434,57943,57943,57943,57943,60437,57943,57943,60439,57943,60440,57943,57943,57943,57943,57943,60422,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61155,57943,57943,57943,528,57943,57943,57943,57943,60462,57943,57943,57943,60465,60466,57943,57943,57943,57943,57943,57943,57943,60752,57943,57943,528,528,528,57893,57893,57893,0,0,0,0,0,3658,0,0,3228,528,528,528,528,3233,528,528,528,3236,528,528,528,528,528,528,3255,528,528,528,528,528,528,528,528,528,528,2482,528,528,528,528,528,3261,528,528,0,0,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60616,57893,60619,57893,57893,57893,57893,60624,57893,57893,57893,60627,57893,57893,57893,57893,57893,58805,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,61460,57916,57893,57893,57893,60654,57893,57893,0,0,57916,57916,57916,57916,57916,57916,57916,57916,60692,57916,57916,57916,57916,57916,57916,57916,57916,59499,57916,57916,57916,57916,57916,57916,57916,57916,57916,60665,57916,60668,57916,57916,57916,57916,60673,57916,57916,57916,60676,57916,57916,57916,57916,58935,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58887,57916,57916,57916,57916,57943,57943,57943,60714,57943,60717,57943,57943,57943,57943,60722,57943,57943,57943,60725,57943,57943,57943,57943,57943,61580,61581,57943,57943,0,0,0,0,4242,0,528,528,528,528,528,528,528,528,2427,528,528,528,528,2431,528,0,3454,0,3455,0,0,0,0,0,0,0,0,0,0,0,0,1883,0,0,0,528,528,528,3485,528,528,528,528,528,528,528,528,528,528,528,528,1384,528,528,528,528,528,3497,528,528,528,528,528,528,528,528,3505,528,528,528,528,528,2453,528,528,528,528,528,528,528,528,528,528,1382,528,528,528,1386,528,57893,57893,60869,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60637,57893,57893,57893,57893,57893,57893,57893,57893,60314,57893,57893,57893,57893,57893,57893,57893,57893,60341,57893,57893,57893,0,2999,0,0,0,57893,60881,57893,57893,57893,57893,57893,57893,57893,57893,60889,57893,57893,57893,57893,57893,58820,57893,57893,57893,57893,57893,57893,57893,58829,57893,57893,57916,57916,57916,60911,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59503,57916,57916,57916,57916,57916,60923,57916,57916,57916,57916,57916,57916,57916,57916,60931,57916,57916,57916,57916,57916,59481,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,58911,57916,57916,57916,57916,57916,57916,57943,57943,57943,60953,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60094,57943,57943,57943,57943,57943,57943,60965,57943,57943,57943,57943,57943,57943,57943,57943,60973,57943,57943,57943,57943,57943,60050,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60745,57943,57943,57943,0,3680,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3439,0,0,0,0,0,3693,3694,0,0,0,0,528,528,528,528,528,528,528,2875,528,528,528,528,528,528,528,528,3704,528,528,528,528,528,528,528,528,528,528,528,528,528,528,3494,528,528,3714,528,528,528,528,528,3719,528,3721,528,528,528,528,528,528,3488,528,528,528,528,528,3492,528,528,528,61091,57893,61093,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57943,57943,57943,57943,57943,57943,57943,61131,61132,57943,57943,57916,57916,57916,57916,61104,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61110,57916,57916,57916,57916,57916,57916,57916,61114,57916,57916,57916,57916,57916,57916,61120,57916,61122,57916,57916,57916,57916,57916,61324,57916,57916,57943,57943,57943,57943,57943,57943,57943,57943,57943,60970,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,61149,57943,61151,57943,57943,57943,57943,57943,57943,57943,57943,528,2761,528,528,528,57893,60110,57893,57893,528,528,57893,57893,57893,0,0,0,3818,0,0,0,0,0,0,0,722,0,724,0,0,0,0,0,0,0,0,3823,0,0,0,0,0,0,0,3675,0,0,0,0,3831,0,528,528,528,528,528,3843,528,528,528,3847,528,528,528,528,528,1357,528,528,528,528,528,528,528,528,528,528,528,1422,528,528,528,528,57893,61205,57893,57893,57893,61209,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60886,57893,57893,57893,57893,57893,57893,57893,57893,59896,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61218,57893,57893,57893,57893,57916,57916,57916,57916,57916,61224,57916,0,0,0,0,57893,57943,57943,58415,57943,57943,57943,57943,57943,57943,58446,57916,57916,61228,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60697,57916,57916,57916,61237,57916,57916,57916,57916,57943,57943,57943,57943,57943,61243,57943,57943,57943,61247,528,4162,57893,57893,57893,61510,57893,57893,57893,57893,57893,57893,57893,57893,61518,57893,57893,57893,57893,58858,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,58903,57916,57916,57916,57916,57916,57916,57916,57916,57916,58913,57916,57916,57916,57916,61523,57916,57916,57916,57916,57916,57916,57916,57916,61531,57916,57943,57943,57943,57943,57943,60955,57943,57943,57943,57943,57943,57943,57943,57943,57943,59581,57943,57943,57943,57943,57943,57943,57943,61536,57943,57943,57943,57943,57943,57943,57943,57943,61544,57943,0,0,0,0,0,0,262144,262144,0,0,0,0,0,0,0,0,0,0,4203,4204,4205,0,4207,528,528,528,528,528,528,528,528,528,4213,4214,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,61564,61565,57893,57893,57916,0,0,0,0,57893,57943,57943,58416,57943,57943,57943,57943,58437,58441,58447,528,528,528,57893,57893,57893,57893,57916,57916,57916,57916,57943,57943,57943,57943,4298,0,528,4299,57893,61644,57916,61645,57943,61646,0,528,57893,57916,57943,0,528,528,528,528,528,528,2425,528,528,528,528,528,528,528,528,528,3246,528,528,528,528,528,528,0,0,0,361,362,0,0,0,0,0,0,0,368,0,296,0,0,0,0,393685,0,393685,393685,393685,0,393685,393685,393685,393685,393685,393685,0,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,1731,0,0,0,0,0,0,0,1741,1742,0,0,0,0,0,278528,278528,0,0,0,0,0,0,0,0,0,416,416,0,0,0,0,0,426,426,0,0,131072,426,0,0,0,0,426,0,0,454,0,426,0,483,483,483,0,0,362,362,362,502,362,362,362,362,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,483,546,57912,546,57912,546,546,57912,546,546,57935,57912,546,546,57912,57912,57912,57912,57962,57962,57912,57912,57912,57912,57962,57962,57912,546,57912,57912,57935,57912,57912,57912,57912,57912,57912,57912,57935,57935,57912,57912,57962,57912,57912,57912,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,368,368,0,703,0,0,0,0,0,0,0,0,0,0,0,0,2298,0,0,0,905,528,528,528,57893,57893,57893,57893,57893,57893,57893,58287,57893,57893,57893,57893,57893,60340,57893,57893,57893,57893,57893,0,2999,0,0,0,57893,58306,57893,57893,57893,57893,58324,57893,57893,57893,0,57916,57916,57916,57916,57916,57943,57943,57943,61129,57943,57943,57943,57943,57943,57943,57943,57943,60741,57943,57943,57943,57943,57943,57943,57943,57943,60753,57943,528,528,528,57893,57893,57893,57916,57916,58363,57916,57916,57916,57916,57916,58382,57916,57916,57916,57916,58400,57916,57916,57916,57916,58936,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60392,57916,57916,57916,57916,57916,0,0,0,0,58306,57943,57943,57943,57943,57943,57943,57943,58438,57943,57943,57943,57943,57943,60448,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60427,57943,57943,57943,57943,57943,57943,57943,58457,57943,57943,57943,57943,58475,57943,57943,57943,528,528,528,528,2284,57893,57893,57893,57893,59633,2290,0,2291,0,0,905,528,0,57893,57893,57893,57893,58324,57893,155942,1151,0,1152,0,0,1157,0,0,0,1266,0,0,0,0,0,0,0,1266,0,0,0,0,0,0,450560,0,0,450560,0,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,1346,528,528,528,1355,528,528,528,528,528,528,528,528,528,528,528,528,3711,528,528,528,58773,914,57893,57893,57893,57893,57893,57893,57893,57893,57893,58785,57893,57893,57893,58794,57893,57893,58855,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,58938,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61121,57916,57916,57916,57916,57943,57943,58974,57943,57943,57943,58983,57943,57943,57943,57943,57943,57943,57943,57943,57943,59045,57943,57943,57943,57943,57943,57943,0,0,0,1730,0,0,0,0,1737,0,0,0,0,0,0,0,739,0,0,0,0,0,0,0,0,1271,0,0,0,0,0,0,0,0,0,0,1762,0,0,0,0,0,0,0,1770,1771,0,0,0,0,0,3422,0,0,0,0,0,0,0,3426,0,0,0,0,0,1834,0,0,0,0,0,0,0,1840,0,0,0,0,0,0,532480,0,0,0,0,0,0,0,0,0,694,0,0,0,0,0,368,0,0,1846,0,1848,0,0,0,0,0,0,0,0,0,0,0,376832,0,376832,0,0,1915,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2499,528,1930,528,528,528,528,528,528,528,528,528,528,528,1943,528,528,0,57893,57893,57893,57893,57893,57893,155942,1151,0,0,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,796,0,0,0,0,805,0,0,0,59373,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59386,57893,57893,57893,2588,0,0,0,57916,57916,57916,57916,57916,57916,57916,57916,57916,60352,57916,57916,57916,57916,57916,57893,57893,59411,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59422,57893,57893,57893,57893,57893,60884,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60903,57893,57893,57893,57893,57893,57916,59511,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59522,57916,57916,57916,57916,57916,61395,57916,61397,61398,57916,61400,57916,61402,57943,57943,57943,3916,528,61261,57893,0,0,0,0,0,0,0,0,0,0,2774,0,0,0,0,59607,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59618,57943,57943,57943,57943,57943,58978,57943,57943,57943,57943,57943,57943,57943,57943,57943,58997,0,0,2326,0,0,0,0,0,0,0,0,0,0,0,0,0,221652,221652,221652,0,0,2504,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61097,57893,57893,57893,57916,57916,57916,57916,57916,528,3229,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2447,528,60618,57893,60620,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61211,57893,57893,57893,57893,57893,57893,57893,57893,59870,57893,57893,57893,57893,59875,57893,57893,57916,57916,57916,60667,57916,60669,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60404,57916,57916,57916,57916,57916,60698,57916,57916,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60709,57943,57943,57943,57943,57943,60463,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59599,57943,57943,57943,59605,57943,57943,57943,57943,60716,57943,60718,57943,57943,57943,57943,57943,57943,57943,57943,57943,59046,57943,57943,57943,57943,57943,57943,57943,60747,57943,57943,57943,57943,57943,57943,57943,57943,528,528,528,57893,57893,57893,0,0,0,3656,0,0,0,0,0,0,0,3432,0,0,0,0,0,0,0,0,0,0,0,0,2323,2324,0,0,57943,57943,61250,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60724,57943,57943,0,4147,0,0,0,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,0,4161,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61517,57893,57893,57893,57893,57893,60898,60900,57893,57893,57893,57893,60904,57893,60906,60907,57893,57916,57916,57916,61627,57916,57943,57943,57943,57943,61631,57943,0,0,0,0,528,528,2870,528,528,528,528,528,528,528,528,528,528,2878,373,373,0,0,131072,373,0,0,0,0,373,0,0,0,0,373,547,57913,547,57913,547,547,57913,547,547,57936,57913,547,547,57913,57913,57913,57913,57963,57963,57913,57913,57913,57913,57963,57963,57913,547,57913,57913,57936,57913,57913,57913,57913,57913,57913,57913,57936,57936,57913,57913,57963,57913,57913,57913,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,528,528,528,528,861,528,528,528,528,528,528,528,528,528,528,528,528,3723,528,528,528,57916,58356,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60677,57916,57893,58799,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,61221,57893,57916,57916,57916,57916,57916,57916,57916,57943,57943,60023,57943,57943,57943,57943,57943,57943,528,528,1931,528,528,528,528,528,528,528,528,528,528,528,528,528,1401,528,528,57893,59374,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,59882,57893,57893,57893,57893,57893,57893,57893,57893,57893,60290,57893,57893,57893,57893,57893,57893,59474,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60920,57916,0,0,0,3824,0,3825,0,0,0,0,3675,0,0,0,0,0,0,0,0,0,0,0,0,0,1227,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,2335,0,0,0,365,0,0,0,0,364,0,0,0,139264,147456,0,0,0,0,0,0,1324,0,0,0,0,0,0,0,0,0,1166,0,0,0,0,0,0,0,0,0,434,131072,0,434,434,0,0,0,434,0,365,434,0,0,0,0,401408,0,0,0,0,0,0,0,0,0,0,0,0,6471680,0,0,0,466,0,0,0,494,494,497,497,497,497,503,504,497,497,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,548,57914,548,57914,548,548,57914,548,548,57937,57914,548,548,57914,57914,57914,57914,57964,57964,57914,57914,57914,57914,57964,57964,57914,626,57914,57977,57937,57914,57914,57914,57914,57914,57914,57914,57937,57937,57914,57914,57964,57914,57914,57914,57977,57977,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,459187,0,0,0,0,0,0,0,0,0,0,0,528,528,528,528,528,528,528,528,0,528,2420,528,528,528,528,528,528,528,528,528,528,528,528,528,1402,528,528,0,0,0,57893,59850,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60287,57893,57893,57893,57893,57893,57893,57893,57893,57893,60302,57893,57893,57893,57893,60305,57893,57893,60307,528,528,528,528,2895,528,528,528,528,528,528,528,528,528,528,528,528,4026,57893,57893,57893,57893,60337,57893,57893,57893,57893,57893,57893,57893,57893,57893,0,0,0,0,0,0,1781,0,0,0,0,0,0,0,0,0,139264,147456,0,0,335872,0,0,57916,57916,57916,57916,60371,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61401,57916,57943,57943,57943,368,368,0,0,0,0,705,0,0,0,0,0,0,0,0,0,139264,147456,0,0,540672,0,0,0,0,735,0,801,0,0,0,0,0,0,0,0,801,0,0,0,0,416,0,0,0,0,0,0,0,0,0,0,0,0,3464,0,0,0,528,528,528,528,862,528,528,528,528,528,528,528,528,528,528,528,528,61203,57893,57893,57893,57916,58357,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61111,57916,1202,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,709,0,0,0,0,0,0,1251,0,0,0,0,0,0,0,0,0,2810,0,0,0,0,0,0,58853,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,59463,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60696,57916,57916,57916,57916,59015,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,60442,1726,0,0,0,0,1733,0,0,0,0,0,0,0,0,0,0,319488,319488,0,0,0,0,0,57916,57916,57916,59978,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59959,57916,57916,57916,57943,57943,57943,60061,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59011,57943,57943,57943,2779,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245760,528,528,2881,528,528,528,528,528,528,528,528,528,528,528,528,528,1404,528,528,57916,57916,60357,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,60919,57916,57916,0,306,307,0,0,0,0,0,0,0,647,0,0,0,0,0,0,1813,0,0,0,0,0,0,0,0,0,787,0,0,0,0,0,0,906,528,528,528,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,57916,57916,57916,906,528,0,57893,58490,57893,57893,58325,57893,155942,1151,0,0,0,0,0,0,1836,0,0,1838,0,0,0,0,0,0,0,2861,2813,0,0,0,0,0,2866,0,57893,57893,58856,57893,57893,57893,57893,57893,57893,57893,57893,50676,58773,990,57916,57916,57916,57916,59495,59496,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61574,57943,57943,57943,57943,0,0,1862,0,0,0,0,0,0,0,0,0,0,0,0,0,327680,327680,327680,528,528,1948,528,528,528,528,528,528,528,528,528,528,528,528,528,1942,528,528,57893,59391,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60313,57893,57893,57893,57893,57893,57893,57893,57893,57893,59922,57893,57893,57893,57893,57893,57893,57893,59491,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61123,57916,57916,0,0,0,57893,57893,57893,57893,59853,57893,57893,57893,57893,57893,57893,57893,57893,60329,57893,57893,57893,57893,57893,57893,57893,57893,57893,59367,59368,57893,57893,57893,57893,57893,59877,57893,59879,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60636,57893,57893,57893,57893,57893,57893,57893,57893,57893,60316,57893,57893,57893,57893,57893,57893,57916,57916,57916,57916,59966,57916,59968,57916,57916,57916,57916,57916,57916,57916,57916,57916,61117,57916,61119,57916,57916,57916,57916,57916,57916,57943,57943,57943,57943,60049,57943,60051,57943,57943,57943,57943,57943,57943,57943,57943,57943,59552,57943,57943,57943,57943,59556,57943,60381,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,61403,57943,57943,57943,57943,57943,60446,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,57943,59554,57943,57943,57943,0,3418,0,0,0,0,0,0,0,0,0,0,0,0,0,0,352256,352256,352256,57893,57893,57893,57893,60871,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,57893,60645,57893,57893,57893,57893,57893,57893,57893,57893,57893,59923,57893,57893,57893,57893,57893,57893,3713,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,2500,57916,57916,61113,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,57916,59973,57916,57916,57916,0,0,0,2310144,0,0,0,0,0,0,2310144,0,0,0,0,0,0,0,0,0,0,0,2310144,0,0,2310144,0,0,0,0,0,0,0,2310144,2310144,0,0,0,0,0,0,0,0,2310144,0,0,0,2310144,0,0,0,0,0,2310144,0,2310144,0,0,0,0,0,0,2310144,2310561,2310561,0,2310144,0,0,2310144,0,0,2310144,0,2310144,2310144,0,2310144,0,2310144,2310144,0,0,0,0,0,0,2310561,0,0,0,0,0,0,0,0,0,0,0,2359296,368,0,0,0,0,2310144,0,0,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310740,2310144,2310740,2310144,2310144,2310740,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459347,459222,459379,459222,2318336,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,4276224,0,0,0,0,4358144,4358144,4358144,4358144,0,914,0,0,0,0,0,0,0,0,0,0,4956160,4964352,0,0,0,0,0,467,2335204,2335204,2335204,467,467,467,467,467,467,467,467,467,467,2335238,2335238,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,467,0,0,0,0,0,0,0,0,0,0,2335238,2335204,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,2335238,0,0,0,2342912,0,0,0,0,0,0,0,0,0,0,0,0,2348,0,0,0,0,0,0,2326528,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5177344,4358144,4358144,4358144,4358144,0,0,0,2359296,0,2359296,0,0,0,2359296,0,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,0,0,573440,0,573440,573440,573440,0,573440,573440,573440,573440,573440,573440,1,24578,3,0,0,4366336,0,0,0,0,0,302,303,0,0,2367488,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,4931584,0,0,0,0,0,0,2351104,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,507904,507904,0,913,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,1180,0,0,0,0,1184,0,0,1187,0,6275072,0,0,0,0,0,0,0,0,0,0,0,989,0,0,0,0,913,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,4359057,5260177,4359057,4359057,0,0,1,24578,3,155942,155942,296,0,0,0,0,0,302,303,0,0,0,0,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,212992,0,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,0,0,0,0,0,4366336,0,0,0,0,0,0,0,0,2412,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,0,4882432,0,0,0,0,0,0,4825088,0,0,5177344,0,0,0,0,5701632,0,0,0,0,0,4358144,4358144,4358144,4825088,4358144,4358144,4358144,4358144,0,0,913,913,913,4826001,913,913,913,913,913,913,0,0,989,989,4842461,989,989,989,4899805,989,0,0,5513216,5783552,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4857856,4874240],r.EXPECTED=[169,185,215,1326,231,1001,278,928,942,1085,320,247,263,307,336,352,368,384,400,914,2264,430,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2268,1707,1603,1403,460,1356,1591,491,507,517,533,1816,1031,2119,564,475,580,596,625,684,700,1905,716,1114,747,778,788,1693,1145,762,804,820,836,852,868,884,900,958,988,1017,972,1997,1047,1057,1073,1101,1130,2028,1562,1190,1205,1221,1237,1253,1269,1298,1314,1342,1174,1446,1372,1876,2073,1633,668,1388,1419,1434,1467,1483,1499,1515,609,1531,1547,1578,444,654,640,1619,1649,1662,1678,1723,1738,1754,1770,1786,1802,1832,1848,291,1864,2228,1892,1921,1937,199,2149,1953,1969,1985,1282,2013,2044,2060,2089,2105,548,2135,2165,2181,2197,2213,1160,2244,731,2260,2264,1457,412,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,2264,419,2284,2288,2290,2290,2290,2291,2295,2290,2297,2301,2304,2311,2307,2315,2318,2322,2326,2330,2334,2338,2345,2345,3446,2344,2345,3427,2352,3605,2345,4169,2345,2345,2345,3950,4664,4990,4059,4582,2828,4588,2345,4069,4598,2345,4069,4603,2734,3100,2397,2497,2359,2366,2466,2372,2376,2345,2345,4266,2345,2345,2383,3820,2359,2359,2392,2419,2419,2419,2419,2405,2427,2345,2345,2345,2345,2345,2409,2455,3819,2345,2345,3099,3100,3100,3100,2495,2398,2398,2398,2504,2359,2359,2359,2482,2419,2419,2419,2517,2345,2345,2345,2457,2345,3100,3100,3101,2398,2398,2398,2359,2359,2359,2359,2359,2418,2419,2419,2419,2419,2419,2424,2437,2345,2345,2345,2345,4505,2729,2345,2345,2345,2345,4509,5101,4513,2345,2345,3904,2359,2359,2484,2419,2419,2519,2345,3864,2345,4865,3100,3100,2501,2398,2538,2359,2359,2359,2359,2359,2548,2419,2419,2419,2419,2395,2490,2345,2345,2359,2483,2419,2549,2508,3755,2345,4867,4911,2398,2400,2359,2515,2419,2525,3605,3100,2476,2401,2547,2550,2816,4868,2399,2481,2485,2735,2532,2503,2361,2368,4866,2476,2360,2420,4909,2537,2546,2486,2533,2362,2542,2554,2567,2571,2575,2579,2583,2586,2586,2586,2598,2591,2586,2587,2595,2602,2606,2610,2614,2618,2622,2626,2630,4594,2634,2345,2345,2903,2640,2345,2345,2999,2345,2345,2645,2345,2345,2345,2345,2345,2345,4208,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,4460,2655,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2655,2345,2345,2636,4128,2345,2345,2345,2345,2635,4127,2345,2345,2345,2345,2635,4127,2794,2345,2345,2345,3016,2798,2345,2345,2345,3017,2799,2345,2345,2345,2806,2729,2876,3308,2345,2915,2345,3310,2345,2922,2345,3536,2683,4475,3831,4927,2685,4422,2850,2345,2345,2345,2345,2345,2345,5004,2345,2345,2345,2345,4417,3024,3547,2854,5007,2861,2345,2345,2345,2345,4422,2869,2345,2345,2345,2345,2345,2868,2729,2345,2345,2345,2345,2345,2873,2345,2345,2345,4443,2345,3549,3338,2880,2345,2345,2345,2345,2887,2729,2345,2345,2345,2883,2880,2345,2345,4951,4956,2345,2345,2345,2345,4604,4971,4982,2345,2345,4805,4988,3762,2345,3965,2345,4436,4591,2907,2345,3192,2909,2345,4490,2345,3191,2908,2345,3491,4849,4476,4920,4920,4920,4849,2720,4477,4477,4477,4918,4922,2683,4476,4863,4478,2719,2684,2432,2429,2431,2563,2345,2345,2345,2345,2345,2345,2984,2345,2345,2345,2511,4068,4075,2345,2345,4081,2345,4085,2345,2345,4099,2345,3067,3768,2729,4088,2928,3046,2947,2932,2935,2938,2940,2940,2944,2345,2951,2956,2345,2345,5022,2729,2345,2345,2345,2345,4180,2345,2345,2345,2345,5023,2345,4654,2345,4496,2345,3077,4168,3570,5100,4176,2345,2345,2345,5024,2345,2345,4147,2345,2345,4258,2345,2345,2339,3845,2345,3726,3911,3122,3918,2345,4757,2345,4949,2345,2961,2974,2978,3641,3718,2988,2996,2722,3003,3008,2345,2998,4205,2345,2952,2345,2345,3697,2345,3015,4630,3021,3029,3033,2412,2991,2723,3040,3497,2345,2951,2956,2345,5067,4831,2345,3623,2964,3050,4101,2345,3156,3059,2345,2345,5115,3712,2387,4578,2345,5120,2458,2509,4221,2345,5107,2345,3202,2763,3060,2345,2345,2345,3733,2345,2951,2733,2345,4755,4856,3111,4236,2557,3086,2345,2348,3162,2345,2345,2527,3154,2345,2345,2347,3161,2345,2345,4684,3167,3432,4676,3096,2345,2345,2345,2345,2472,3106,2345,2345,2345,2345,2346,3105,2345,2345,2345,4878,3110,3119,2345,5067,4832,4234,3023,3126,4109,3602,3171,3176,2345,4069,3180,2345,4170,3176,2345,2345,3187,2345,4682,3217,4094,3257,3196,3972,3190,2345,3974,2345,3251,3209,2345,3973,2345,3214,3218,3223,3227,3231,4192,2345,3229,2345,3237,3606,3242,3246,4319,3250,3238,3230,3255,3261,3266,3266,3266,3274,3278,3262,3262,3262,3285,3289,4198,3290,4959,3294,4246,5038,3298,3302,3306,3316,3322,3329,2345,2345,2345,2345,3926,2345,2345,2875,3333,3337,4593,3342,3347,4397,3357,3361,3365,3366,3366,3370,2345,4118,3376,2345,4445,3382,4945,3392,2721,3398,2829,3406,3410,3417,3424,3004,3431,3947,2345,3426,2345,2345,3115,3658,4038,4560,2345,2345,2345,2345,2345,2345,2345,2650,2345,2345,2454,2345,2345,2345,4867,3100,3100,3100,3100,3101,2398,2398,2398,2398,2545,2359,2359,2359,2359,2359,2464,2419,2419,2419,2419,2419,2395,2470,4119,2345,2345,3437,3706,3578,3394,4115,2345,5085,3441,3522,4170,3451,2345,2345,3132,3489,2345,2345,2345,2345,3143,3495,2345,2345,2345,2345,4516,3484,2345,4070,3455,2345,2345,2345,4071,3456,2345,2345,2345,3460,3464,2345,2345,2345,3098,3100,3100,3100,3100,3100,2397,2398,2398,2398,2398,2398,2480,4118,3830,2345,3469,3584,3579,3476,4935,4215,3011,2345,2345,4515,3483,2345,2345,3191,2898,2345,2345,2345,2892,2345,2345,2345,2897,2345,2345,2345,3963,3232,2345,2345,2345,2345,3517,3490,2345,2345,2345,2345,4515,3520,2345,2345,2345,2345,3982,2345,3526,3585,3535,4117,2786,2345,2345,3541,2345,2345,2345,2345,4530,3545,2345,2345,2345,2345,3541,2345,2345,2345,2345,2456,2345,2345,4910,3100,3100,3100,3100,2476,2398,2398,2398,4531,3232,2345,2345,2345,3560,3565,3576,4115,3204,3583,2345,5095,2345,2345,2345,3163,3064,2345,2345,2345,2345,3219,3071,2345,2345,2345,2345,3157,5054,2345,2345,2345,5094,2345,2345,2345,5053,2345,2345,2345,3590,3966,3561,2345,2521,3137,2345,2345,3754,2981,3141,5078,4842,4667,2967,3147,2528,3155,2345,2751,5076,2686,5082,4996,5091,5099,2345,2345,5072,2345,2345,5105,2345,2345,4450,3818,2345,3825,2345,2460,3835,3839,2345,2345,2345,4069,3843,2345,4928,2345,3443,2345,3828,2345,4052,3148,2345,2386,3114,3150,4047,3149,3635,3635,4052,3113,3150,3150,3150,3980,3634,3112,3635,4053,3622,3635,3150,4974,4976,3627,4978,3631,3640,2345,2345,2345,2345,4428,3779,3723,2345,3595,3645,3649,4091,3655,3663,3667,3671,3675,3679,3680,3684,2345,2801,3689,2345,4841,3695,4295,2763,3350,3199,3691,5040,3485,3701,4584,3465,3705,4823,3710,3716,2345,2345,2802,3690,2345,4616,4756,3722,3731,3957,3201,3737,3750,3759,2345,3940,3766,2345,2345,2345,3312,4745,4749,4761,4765,4769,4773,4777,4781,4785,4788,4792,4795,3504,3232,2345,2345,2345,3505,2345,2345,2345,2646,3772,2345,2345,2345,4427,3778,2345,4164,4095,2345,3785,4903,2651,2345,3753,2345,2345,3793,2345,2345,2345,2345,3098,3100,3100,3100,3100,2398,2398,2398,2398,2478,2359,2359,2345,3797,2345,2345,2345,2345,2345,3801,2345,2345,2345,2345,2345,3805,2345,2345,3846,2810,5004,2345,2345,2345,2345,4151,2345,2815,2820,2833,4077,2838,3850,2345,2345,2345,2345,4737,2345,3855,2458,4716,3837,3863,2345,2345,3172,3871,3924,2345,2340,2345,2345,4149,2345,2339,3845,3723,3089,3789,2345,3930,4129,2345,2776,3914,4135,2728,2345,2345,2345,2345,3210,2345,2784,3082,3938,2345,2790,5046,2345,3935,2345,3944,2730,3877,2345,3352,2732,3955,2731,4157,4157,4157,3351,2732,2732,2732,3531,4156,4716,4157,4718,3878,4157,2732,2345,2345,2345,2345,3851,2345,2345,2345,2345,2345,3850,2345,2345,2345,2345,2345,2345,2345,3612,2663,2345,2345,2345,2345,2345,2345,2345,3780,3961,2345,2345,3920,3970,3978,3986,3990,3994,3998,4001,4005,4007,4011,2345,2345,2345,4015,2345,3606,4752,4107,3553,4020,4024,4643,4888,4028,2345,4851,2811,4032,4826,4037,4042,4046,2345,2345,4016,2345,3746,4051,3551,3877,4057,3636,4570,4063,2345,2345,2345,2780,2345,2345,2345,2510,4067,4105,2924,4156,4113,2386,4123,4538,2345,2345,2635,4127,2345,2345,2345,2345,2641,4133,2345,2345,2345,2345,2778,4181,2345,2457,2345,2345,4984,5025,2345,4139,2345,2855,3611,2345,2857,2345,2345,3386,2345,2856,2345,2345,3830,3616,2345,3445,2345,4145,2345,4670,3724,4155,3572,3114,4161,2345,2345,2345,3472,2729,2345,2345,2345,2345,2842,2345,2345,2345,2345,3081,2846,2345,2345,2345,2345,2345,2739,2692,3821,2749,2757,2345,2761,2767,2345,2771,4802,2345,4185,3077,3725,4231,3041,4220,2345,5087,2729,2345,2345,2911,4134,2345,2345,4172,2345,2345,2345,2354,3845,2345,3723,3606,2458,3787,3901,2345,3781,3537,4190,2345,2345,2910,4196,3378,3685,3607,4673,4202,2823,2345,4033,2729,2345,3931,2956,2345,3925,4214,4219,4225,4240,4244,4264,2345,4250,2345,4252,2345,2345,4256,2345,4251,3343,4538,4228,4262,2345,4270,3353,2345,4610,2345,3183,3130,2345,2345,2345,2346,3136,2345,2345,2345,2345,3183,3130,2345,2345,2673,2345,2345,2677,3814,2690,2696,2700,2704,2708,2712,2716,3744,2727,4275,4284,4288,4419,2668,3659,2733,4292,4308,4420,3556,3556,3556,4317,3530,4421,4335,4323,3555,3529,3568,3025,2669,3556,4330,4339,4341,4333,4326,4345,4349,4351,2345,2345,2345,2345,3897,2992,2345,4313,4355,4359,4390,4363,4367,4371,4375,4379,4381,4383,2345,2345,2345,4937,4387,4657,4394,4401,4460,2827,4636,4599,4278,4407,4411,5122,3727,4426,4432,2345,4440,4449,2345,2345,4938,3774,2657,4454,4458,3325,2345,3053,4464,4468,2345,2345,2345,5128,4474,2345,2345,2345,4482,2345,2345,4271,2888,2345,2345,2345,2345,3233,2345,2345,2345,4962,2864,3650,2893,2345,3727,4483,2345,2345,2345,3055,4487,4494,2345,2345,3890,4311,2433,2446,3618,2826,4186,5066,4947,2733,2345,2345,2345,3413,4500,2345,2345,2345,2345,3420,2800,4414,4622,4520,3318,2345,2970,5060,2345,2345,2345,2377,4524,2345,2345,2345,2345,3869,2345,2345,2345,2345,4171,3876,2345,2345,2345,4069,3870,2345,4952,4311,2443,4535,2827,3865,3433,2345,2345,2345,2379,4543,2345,2345,2345,3858,2345,2345,2345,2345,3859,2345,2345,2345,2957,3045,2345,2345,2377,4548,2345,2345,2345,2345,3281,4553,2345,2345,2345,2378,4549,4470,2345,4558,2440,4564,3203,4831,2345,2345,2377,4568,2345,2345,2345,3951,2345,2345,2345,4574,2345,4640,2345,4069,4647,2560,4651,4661,2345,4680,4539,4642,5031,2345,5014,4688,4830,4815,4403,3883,4642,4692,4628,4816,4696,4696,4702,4830,4706,4714,4714,4722,2414,2449,3808,4731,2414,4906,2450,4735,4725,4727,4741,4829,2345,2345,2345,2345,3925,2345,2772,3501,4141,3509,4115,4215,3074,2345,2345,3513,4799,2345,2345,2345,2345,4809,3015,4813,4820,4967,2388,2680,4210,4836,4554,2345,3372,2345,2345,3384,2345,2345,3372,2345,2345,2856,2345,2345,3589,3594,3599,4708,3872,4840,4846,2345,4710,4855,2345,2345,4544,4860,2834,3742,4965,3080,4872,4877,4882,2345,2345,2345,2345,3606,4886,2345,2345,2345,3478,4892,2345,2345,2345,3882,2663,2459,3092,3887,2345,2345,3894,2345,2345,2345,2355,2345,3479,2345,2345,2345,2345,4897,3616,2345,2345,4544,4915,3035,4280,2918,3446,4873,4698,4926,2345,2345,2345,2345,2345,4932,2345,2345,2345,2345,3606,4942,2345,2345,4435,3377,3907,2902,2345,4489,2729,2345,3651,2902,2345,3192,2909,2345,4994,5020,5001,3205,5011,2345,2345,2345,2345,2741,2745,2345,2345,2345,2345,4170,4608,2345,2345,4614,4989,4620,4626,3755,4950,2345,4634,2345,5013,2345,2744,2345,2345,2345,2345,2345,2743,2345,2345,2345,2345,2345,2743,4900,2345,4501,4915,3036,5018,3447,3864,5029,2345,2345,2345,4170,5035,2345,2345,2345,2345,4303,5044,2345,2345,2345,2345,5050,2345,2345,2345,2345,4304,4900,2345,3811,3740,4997,5058,5064,2345,2345,2345,5071,2345,2345,2345,3269,2345,2345,2345,4297,4301,2345,3402,2800,2345,2345,2345,2345,3401,4528,2345,2345,2345,2345,3401,4528,4470,4299,2345,2345,3270,2345,5111,4997,4577,2345,2345,2753,2345,4893,5116,2345,2752,2491,2458,2345,5126,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2345,2661,3388,2667,2345,7267,5893,5132,5144,5141,5151,5153,5153,5153,5153,5148,5176,5152,5153,5153,5153,5159,5163,5176,5153,5153,5169,5164,5153,5180,5155,5154,5168,5151,6159,5173,5199,5205,5205,5205,5209,5209,5201,5213,5217,5220,5224,5228,5245,5232,5242,5234,5238,5236,5249,5252,7269,7026,5260,5273,5276,5276,5276,5255,5821,5295,5276,5276,5276,5276,5268,5730,6588,6270,5301,5276,5276,5254,6597,5821,6646,6646,6646,6646,5394,5396,5325,5449,5322,5396,5396,5325,5276,5384,5428,5333,5409,5274,5276,5276,5276,5286,5290,7174,5276,6844,7218,6005,5276,5276,5276,6390,6115,6646,6647,5323,5396,5397,5400,5428,5428,5428,5428,6645,6646,6646,5398,5400,5428,5345,6844,7217,5353,5276,5266,5276,5276,5388,7455,5457,5396,5396,5396,5396,5276,5399,5402,6779,5408,6667,5275,5276,5275,5276,5276,6239,5276,6839,5410,6667,5275,5276,5275,6561,5276,5275,6839,6843,7454,7155,5276,5276,7229,5276,5276,6466,5276,5276,6526,5276,5276,5276,5302,5276,5276,6646,5393,5396,5396,5396,5400,5407,6668,5276,5276,5268,6066,5402,5428,5428,5428,5429,6646,6646,6646,5395,5396,5396,5396,5326,5368,5419,5276,5276,5276,5305,5401,5428,5428,5428,5430,6646,5427,5428,5428,5428,6644,6646,6646,5402,5387,5276,5276,5276,5307,6771,6646,5394,5396,5396,5398,5427,5276,5276,5268,6630,5397,5403,5276,5276,5269,5731,6036,5400,5400,5402,5428,6644,5402,5428,5428,6643,6646,5368,5400,5427,6643,6646,6646,6646,5396,5396,5396,5397,5387,6646,5395,5324,5368,5276,5999,5276,5276,7234,6237,5276,6239,6237,5401,6643,5393,5324,5415,5434,5460,5464,5463,5462,5461,5326,7445,6108,6418,5509,5541,5438,5442,5508,5508,5508,5508,5486,5515,5454,5468,5472,5491,5543,5496,5508,5508,5538,5446,5582,5487,5506,5581,5513,5475,5519,5535,6805,6808,5547,6811,6814,6815,6816,5551,5554,5558,5569,5573,5579,5492,5586,5590,5594,5598,5605,5604,5601,5609,5613,5561,6981,5276,5276,5276,5308,5312,7372,5276,5276,5276,5309,7137,5276,5276,5276,5329,5276,6389,5276,5276,6557,5276,6391,5276,5276,5275,5276,6392,6392,5276,5276,5279,5276,6282,5276,5276,5276,5366,5276,6e3,6885,5910,7281,5626,5297,5629,5276,5276,7348,5276,5276,7354,5276,5276,5276,5631,5640,5899,5276,5647,5276,6987,5263,5186,5654,5657,5659,5660,5664,5668,5673,5672,5677,5679,5680,5680,5684,5686,5693,5688,5700,5688,5697,5689,5704,5276,5276,7355,5276,5276,5276,5648,6027,6933,6281,5898,5276,5276,5276,5367,5276,5276,5276,5368,5400,5708,6023,5276,5276,5281,7411,7471,7426,5276,5276,6043,5135,5276,5276,5281,7468,6467,5276,5716,5276,5276,5721,6061,5339,5276,5276,5304,5276,5341,5737,5745,5751,5749,5276,5276,5276,5369,6219,5751,5276,5276,5306,5310,6765,5276,5276,6988,5276,6526,5277,6886,6113,5784,5276,5793,7239,5808,5855,5812,5831,7055,5318,5276,5276,5276,5372,5348,7452,5827,5832,7056,5137,5276,5276,5276,5376,5368,5276,6525,5276,5414,5276,7452,7443,5276,5276,7419,6200,5276,5925,5276,5276,5276,7249,5717,5276,5276,5276,5387,5795,7243,5854,5845,7241,5851,5855,5846,7242,5852,5856,5317,5850,5854,5845,5898,5860,5276,5276,5276,5388,6362,5276,5854,5876,5318,5276,5276,7441,6519,7240,5851,5855,5877,5898,5881,5839,5276,5276,5370,5276,5276,5853,5885,5318,5276,5276,7452,6134,7239,6135,5854,5886,5898,6404,5870,6865,5276,5276,6117,5869,6864,5898,5276,6867,5276,5276,5276,5617,6117,5890,6866,5276,5276,5276,5620,6857,5276,6719,6723,5276,5276,7455,6886,6721,5898,5276,5276,5373,5276,5914,5276,5898,7023,5934,5938,5942,5945,5948,5949,5949,5950,5954,5954,5954,5954,5954,5958,5961,5276,5277,5921,5930,5276,6659,6079,5966,6872,6872,5276,5276,5276,5650,6487,5276,5711,6194,7445,7444,5368,5276,6e3,6525,5276,7025,5302,6259,5276,5370,5979,6510,5997,5276,6523,5276,5276,6660,6080,5967,5898,6890,5997,5276,6889,5276,5276,5276,5841,6010,5276,6606,5276,5276,5276,5822,6016,5276,5276,5276,5787,5276,6605,6017,5276,5277,5962,6001,7450,5276,5276,5276,5826,5831,5712,6195,7052,5276,5368,5276,5276,5366,5369,6121,5276,6513,5276,6559,5276,5276,5386,5282,5276,6093,5276,5276,5276,5864,6029,5276,5276,5276,5896,6848,5998,5276,6523,6792,5276,5276,6397,7112,6033,6047,6053,5898,5276,6034,6048,6054,5276,5278,5281,6211,6035,6049,6055,5276,5278,5909,5276,5279,6836,6888,5276,5276,5276,7452,5761,6526,6233,6268,5276,5280,5303,6536,5276,6268,6140,6038,6070,5276,5276,5400,5400,5400,5400,5401,6066,6588,6039,5894,5276,7456,5276,5276,5276,6002,5276,5276,5276,5975,5277,6078,6084,5367,6266,7445,6236,5999,6524,5276,6100,6037,6070,5276,5276,5477,5481,6630,6587,6090,5894,5276,6080,6086,5276,5276,5478,5482,6099,5276,5276,5276,6003,5276,5276,6036,6107,5276,5276,5276,6072,6033,6588,6106,5276,5276,5276,6073,6085,5276,5276,7023,6099,5276,5276,5281,6583,5728,5732,6105,5894,5729,5733,6106,5276,5281,6629,6586,5727,5731,6104,6108,5276,5276,5276,6117,5890,5371,6e3,6125,6268,6456,5276,6388,5276,5276,5276,6523,5276,7417,6416,5276,5276,5276,6119,5276,6524,6525,6659,6322,5276,5276,5276,6074,5363,7445,5276,5370,6e3,6236,5276,6320,5799,5803,5276,5276,5276,6127,6319,5798,5802,5276,5276,6321,5276,7260,7446,5368,6001,6320,5799,5801,5276,5276,6319,5797,5276,7073,5276,7258,7447,5276,7447,5302,7075,5803,5276,5276,7072,7076,5276,5281,7468,7477,5276,5276,7073,7260,7446,5276,7074,5802,5276,5285,5289,7173,6339,7258,7447,6339,7077,5276,6117,7076,5276,6342,5276,6117,6342,6139,6117,6200,6978,5276,6978,5276,6978,5276,7445,6197,5276,6237,6722,5276,5276,5372,7365,6199,6197,5276,6199,5276,5925,7445,6198,6198,6198,5276,5276,5926,6198,5276,6896,6896,5389,6536,5368,5525,6145,5276,5276,5276,6133,6358,5367,5276,5276,6198,6537,6199,6536,6200,5276,6537,5276,5276,5276,6480,6167,6152,6171,6175,6179,6181,6185,6185,6181,6189,6189,6189,6189,6189,6191,5276,5276,5564,6363,6206,5276,5276,5276,6199,6200,6251,5898,5276,5276,5565,5371,5276,5276,5575,6934,6200,5276,7454,5803,7356,5276,6293,5276,5804,5276,5287,5291,7160,7066,6196,5276,5285,6217,6223,7106,6232,5276,5287,7149,7129,6243,5276,7260,5276,5288,7150,7141,6257,5276,5789,5276,5276,5276,6202,6263,5276,5276,5276,6201,5367,5369,5387,6274,6253,5278,6018,5276,5276,5642,5276,5276,5276,6388,6113,5193,6286,6935,6040,6287,6936,6041,5276,5276,5191,5195,6288,6937,6042,5276,5276,5276,6226,5385,6114,6252,5276,5307,5311,5315,7420,7354,5276,5276,5739,7397,7403,6298,6329,5803,5276,5276,6006,6299,6330,5276,5276,5276,6265,6300,6331,5276,5276,5753,5752,5387,6275,5897,5276,5328,6552,6547,5803,6197,7453,7421,6267,6392,5479,6312,6329,5276,6458,5480,6313,6330,5276,5276,5764,5276,5385,6246,6253,5276,5363,5367,5276,5276,6536,6317,6267,5276,5276,5276,5621,6392,7412,6327,6332,6301,5803,5276,5276,5815,7444,6522,5276,5276,5375,5276,5276,5365,5276,5276,5916,5276,5276,5276,6294,5368,5386,6336,5276,5365,5276,6535,5276,6820,7444,5276,5276,6519,6308,5276,6198,5276,7452,5280,5276,5276,5276,6307,6197,5276,6843,5276,6356,6250,6678,5276,5276,5276,6368,5276,6844,5894,5276,5369,5998,6524,5276,5276,5276,5277,6208,6362,5276,5276,5276,6371,5276,6846,5276,5276,5898,5276,6005,5276,5276,6005,5276,5276,6846,6004,6002,6846,6005,6005,6005,5276,5276,6004,5276,5276,6005,6847,5276,5276,5995,6375,5894,5276,6520,6383,5276,5276,5276,6404,5871,6112,7024,6387,6111,5276,5276,5276,5363,6401,6761,6409,6972,6429,6432,6433,6434,6438,6438,6438,6438,6441,6443,6444,6444,6451,6451,6451,6451,6448,6452,5276,5276,5276,6425,5348,6566,5276,5276,5276,6463,6370,6494,5276,5276,5973,5276,5362,6468,5276,6469,6475,5276,5276,5276,6519,5276,6484,5276,5276,6e3,5389,6228,6477,5276,5276,6012,5276,6112,5276,5276,5276,6520,5276,5276,5276,6396,5304,6197,5276,5276,6060,6059,5276,6499,6507,5276,5386,5283,5276,5276,6395,5276,5276,5279,6208,6518,5276,5276,5359,5276,5276,5276,6524,5276,5276,6534,6534,5276,5388,5276,5284,6546,6618,5276,5276,6109,5903,6553,6548,5276,5276,6116,5998,5349,6567,5276,5276,5276,6392,6611,5305,6199,5276,6537,6265,5276,6236,6525,5276,6830,6573,5818,5276,6831,5501,5819,5276,6832,5502,5820,6830,5500,5818,5276,5422,6847,5276,5522,7448,5276,5636,6001,5998,6565,5276,5276,5276,6525,5276,5276,7449,6887,6493,5276,5641,6843,5276,5276,5276,6237,6537,5276,6268,6140,5276,6390,5276,6459,6571,6577,5821,5276,5276,5276,6657,5276,7285,5499,6578,5276,5276,6886,5279,5276,5649,6028,6094,5276,6458,5276,5276,5276,6526,7024,6877,5256,6579,5276,5276,5276,6528,6598,5276,5276,5276,6536,5276,6592,5276,5276,5276,6620,5276,6391,6459,5276,5739,7123,6938,5281,6583,6579,5276,5741,7125,6332,6602,5276,6459,5276,5741,7125,6522,5276,6404,5871,5280,5276,5302,5276,5757,5276,5356,6392,6526,5276,5276,6118,5279,6610,5276,5276,5276,6783,5367,6615,5276,5276,5276,6784,5276,6919,6923,5276,5777,5276,5276,5327,6542,5280,6537,6266,5276,5788,6264,5276,5288,7184,7189,5276,5277,5276,5367,5276,6268,6141,6712,6424,5276,5276,6126,5898,5276,5276,5632,6626,6634,5276,5276,6131,6414,6108,5276,5276,6395,5276,6844,5276,5276,5917,5276,6521,5276,6395,6522,6729,6846,5276,5375,6502,6651,6664,6672,6682,6685,6689,6693,6693,6693,6695,6697,6697,6697,6697,6701,6702,6702,6702,6703,6707,5276,6711,6423,5276,5276,5276,6735,5276,6716,5276,7351,5276,6727,5276,7420,6268,6969,6745,5276,5276,5276,6785,5450,5276,5276,5276,6793,6743,6094,5276,6750,6751,5276,5276,5276,6844,6212,5276,5276,5276,6847,5276,5276,6755,5276,5276,6238,5276,6524,6798,6267,6759,6771,6766,5276,5276,5276,6877,5194,6287,5276,7275,5276,5276,6248,5276,5276,6776,6772,6767,6790,5276,6792,5276,5907,5276,6269,5894,7260,7023,5276,5276,5276,6111,6392,6422,6847,5276,6100,5276,6888,5276,5276,6521,5276,5276,6194,7446,5368,7418,5276,5276,6293,5276,5276,5276,6269,6206,7033,6523,6797,6266,5312,5316,5276,5276,5276,6921,5313,5317,5276,5276,5276,6933,6792,6791,5276,5276,6305,5304,6420,6424,5276,5276,6319,6922,5276,5276,6118,5276,5374,5276,5276,6535,5276,5276,7034,7452,6826,5276,5908,5278,6495,5276,6519,5276,5276,5276,5281,5255,6598,5276,7033,5863,6828,6852,5314,5318,5276,5276,6913,5276,5276,5276,6958,6858,5318,5276,5276,6321,5800,6857,5317,5276,5276,6340,5802,6535,5276,6862,5276,6022,5753,5276,5278,5276,5276,7210,5276,6871,5276,5276,5276,7191,6199,6200,5276,5276,5276,7042,6425,5276,5276,6876,6887,5276,5367,6820,7444,5276,6002,5276,6194,7052,5276,6637,6520,5276,6536,5276,6822,5276,5276,6341,5276,7204,5276,5276,5276,7203,5367,5276,6786,5276,5276,6392,6921,6821,5276,5276,6904,5276,5276,6388,6391,6480,5276,5276,5276,7239,5276,6478,5367,5276,6095,5276,5276,6394,5276,6897,5276,5276,6883,6535,5276,5371,6904,5364,5276,6894,5276,6110,5276,5276,5981,7461,7451,5276,5276,5276,5983,7470,5990,5283,6536,6901,5276,6114,5276,6001,6911,5374,6535,5368,5803,5276,6392,6412,5369,5276,5276,5366,5364,6537,6364,5364,5276,5367,5371,5366,5364,5276,5276,6536,5365,5276,5366,5276,5366,5367,6538,6538,6538,5773,5767,5769,5771,5771,5772,5276,7445,5183,5276,5282,5917,7454,6113,6917,6942,7063,5336,6951,6962,6966,5531,6992,6995,6995,6998,7003,7002,7002,7004,7008,7009,7015,7013,7013,7013,7013,7019,7022,7030,5276,5276,6115,5375,5528,6927,5276,7445,6842,7453,6149,6156,6163,7038,6983,5276,5276,6392,7229,5277,5276,5276,7046,7060,5276,7070,5276,6116,5999,5276,6117,5276,5276,5364,5276,5276,5276,7240,7085,5276,5276,5276,7337,5349,5276,6906,7086,5276,6117,5368,5276,5276,6907,5276,7090,5276,6120,5276,5368,5389,6113,7094,5276,5276,5276,7338,6840,5276,6782,7444,6985,5276,5896,5276,6197,5276,5276,7024,5276,7104,5277,5276,5276,6947,6946,5276,6378,5276,5276,5276,7356,5276,5276,7356,6396,7111,7118,6379,5276,7119,6094,5276,5276,6405,5872,5898,6956,6954,5276,5276,6422,6847,7144,5276,5276,5276,7363,5285,5289,7113,7142,5286,7148,7114,7143,6201,5367,5276,5276,6458,5480,6298,7452,7154,5276,5895,5290,7159,7164,5318,7066,5318,5276,5276,6458,5481,6301,6676,5276,5276,6199,5276,5276,5276,6879,7180,5276,5276,5276,7364,5290,7174,7179,5276,5276,7178,5276,5276,5276,7380,5740,7169,5276,5276,6467,5276,6677,6197,5276,5924,7196,6975,5276,5276,6467,7049,5285,7195,7185,6391,6116,5276,5276,5276,7208,7454,5276,5276,6473,6477,6526,5276,7449,5276,6197,6520,5276,7446,5276,5375,7224,5276,5276,5276,7381,7214,5276,5276,5276,7408,7223,6847,5276,5276,6479,5276,7222,6425,5276,6201,6886,6492,7200,5276,6237,5276,5276,6841,6675,5276,5276,5387,5276,5276,6488,5276,6878,6781,5276,5276,6514,5276,5276,6879,7230,5276,5276,5276,7446,7228,5276,5276,6249,7452,5276,5389,5276,6198,6197,5276,6e3,5276,6238,5276,6524,6201,5276,6201,7449,5276,6193,7445,5276,5280,6209,6213,5276,6520,5276,5281,6065,6587,6879,7455,5276,5276,6525,6526,6659,6079,7450,5276,6395,7455,6621,6847,5276,7238,5276,6622,5276,5276,6526,7416,5276,6622,5276,7247,6620,7455,5276,5276,6530,5276,7391,6527,6621,6847,5276,5276,6537,5276,5276,6536,6621,6847,7455,5387,5388,6847,5388,7344,5276,5276,7229,7453,5386,5423,5389,5276,5276,6593,5276,5388,5276,5386,5388,7253,5276,7258,7446,6196,5276,5363,5276,6210,6887,5276,5894,5276,5276,5276,5971,7257,5276,5916,6640,7264,6258,5276,5189,5276,7260,5916,7259,6503,7097,7283,7273,5724,7100,7135,7279,6930,7132,7289,7293,7302,7295,7297,7306,7298,7317,7310,7311,7315,7318,7326,7326,7328,7324,7322,7332,7335,5276,6218,5750,5276,5276,7362,7366,7364,7342,5276,6467,5389,5281,5276,5276,6621,5276,5276,6393,5276,5915,5276,6227,6476,5276,5377,6746,5276,5386,5276,5276,5276,7449,5276,5276,7360,7370,7376,7385,5276,5276,5276,7450,5276,5276,6529,7386,5276,6265,5276,5276,5378,6094,7392,5276,5276,5276,7451,7342,7445,6201,5276,6266,5276,5276,5382,5400,5400,5400,5427,6389,6113,5276,5276,6235,6234,5276,5276,5276,7457,5276,6526,6716,7433,7396,7402,5276,5276,6733,6739,7403,5276,5276,5276,7466,7408,7398,7404,6844,5276,6847,5276,6267,6140,5276,5388,7230,5276,5414,5400,5400,5400,5428,7342,7447,7451,5276,6268,5276,6237,6268,5276,5276,7356,6110,6268,5276,5276,5276,5643,7409,5986,7425,5276,6292,5276,5276,5740,7124,7030,7410,5987,7426,5276,6306,5305,5276,5276,6201,5276,5276,5276,5739,7168,7411,5988,7427,5276,6323,7446,6117,5276,5371,5276,5276,7454,5276,6887,5276,5985,5989,6236,6846,6003,5276,6004,5276,6004,6002,5276,6845,5276,5276,5276,6802,5311,6560,7449,5276,5276,5281,7200,5276,6393,5276,7452,5276,5276,5276,6388,6113,5276,6233,5836,5898,5276,5276,7387,5868,7434,5276,5276,5276,6877,7228,6201,5276,7452,5962,5276,5276,5276,6853,5315,5898,5276,5276,7431,5276,5276,5276,6878,7229,5984,7471,5991,5276,6340,5803,5276,5780,5276,5990,5276,5276,5276,6920,5821,5982,7469,5989,5276,6346,6351,5276,5276,6388,6113,5276,5276,6946,5276,5276,7438,5276,5276,7024,5276,5276,5276,7467,7476,5276,5276,7477,5276,5276,5276,7025,5276,7450,5276,5388,5281,6279,5276,5276,5622,5315,5276,6389,6114,5276,6347,6352,5276,5276,5276,7444,5276,5276,5276,6945,7466,7475,5276,5276,7041,5276,5631,5276,5388,5282,7466,7462,5276,5276,5276,7040,5276,5276,5276,7081,5276,5303,5276,5276,5276,7110,6654,0,0,1075838976,2097152,-1845493760,0,0,2147483648,16777216,4194560,4196352,270532608,2097152,2097152,268435456,4194432,16777216,4194432,3145728,541065216,-2143289344,4194304,4194304,4194304,4194304,541065216,4194304,4194304,4194432,37748736,-1606418432,541065216,541065216,541065216,541065216,4194304,4194304,4196352,-1606418432,-1606418432,541065216,541065216,4194304,4198144,541065216,541065216,-2143289344,-2143289344,8425488,4194304,4194304,4194304,1,32768,0,2147483648,16,33554432,33554432,0,2,4,112,128,256,3584,16384,37748736,742391808,239075328,775946240,775946240,775946240,171966464,171966464,171966464,171966464,239075328,171966464,775946240,239075328,4718592,64,4718592,2097216,4720640,541589504,4194368,541589504,4194400,4194368,-2142763008,541589504,541065280,4194368,4194368,541065312,541065280,-2143289280,4194368,-2143285408,-2143285408,-2143285440,-2143285440,-2143285440,-2143285440,-1605890240,-2142761152,-2109731008,-1606414528,-2142761152,-1606414528,-2143285440,-2143285440,-1606414528,-1606414528,-2143285440,-2109731008,776470528,-1908404416,775946304,-1908404416,2,4,8,16,512,1024,4194304,128,128,0,2147483648,524288,5242880,2147483648,0,0,2,12,64,256,2048,2048,0,0,0,0,1,0,0,0,2,0,0,0,3,4,16,224,256,512,1024,16777216,16777216,0,0,2147483648,65536,1792,0,0,0,8,0,0,0,12,32,64,1024,2048,57344,262144,50331648,268435456,1073741824,2147483648,0,0,1536,64,524352,524352,524352,0,0,0,62,64,128,64,262144,1048576,0,2147483648,2097152,0,-2113929216,0,0,-1979711488,-1912602624,64,64,1048576,128,256,2048,262144,524288,4096,1024,1024,0,-570425344,32505856,0,0,48,25165824,0,0,0,33554432,268435456,0,0,0,524288,0,0,0,32,0,0,0,44,64576,319029248,0,524288,524288,524288,0,64,0,0,0,64,0,96,96,96,524352,524352,524352,524352,524288,524288,524288,524288,64,64,0,64,128,128,128,128,2048,2048,0,0,524288,524288,64,64,128,2048,0,0,64,128,8388608,524288,64,64,64,64,32,96,64,96,96,524352,96,160,1056,262176,1048608,2097184,4194336,536870944,40,262176,32,96,0,0,0,60,40,48,1120,96,96,64,524352,0,524288,64,96,524352,0,524288,4195360,6291488,2097184,2097184,4194336,4194336,4194336,32,56,0,4,16,32,64,128,256,1536,2048,40,262184,40,40,40,40,40,262176,32,32,6292512,4195360,2097184,32,128,1792,8192,16384,131072,524288,4195104,6292512,32,32,32,32,4,40,262184,32,32,34,34,262184,40,4196128,32,262144,524288,0,0,64,256,0,2097152,135790592,131073,4,393233,262184,34,42,32,524320,32,1073872896,32,32,40,1120,96,1056,4194336,32,2098208,-322695456,-322695456,-322695456,-322695456,-322597152,-320598176,-322597152,-322597144,-321548576,-320598168,-322597144,-321548568,-37482773,0,0,64,1536,32768,-322588952,-321548568,-322588952,-321548568,-322597144,32,0,32,64,65536,0,96,32,32,56,262184,40,41,262184,32,42,224,40,262176,42,106,293601323,293601323,293863467,293699627,293617707,293716011,293702203,293702203,293702203,297896507,293702203,293702203,293702203,293702267,293964347,293702267,297896507,293964347,297896507,297896507,-322597144,-37744981,0,32,524288,0,0,64,2048,16384,32768,0,0,262144,65536,262144,262144,0,4096,0,8,0,2,65536,262656,328192,0,0,0,1536,32768,0,5242880,0,0,0,1998,518144,8388608,-2147418112,5242880,-1842937664,201330721,201330721,-2111369023,-2111369023,-2111369023,-2111369023,-2111360575,-2111369023,-2111369023,-2111369023,-1977151295,-1977151293,-1910042431,-1893265183,-2111368509,-1893265183,-1893265183,-1893265183,-1893265183,-2111368509,-1893265183,-1893265183,-553689472,-553656704,-553689472,-553689472,-553656704,-553656704,-553656704,-553656704,-553656704,-553656672,-553656672,-553656672,-553656672,-536912159,-553656672,-553656672,-553656664,-553656664,-553656672,-553656672,-553656670,-553656672,-553656672,-553656670,-553656608,-553656671,-536879391,-536879391,-536879391,0,0,262656,0,0,65,1024,0,1,4096,201326592,0,0,0,0,462976,-2113929216,100663296,100663296,2,4,8,64,128,512,2048,8192,16384,458752,18874368,463488,0,0,1,2,4,32,0,0,1007232,15728640,104e4,15728640,-570425344,0,0,0,2014,0,0,0,32505856,-570425344,196608,2097152,301989888,0,0,80,268435456,0,268435456,0,268435456,268435456,268435456,268435456,0,0,0,4096,201326592,0,0,96,2260992,12288,0,2147483648,0,0,118,577408,22020096,1040187392,0,0,167772160,234881024,128,512,2048,196608,262144,33554432,536870912,0,0,0,557056,7168,16384,196608,786432,503316480,1073741824,2147483648,0,0,128,131072,524288,58720256,402653184,0,0,0,318767104,128,512,7168,16384,32768,32768,196608,786432,1048576,2097152,4194304,33554432,268435456,536870912,2147483648,0,0,1,256,8388608,234881024,268435456,1073741824,2147483648,4096,16384,32768,131072,524288,1048576,2097152,4194304,8388608,234881024,0,0,201326592,0,0,128,536870912,4194304,512,3072,16384,131072,524288,1048576,4194304,134217728,8388608,33554432,201326592,268435456,1073741824,0,1048576,4194304,268435456,4194304,8388608,134217728,268435456,1073741824,3072,131072,524288,1048576,1073741824,0,0,0,2147483648,0,0,0,-2147483646,16384,18432,67108864,1073741824,16384,8192,0,0,65536,262144,0,0,67108864,0,0,0,32768,0,1,18952,1024,0,0,192,0,0,0,65,1024,1024,100663298,18952,65,268436480,2101248,524288,1024,19017,-1744550912,8388624,8388624,8388624,-1739308032,-1739308032,-1739308032,-1739308032,-1736162288,-1736162288,-1736162288,-1736162288,-7868466,-7868466,-7868466,-7868466,-7868466,-7868450,-7868450,-7868450,-7868450,0,0,0,65536,2048,16384,67108864,134217728,268435456,0,0,1073741824,18432,0,0,1,285212672,0,585,0,0,2,8,16,64,128,3072,4096,8192,65536,131072,0,0,1024,5521408,-1744830464,0,0,0,262144,0,0,0,1024,0,0,0,112,1040,0,0,-1744830464,0,-1744830464,59238400,-67108864,0,0,0,327680,2014,0,0,0,328192,518144,8388608,50331648,201326592,805306368,-1073741824,768,1024,10240,16384,32768,458752,50331648,67108864,134217728,805306368,0,0,0,458880,32768,458752,8388608,50331648,67108864,134217728,67108864,134217728,805306368,1073741824,2147483648,0,0,220,0,0,0,471424,12,192,768,1024,2048,805306368,1073741824,0,0,2,204,768,1024,4,8,32,64,512,2048,512,2048,16384,67108864,0,0,458752,50331648,67108864,805306368,-1073741824,0,0,0,393240,0,1048576,4194304,0,0,16384,458752,50331648,67108864,536870912,1073741824,0,0,16384,0,0,0,256,0,0,0,512,0,0,0,585,16,0,0,1048576,4194304,2147483648,4,8,128,512,3072,16384,32768,131072,512,0,0,4096,1048576,2147483648,8192,2097152,268435456,2147483648,537395200,537395200,0,4196352,51380242,51380242,51380242,0,537395200,4196352,4196352,276901888,8540160,-1606418432,0,32768,537395200,4196352,1082130432,0,4196352,537427968,22022147,22349827,22349827,22349827,22366219,22349843,22349827,22349827,22366219,22349827,55576594,55576594,55576594,55576594,55576594,324012114,55576594,55576594,1062785014,1062785014,1062785014,1062785014,0,0,2,33554432,0,0,0,131072,0,0,0,8192,8392704,32768,268435456,0,0,2,67108864,12,16384,0,65536,0,22020096,0,0,0,104e4,15728640,0,0,329728,0,0,254,1792,2809856,58720256,19,0,0,0,1048576,0,0,0,2048,0,0,0,18,33554432,0,0,256,8192,0,0,8192,2097152,0,2147483648,0,82,301989888,0,0,0,2101248,22020096,1040187392,0,0,0,4194304,0,0,0,16384,1536,0,256,0,8192,2097152,16,1048576,16777216,33554432,268435456,536870912,2147483648,3584,16384,32768,524288,1048576,4194304,0,0,8388608,1073741824,0,0,1536,2048,16384,32768,524288,4194304,134217728,0,0,134217728,4096,0,8,0,256,1536,16384,32768,524288,128,536870912,0,0,4,8,512,2048,0,0,1536,32768,524288,4194304,33554432,134217728,536870912,0,0,8192,2097152,2147483648,0,0,512,2048,131072,536870912,0,0,16,64,1536,32768,32768,524288,134217728,0,0,0,524288,0,64,64,16392,1536,32768,524288,0,0,33554432,8192,0,65536,0,0,1,1,0,1,67174400,33554432,536870912,-1073741824,0,0,0,0,524288,134217728,67174400,0,0,0,16777216,0,0,0,4,0,0,0,7,16,16384,8,8,0,0,512,3072,131072,131072,268435456,134217728,8,512,2048,196608,262144,50331648,536870912,1073741824,0,4,8,2048,8192,32768,8388608,0,0,134217736,16908320,547389524,547389524,555909216,555909216,555909216,555909216,564297840,564297844,564297844,564297844,564297844,1001055742,1001056254,1001055742,1001055742,1001056254,1001056254,1001056254,1001056254,1001055742,1001056254,1001056254,1001056254,1001056254,0,1052672,2147483648,0,0,4,16,0,0,84,2129920,8388608,4096,0,0,0,116,0,254,1280,2809856,58720256,939524096,0,0,0,50331648,268435456,0,0,0,939524096,0,0,520,1024,0,0,1,0,67108864,1073741824,0,0,0,20,64,32768,8192,0,2048,0,2097152,8388608,536870912,0,0,1024,278528,0,0,0,393232,163840,0,0,0,134217728,0,0,0,16,0,0,0,15,208,15360,1245184,52,0,0,0,268435456,0,0,33554432,64,128,1280,24576,163840,524288,2097152,58720256,402653184,536870912,128,1792,24576,163840,524288,0,4,16,8388608,0,0,4096,32768,262144,524288,33554432,134217728,0,0,24,32,128,1280,8192,16384,8192,524288,16777216,33554432,402653184,0,4,8,16,1024,2048,8192,16384,32768,458752,0,262144,33554432,134217728,0,512,1024,16777216,33554432,402653184,0,4096,1048576,0,0,1998,59238400,-67108864,4,8,16,402653184,0,0,8,16,402653184,536870912,0,0,4,64,128,8388608,0,0,67108866,12,64,128,512,1024,4,16384,65536,67108864,0,65536,0,0,2048,64,64,64,96,96,96,96,0,8192,8192,268435460,32768,65536,2490368,16777216,2147483648,0,0,1,4,8,2048,8192,3670016,2048,2048,2048,2048,0,8192,34816,9216,4096,0,128,0,2097152,0,0,4096,4096,29696,29712,29840,29712,29712,29840,29840,536900624,4224144,144384,144384,144384,144384,-754647956,-754647956,-754647956,-754647956,-754647956,-754647940,-754647940,-754647940,-754647940,-754516884,-754647956,-754516884,-754516884,-754516884,4,8,256,512,2048,0,0,3670016,0,0,2048,131072,524288,4194304,2147483648,0,0,9216,0,0,4,134217728,0,29696,0,0,4,268435456,0,16,0,29824,0,60,64576,319029248,-1073741824,0,0,319160320,0,0,0,319160320,0,0,524288,3145728,0,12288,131072,0,8,131072,61440,262144,318767104,-1073741824,0,0,64,1024,2048,61440,262144,0,28,32,64,64,64,128,0,0,16384,32768,50331648,268435456,0,0,0,393216,0,0,0,486539264,0,128,0,536870912,0,0,12,16,32,327155712,34,1056,32,32,42,4457568,-326784344,-322851160,-322698144,-322698144,-322698144,-322698144,-322695456,0,0,524288,1048576,0,0,0,536870912,4194304,131072,0,0,6,56,128,1792,2,67108864,16384,0,0,4096,4194304,32768,0,0,0,8388608,0,0,0,72,0,8,64,2048,57344,16384,32768,262144,50331648,268435456,0,524288,1048576,2097152,4194304,134217728,2147483648,0,0,50331648,268435456,2147483648,0,0,1,0,0,2,4,16,64,1,0,2,0,0,65536,0,0,0,1040,8667136,0,131072,131072,0,131072,0,131072,0,0,524288,536870912,131072,0,0,7,27756528,-503316480,0,256,0,2048,32768,8388608,262144,2113536,0,0,8,16,512,402653184,0,0,0,256,32768,0,0,4224,65536,262144,1048576,4194304,16777216,33554432,67108864,134217728,0,0,256,262144,0,0,8192,268435456,0,0,0,4,131073,0,0,9728,268435456,0,0,16,393216,0,131073,131073,33554624,4,0,131073,0,0,13312,131072,4194304,-2146430976,131072,2097152,16777216,0,0,512,131072,1048576,2097152,0,1572864,0,0,0,2147483648,524288,0,1610612736,1610612736,1610612736,393241,393241,393241,393241,805707793,805707793,1879449617,805708049,1879449617,1879449617,1879449617,1879449617,-483948553,-475559945,-483948553,-475559945,-483948553,-483948553,-475559945,-475559945,-475559945,-475559945,-483948553,-483948553,-215504905,-475559945,-207116297,-207116297,0,0,0,1073741824,0,0,2097152,67108864,134217728,536870912,0,0,24576,0,0,0,2113536,0,0,8,64,0,0,0,401424,805306368,0,0,28672,0,0,4096,2097152,4194304,8388608,503316480,1073741824,0,0,1879048192,0,0,32768,2097152,8388608,16777216,33554432,0,401680,0,0,8,512,2048,131072,33554432,536870912,0,0,7,19367920,-503316480,27756528,-503316480,0,0,0,0,0,19376112,-234881024,0,27764720,-234881024,0,0,32768,33554436,0,0,33554436,24,0,0,0,11,346112,7,16,480,1536,32768,65536,393216,10485760,65536,10878976,16777216,33554432,536870912,4,32,524288,1048576,33554432,67108864,65536,393216,2097152,16777216,262400,65536,4224,4224,0,65536,201326592,2147483648,393216,10485760,16777216,33554432,1073741824,2147483648,0,16,224,256,1536,32768,65536,0,16384,2097152,0,0,1024,32768,65536,131072,262144,262144,2097152,16777216,33554432,4,32,524288,134217728,0,512,32768,131072,262144,2097152,2097152,8388608,16777216,1073741824,0,0,512,32768,131072,2097152,8388608,8388608,16777216,0,0,16,33554432,4,16,224,512,32768,4,524288,134217728,0,0,32768,50331648,268435456,4096,32768,0,0,16,536870912,16,192,32768,8388608,4096,4096,4096,1536,2,4,16,192,32768,0,16,64,128,8388608,0,0,0,2,4,134217728,4,0,0,128,512,3072,4096,16384,131072,4,128,0,0,18,17825792,524288,8388608,33554432,2147483648,8192,0,33554432,0,0,33554432,0,0,0,268435456,2,4,8,262144,262144,1048576,2048,32768,0,0,28,0,100663296,4224,65536,65536,262144,33554432,0,2,4,24,-1072627712,805306384,-1342177264,-1342177264,-1070006272,-1070006272,-1069989376,-1069989376,-258932720,-258932720,-258932720,-258932720,-225378288,-1069989376,-1069989360,-1065795072,-1061600768,-258932720,-225378288,-258932720,-258932720,1260767,34815199,1260767,34815199,1260767,34815199,34815199,1260767,1260767,34815199,1260767,1260767,169032927,-1978450721,169032927,-1978450721,169032927,169032927,169032927,169032927,1242774751,-1978450721,-1978450721,-225231649,-1173144353,-225231649,-91013921,0,0,32,128,256,262144,524288,8388608,0,64,0,0,1114112,1073741824,0,0,34816,0,0,2048,4194304,0,0,0,3735552,0,0,32,512,2048,32768,262144,524288,3751936,0,0,0,48,0,0,528,7946240,12140544,9502720,1610612736,0,0,0,15360,1245184,0,0,134217728,128,15,9633792,0,0,0,2,12,80,128,7168,8192,7168,8192,196608,1048576,0,0,0,1,2,12,16,64,128,256,0,0,3145728,0,0,0,536870912,0,0,8192,65536,131072,1048576,0,0,0,2097152,0,16384,0,4194304,0,0,2097152,16384,0,0,131072,2097152,0,0,0,4096,0,0,8192,0,0,0,128,0,0,0,208,0,64,128,1024,4096,0,0,2,8,64,128,1024,2048,4096,8192,128,1024,4096,8192,0,0],r.TOKEN=["(0)","PragmaContents","DirCommentContents","DirPIContents","CDataSection","Wildcard","EQName","URILiteral","IntegerLiteral","DecimalLiteral","DoubleLiteral","StringLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","PITarget","NCName","QName","S","S","CharRef","CommentContents","EOF","'!'","'!='","'\"'","'#'","'#)'","'$'","'$$'","'%'","''''","'('","'(#'","'(:'","')'","'*'","'*'","'+'","','","'-'","'-->'","'.'","'..'","'/'","'//'","'/>'","':'","':)'","'::'","':='","';'","'<'","'<!--'","'</'","'<<'","'<='","'<?'","'='","'>'","'>='","'>>'","'?'","'?>'","'@'","'NaN'","'['","']'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'false'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'jsoniq'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'null'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'select'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'true'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'zero-digit'","'{'","'{{'","'{|'","'|'","'||'","'|}'","'}'","'}}'"]},{}],10:[function(e,t,n){var r=n.XQueryParser=function i(e,t){function r(e,t){Vl=t,Ql=e,Gl=e.length,s(0,0,0)}function s(e,t,n){Dl=t,Pl=t,Hl=e,Bl=t,jl=n,Fl=0,Zl=n,Ul=-1,$l={},Vl.reset(Ql)}function o(){Vl.startNonterminal("Module",Pl);switch(Hl){case 274:Ll(199);break;default:_l=Hl}(_l==64274||_l==134930)&&u(),kl(275);switch(Hl){case 182:Ll(194);break;default:_l=Hl}switch(_l){case 94390:Nl(),a();break;default:Nl(),Ra()}Vl.endNonterminal("Module",Pl)}function u(){Vl.startNonterminal("VersionDecl",Pl),Sl(274),kl(116);switch(Hl){case 125:Sl(125),kl(17),Sl(11);break;default:Sl(263),kl(17),Sl(11),kl(109),Hl==125&&(Sl(125),kl(17),Sl(11))}kl(28),Nl(),c(),Vl.endNonterminal("VersionDecl",Pl)}function a(){Vl.startNonterminal("LibraryModule",Pl),f(),kl(138),Nl(),l(),Vl.endNonterminal("LibraryModule",Pl)}function f(){Vl.startNonterminal("ModuleDecl",Pl),Sl(182),kl(61),Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60),kl(15),Sl(7),kl(28),Nl(),c(),Vl.endNonterminal("ModuleDecl",Pl)}function l(){Vl.startNonterminal("Prolog",Pl);for(;;){kl(275);switch(Hl){case 108:Ll(214);break;case 153:Ll(202);break;default:_l=Hl}if(_l!=42604&&_l!=43628&&_l!=50284&&_l!=53356&&_l!=54380&&_l!=55916&&_l!=72300&&_l!=93337&&_l!=94316&&_l!=104044&&_l!=113772&&_l!=115353)break;switch(Hl){case 108:Ll(179);break;default:_l=Hl}if(_l==55916){_l=Kl(0,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{_(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(0,Pl,_l)}}switch(_l){case-1:Nl(),M();break;case 94316:Nl(),O();break;case 153:Nl(),C();break;case 72300:Nl(),D();break;default:Nl(),h()}kl(28),Nl(),c()}for(;;){kl(275);switch(Hl){case 108:Ll(211);break;default:_l=Hl}if(_l!=16492&&_l!=48748&&_l!=51820&&_l!=74348&&_l!=79468&&_l!=82540&&_l!=101996&&_l!=131692&&_l!=134252)break;switch(Hl){case 108:Ll(175);break;default:_l=Hl}switch(_l){case 51820:Nl(),R();break;case 101996:Nl(),Q();break;default:Nl(),P()}kl(28),Nl(),c()}Vl.endNonterminal("Prolog",Pl)}function c(){Vl.startNonterminal("Separator",Pl),Sl(53),Vl.endNonterminal("Separator",Pl)}function h(){Vl.startNonterminal("Setter",Pl);switch(Hl){case 108:Ll(172);break;default:_l=Hl}if(_l==55916){_l=Kl(1,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{v(),_l=-2}catch(a){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),w(),_l=-6}catch(f){_l=-9}}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(1,Pl,_l)}}switch(_l){case 43628:p();break;case-2:d();break;case 42604:m();break;case 50284:g();break;case 104044:y();break;case-6:b();break;case 113772:ko();break;case 53356:E();break;default:T()}Vl.endNonterminal("Setter",Pl)}function p(){Vl.startNonterminal("BoundarySpaceDecl",Pl),Sl(108),kl(33),Sl(85),kl(133);switch(Hl){case 214:Sl(214);break;default:Sl(241)}Vl.endNonterminal("BoundarySpaceDecl",Pl)}function d(){Vl.startNonterminal("DefaultCollationDecl",Pl),Sl(108),kl(46),Sl(109),kl(38),Sl(94),kl(15),Sl(7),Vl.endNonterminal("DefaultCollationDecl",Pl)}function v(){xl(108),kl(46),xl(109),kl(38),xl(94),kl(15),xl(7)}function m(){Vl.startNonterminal("BaseURIDecl",Pl),Sl(108),kl(32),Sl(83),kl(15),Sl(7),Vl.endNonterminal("BaseURIDecl",Pl)}function g(){Vl.startNonterminal("ConstructionDecl",Pl),Sl(108),kl(41),Sl(98),kl(133);switch(Hl){case 241:Sl(241);break;default:Sl(214)}Vl.endNonterminal("ConstructionDecl",Pl)}function y(){Vl.startNonterminal("OrderingModeDecl",Pl),Sl(108),kl(68),Sl(203),kl(131);switch(Hl){case 202:Sl(202);break;default:Sl(256)}Vl.endNonterminal("OrderingModeDecl",Pl)}function b(){Vl.startNonterminal("EmptyOrderDecl",Pl),Sl(108),kl(46),Sl(109),kl(67),Sl(201),kl(49),Sl(123),kl(121);switch(Hl){case 147:Sl(147);break;default:Sl(173)}Vl.endNonterminal("EmptyOrderDecl",Pl)}function w(){xl(108),kl(46),xl(109),kl(67),xl(201),kl(49),xl(123),kl(121);switch(Hl){case 147:xl(147);break;default:xl(173)}}function E(){Vl.startNonterminal("CopyNamespacesDecl",Pl),Sl(108),kl(44),Sl(104),kl(128),Nl(),S(),kl(25),Sl(41),kl(123),Nl(),x(),Vl.endNonterminal("CopyNamespacesDecl",Pl)}function S(){Vl.startNonterminal("PreserveMode",Pl);switch(Hl){case 214:Sl(214);break;default:Sl(190)}Vl.endNonterminal("PreserveMode",Pl)}function x(){Vl.startNonterminal("InheritMode",Pl);switch(Hl){case 157:Sl(157);break;default:Sl(189)}Vl.endNonterminal("InheritMode",Pl)}function T(){Vl.startNonterminal("DecimalFormatDecl",Pl),Sl(108),kl(114);switch(Hl){case 106:Sl(106),kl(255),Nl(),Ha();break;default:Sl(109),kl(45),Sl(106)}for(;;){kl(181);if(Hl==53)break;Nl(),N(),kl(29),Sl(60),kl(17),Sl(11)}Vl.endNonterminal("DecimalFormatDecl",Pl)}function N(){Vl.startNonterminal("DFPropertyName",Pl);switch(Hl){case 107:Sl(107);break;case 149:Sl(149);break;case 156:Sl(156);break;case 179:Sl(179);break;case 67:Sl(67);break;case 209:Sl(209);break;case 208:Sl(208);break;case 275:Sl(275);break;case 116:Sl(116);break;default:Sl(207)}Vl.endNonterminal("DFPropertyName",Pl)}function C(){Vl.startNonterminal("Import",Pl);switch(Hl){case 153:Ll(126);break;default:_l=Hl}switch(_l){case 115353:k();break;default:A()}Vl.endNonterminal("Import",Pl)}function k(){Vl.startNonterminal("SchemaImport",Pl),Sl(153),kl(73),Sl(225),kl(137),Hl!=7&&(Nl(),L()),kl(15),Sl(7),kl(108);if(Hl==81){Sl(81),kl(15),Sl(7);for(;;){kl(103);if(Hl!=41)break;Sl(41),kl(15),Sl(7)}}Vl.endNonterminal("SchemaImport",Pl)}function L(){Vl.startNonterminal("SchemaPrefix",Pl);switch(Hl){case 184:Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60);break;default:Sl(109),kl(47),Sl(121),kl(61),Sl(184)}Vl.endNonterminal("SchemaPrefix",Pl)}function A(){Vl.startNonterminal("ModuleImport",Pl),Sl(153),kl(60),Sl(182),kl(90),Hl==184&&(Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60)),kl(15),Sl(7),kl(108);if(Hl==81){Sl(81),kl(15),Sl(7);for(;;){kl(103);if(Hl!=41)break;Sl(41),kl(15),Sl(7)}}Vl.endNonterminal("ModuleImport",Pl)}function O(){Vl.startNonterminal("NamespaceDecl",Pl),Sl(108),kl(61),Sl(184),kl(249),Nl(),Ia(),kl(29),Sl(60),kl(15),Sl(7),Vl.endNonterminal("NamespaceDecl",Pl)}function M(){Vl.startNonterminal("DefaultNamespaceDecl",Pl),Sl(108),kl(46),Sl(109),kl(115);switch(Hl){case 121:Sl(121);break;default:Sl(145)}kl(61),Sl(184),kl(15),Sl(7),Vl.endNonterminal("DefaultNamespaceDecl",Pl)}function _(){xl(108),kl(46),xl(109),kl(115);switch(Hl){case 121:xl(121);break;default:xl(145)}kl(61),xl(184),kl(15),xl(7)}function D(){Vl.startNonterminal("FTOptionDecl",Pl),Sl(108),kl(52),Sl(141),kl(81),Nl(),Fu(),Vl.endNonterminal("FTOptionDecl",Pl)}function P(){Vl.startNonterminal("AnnotatedDecl",Pl),Sl(108);for(;;){kl(170);if(Hl!=32&&Hl!=257)break;switch(Hl){case 257:Nl(),H();break;default:Nl(),B()}}switch(Hl){case 262:Nl(),F();break;case 145:Nl(),wl();break;case 95:Nl(),da();break;case 155:Nl(),xa();break;default:Nl(),Ta()}Vl.endNonterminal("AnnotatedDecl",Pl)}function H(){Vl.startNonterminal("CompatibilityAnnotation",Pl),Sl(257),Vl.endNonterminal("CompatibilityAnnotation",Pl)}function B(){Vl.startNonterminal("Annotation",Pl),Sl(32),kl(255),Nl(),Ha(),kl(171);if(Hl==34){Sl(34),kl(154),Nl(),oi();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(154),Nl(),oi()}Sl(37)}Vl.endNonterminal("Annotation",Pl)}function j(){xl(32),kl(255),Ba(),kl(171);if(Hl==34){xl(34),kl(154),ui();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(154),ui()}xl(37)}}function F(){Vl.startNonterminal("VarDecl",Pl),Sl(262),kl(21),Sl(31),kl(255),Nl(),hi(),kl(147),Hl==79&&(Nl(),ds()),kl(106);switch(Hl){case 52:Sl(52),kl(267),Nl(),I();break;default:Sl(133),kl(104),Hl==52&&(Sl(52),kl(267),Nl(),q())}Vl.endNonterminal("VarDecl",Pl)}function I(){Vl.startNonterminal("VarValue",Pl),_f(),Vl.endNonterminal("VarValue",Pl)}function q(){Vl.startNonterminal("VarDefaultValue",Pl),_f(),Vl.endNonterminal("VarDefaultValue",Pl)}function R(){Vl.startNonterminal("ContextItemDecl",Pl),Sl(108),kl(43),Sl(101),kl(55),Sl(165),kl(147),Hl==79&&(Sl(79),kl(260),Nl(),ws()),kl(106);switch(Hl){case 52:Sl(52),kl(267),Nl(),I();break;default:Sl(133),kl(104),Hl==52&&(Sl(52),kl(267),Nl(),q())}Vl.endNonterminal("ContextItemDecl",Pl)}function U(){Vl.startNonterminal("ParamList",Pl),W();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(21),Nl(),W()}Vl.endNonterminal("ParamList",Pl)}function z(){X();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(21),X()}}function W(){Vl.startNonterminal("Param",Pl),Sl(31),kl(255),Nl(),Ha(),kl(143),Hl==79&&(Nl(),ds()),Vl.endNonterminal("Param",Pl)}function X(){xl(31),kl(255),Ba(),kl(143),Hl==79&&vs()}function V(){Vl.startNonterminal("FunctionBody",Pl),J(),Vl.endNonterminal("FunctionBody",Pl)}function $(){K()}function J(){Vl.startNonterminal("EnclosedExpr",Pl),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("EnclosedExpr",Pl)}function K(){xl(276),kl(267),Y(),xl(282)}function Q(){Vl.startNonterminal("OptionDecl",Pl),Sl(108),kl(66),Sl(199),kl(255),Nl(),Ha(),kl(17),Sl(11),Vl.endNonterminal("OptionDecl",Pl)}function G(){Vl.startNonterminal("Expr",Pl),_f();for(;;){if(Hl!=41)break;Sl(41),kl(267),Nl(),_f()}Vl.endNonterminal("Expr",Pl)}function Y(){Df();for(;;){if(Hl!=41)break;xl(41),kl(267),Df()}}function Z(){Vl.startNonterminal("FLWORExpr",Pl),tt();for(;;){kl(173);if(Hl==220)break;Nl(),rt()}Nl(),rn(),Vl.endNonterminal("FLWORExpr",Pl)}function et(){nt();for(;;){kl(173);if(Hl==220)break;it()}sn()}function tt(){Vl.startNonterminal("InitialClause",Pl);switch(Hl){case 137:Ll(141);break;default:_l=Hl}switch(_l){case 16009:st();break;case 174:vt();break;default:bt()}Vl.endNonterminal("InitialClause",Pl)}function nt(){switch(Hl){case 137:Ll(141);break;default:_l=Hl}switch(_l){case 16009:ot();break;case 174:mt();break;default:wt()}}function rt(){Vl.startNonterminal("IntermediateClause",Pl);switch(Hl){case 137:case 174:tt();break;case 266:It();break;case 148:Rt();break;case 105:jt();break;default:Kt()}Vl.endNonterminal("IntermediateClause",Pl)}function it(){switch(Hl){case 137:case 174:nt();break;case 266:qt();break;case 148:Ut();break;case 105:Ft();break;default:Qt()}}function st(){Vl.startNonterminal("ForClause",Pl),Sl(137),kl(21),Nl(),ut();for(;;){if(Hl!=41)break;Sl(41),kl(21),Nl(),ut()}Vl.endNonterminal("ForClause",Pl)}function ot(){xl(137),kl(21),at();for(;;){if(Hl!=41)break;xl(41),kl(21),at()}}function ut(){Vl.startNonterminal("ForBinding",Pl),Sl(31),kl(255),Nl(),hi(),kl(164),Hl==79&&(Nl(),ds()),kl(158),Hl==72&&(Nl(),ft()),kl(150),Hl==81&&(Nl(),ct()),kl(122),Hl==228&&(Nl(),pt()),kl(53),Sl(154),kl(267),Nl(),_f(),Vl.endNonterminal("ForBinding",Pl)}function at(){xl(31),kl(255),pi(),kl(164),Hl==79&&vs(),kl(158),Hl==72&&lt(),kl(150),Hl==81&&ht(),kl(122),Hl==228&&dt(),kl(53),xl(154),kl(267),Df()}function ft(){Vl.startNonterminal("AllowingEmpty",Pl),Sl(72),kl(49),Sl(123),Vl.endNonterminal("AllowingEmpty",Pl)}function lt(){xl(72),kl(49),xl(123)}function ct(){Vl.startNonterminal("PositionalVar",Pl),Sl(81),kl(21),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("PositionalVar",Pl)}function ht(){xl(81),kl(21),xl(31),kl(255),pi()}function pt(){Vl.startNonterminal("FTScoreVar",Pl),Sl(228),kl(21),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("FTScoreVar",Pl)}function dt(){xl(228),kl(21),xl(31),kl(255),pi()}function vt(){Vl.startNonterminal("LetClause",Pl),Sl(174),kl(96),Nl(),gt();for(;;){if(Hl!=41)break;Sl(41),kl(96),Nl(),gt()}Vl.endNonterminal("LetClause",Pl)}function mt(){xl(174),kl(96),yt();for(;;){if(Hl!=41)break;xl(41),kl(96),yt()}}function gt(){Vl.startNonterminal("LetBinding",Pl);switch(Hl){case 31:Sl(31),kl(255),Nl(),hi(),kl(105),Hl==79&&(Nl(),ds());break;default:pt()}kl(27),Sl(52),kl(267),Nl(),_f(),Vl.endNonterminal("LetBinding",Pl)}function yt(){switch(Hl){case 31:xl(31),kl(255),pi(),kl(105),Hl==79&&vs();break;default:dt()}kl(27),xl(52),kl(267),Df()}function bt(){Vl.startNonterminal("WindowClause",Pl),Sl(137),kl(135);switch(Hl){case 251:Nl(),Et();break;default:Nl(),xt()}Vl.endNonterminal("WindowClause",Pl)}function wt(){xl(137),kl(135);switch(Hl){case 251:St();break;default:Tt()}}function Et(){Vl.startNonterminal("TumblingWindowClause",Pl),Sl(251),kl(85),Sl(269),kl(21),Sl(31),kl(255),Nl(),hi(),kl(110),Hl==79&&(Nl(),ds()),kl(53),Sl(154),kl(267),Nl(),_f(),Nl(),Nt();if(Hl==126||Hl==198)Nl(),kt();Vl.endNonterminal("TumblingWindowClause",Pl)}function St(){xl(251),kl(85),xl(269),kl(21),xl(31),kl(255),pi(),kl(110),Hl==79&&vs(),kl(53),xl(154),kl(267),Df(),Ct(),(Hl==126||Hl==198)&&Lt()}function xt(){Vl.startNonterminal("SlidingWindowClause",Pl),Sl(234),kl(85),Sl(269),kl(21),Sl(31),kl(255),Nl(),hi(),kl(110),Hl==79&&(Nl(),ds()),kl(53),Sl(154),kl(267),Nl(),_f(),Nl(),Nt(),Nl(),kt(),Vl.endNonterminal("SlidingWindowClause",Pl)}function Tt(){xl(234),kl(85),xl(269),kl(21),xl(31),kl(255),pi(),kl(110),Hl==79&&vs(),kl(53),xl(154),kl(267),Df(),Ct(),Lt()}function Nt(){Vl.startNonterminal("WindowStartCondition",Pl),Sl(237),kl(163),Nl(),At(),kl(83),Sl(265),kl(267),Nl(),_f(),Vl.endNonterminal("WindowStartCondition",Pl)}function Ct(){xl(237),kl(163),Ot(),kl(83),xl(265),kl(267),Df()}function kt(){Vl.startNonterminal("WindowEndCondition",Pl),Hl==198&&Sl(198),kl(50),Sl(126),kl(163),Nl(),At(),kl(83),Sl(265),kl(267),Nl(),_f(),Vl.endNonterminal("WindowEndCondition",Pl)}function Lt(){Hl==198&&xl(198),kl(50),xl(126),kl(163),Ot(),kl(83),xl(265),kl(267),Df()}function At(){Vl.startNonterminal("WindowVars",Pl),Hl==31&&(Sl(31),kl(255),Nl(),Mt()),kl(159),Hl==81&&(Nl(),ct()),kl(153),Hl==215&&(Sl(215),kl(21),Sl(31),kl(255),Nl(),Dt()),kl(127),Hl==187&&(Sl(187),kl(21),Sl(31),kl(255),Nl(),Ht()),Vl.endNonterminal("WindowVars",Pl)}function Ot(){Hl==31&&(xl(31),kl(255),_t()),kl(159),Hl==81&&ht(),kl(153),Hl==215&&(xl(215),kl(21),xl(31),kl(255),Pt()),kl(127),Hl==187&&(xl(187),kl(21),xl(31),kl(255),Bt())}function Mt(){Vl.startNonterminal("CurrentItem",Pl),Ha(),Vl.endNonterminal("CurrentItem",Pl)}function _t(){Ba()}function Dt(){Vl.startNonterminal("PreviousItem",Pl),Ha(),Vl.endNonterminal("PreviousItem",Pl)}function Pt(){Ba()}function Ht(){Vl.startNonterminal("NextItem",Pl),Ha(),Vl.endNonterminal("NextItem",Pl)}function Bt(){Ba()}function jt(){Vl.startNonterminal("CountClause",Pl),Sl(105),kl(21),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("CountClause",Pl)}function Ft(){xl(105),kl(21),xl(31),kl(255),pi()}function It(){Vl.startNonterminal("WhereClause",Pl),Sl(266),kl(267),Nl(),_f(),Vl.endNonterminal("WhereClause",Pl)}function qt(){xl(266),kl(267),Df()}function Rt(){Vl.startNonterminal("GroupByClause",Pl),Sl(148),kl(34),Sl(87),kl(267),Nl(),zt(),Vl.endNonterminal("GroupByClause",Pl)}function Ut(){xl(148),kl(34),xl(87),kl(267),Wt()}function zt(){Vl.startNonterminal("GroupingSpecList",Pl),Xt();for(;;){kl(176);if(Hl!=41)break;Sl(41),kl(267),Nl(),Xt()}Vl.endNonterminal("GroupingSpecList",Pl)}function Wt(){Vt();for(;;){kl(176);if(Hl!=41)break;xl(41),kl(267),Vt()}}function Xt(){Vl.startNonterminal("GroupingSpec",Pl);switch(Hl){case 31:Ll(255);break;default:_l=Hl}if(_l==3103||_l==35871||_l==36895||_l==37407||_l==37919||_l==38431||_l==39455||_l==39967||_l==40479||_l==40991||_l==41503||_l==42015||_l==42527||_l==43039||_l==43551||_l==44063||_l==45087||_l==45599||_l==46111||_l==46623||_l==47647||_l==48159||_l==49183||_l==49695||_l==50207||_l==51743||_l==52255||_l==52767||_l==53279||_l==53791||_l==54303||_l==55327||_l==55839||_l==56351||_l==56863||_l==57375||_l==57887||_l==60447||_l==60959||_l==61471||_l==61983||_l==62495||_l==63007||_l==63519||_l==64031||_l==64543||_l==65567||_l==66079||_l==67103||_l==67615||_l==68127||_l==68639||_l==69151||_l==69663||_l==70175||_l==72223||_l==74271||_l==74783||_l==75807||_l==76831||_l==77343||_l==77855||_l==78367||_l==78879||_l==79391||_l==81439||_l==81951||_l==82463||_l==82975||_l==83487||_l==83999||_l==84511||_l==85023||_l==85535||_l==87071||_l==87583||_l==88095||_l==89119||_l==90143||_l==91167||_l==92191||_l==92703||_l==93215||_l==94239||_l==94751||_l==95263||_l==97823||_l==98335||_l==99359||_l==101407||_l==101919||_l==102431||_l==102943||_l==103455||_l==103967||_l==105503||_l==108575||_l==109087||_l==110623||_l==111647||_l==112159||_l==112671||_l==113183||_l==113695||_l==114719||_l==115231||_l==115743||_l==116255||_l==116767||_l==117279||_l==119839||_l==120351||_l==120863||_l==121375||_l==122911||_l==123935||_l==124447||_l==124959||_l==127007||_l==127519||_l==128031||_l==128543||_l==129055||_l==129567||_l==130079||_l==131103||_l==131615||_l==133151||_l==133663||_l==134175||_l==134687||_l==136223||_l==136735||_l==138271||_l==140319){_l=Kl(2,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Jt(),kl(183);if(Hl==52||Hl==79)Hl==79&&vs(),kl(27),xl(52),kl(267),Df();Hl==94&&(xl(94),kl(15),xl(7)),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(2,Pl,_l)}}switch(_l){case-1:$t(),kl(183);if(Hl==52||Hl==79)Hl==79&&(Nl(),ds()),kl(27),Sl(52),kl(267),Nl(),_f();Hl==94&&(Sl(94),kl(15),Sl(7));break;default:_f()}Vl.endNonterminal("GroupingSpec",Pl)}function Vt(){switch(Hl){case 31:Ll(255);break;default:_l=Hl}if(_l==3103||_l==35871||_l==36895||_l==37407||_l==37919||_l==38431||_l==39455||_l==39967||_l==40479||_l==40991||_l==41503||_l==42015||_l==42527||_l==43039||_l==43551||_l==44063||_l==45087||_l==45599||_l==46111||_l==46623||_l==47647||_l==48159||_l==49183||_l==49695||_l==50207||_l==51743||_l==52255||_l==52767||_l==53279||_l==53791||_l==54303||_l==55327||_l==55839||_l==56351||_l==56863||_l==57375||_l==57887||_l==60447||_l==60959||_l==61471||_l==61983||_l==62495||_l==63007||_l==63519||_l==64031||_l==64543||_l==65567||_l==66079||_l==67103||_l==67615||_l==68127||_l==68639||_l==69151||_l==69663||_l==70175||_l==72223||_l==74271||_l==74783||_l==75807||_l==76831||_l==77343||_l==77855||_l==78367||_l==78879||_l==79391||_l==81439||_l==81951||_l==82463||_l==82975||_l==83487||_l==83999||_l==84511||_l==85023||_l==85535||_l==87071||_l==87583||_l==88095||_l==89119||_l==90143||_l==91167||_l==92191||_l==92703||_l==93215||_l==94239||_l==94751||_l==95263||_l==97823||_l==98335||_l==99359||_l==101407||_l==101919||_l==102431||_l==102943||_l==103455||_l==103967||_l==105503||_l==108575||_l==109087||_l==110623||_l==111647||_l==112159||_l==112671||_l==113183||_l==113695||_l==114719||_l==115231||_l==115743||_l==116255||_l==116767||_l==117279||_l==119839||_l==120351||_l==120863||_l==121375||_l==122911||_l==123935||_l==124447||_l==124959||_l==127007||_l==127519||_l==128031||_l==128543||_l==129055||_l==129567||_l==130079||_l==131103||_l==131615||_l==133151||_l==133663||_l==134175||_l==134687||_l==136223||_l==136735||_l==138271||_l==140319){_l=Kl(2,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Jt(),kl(183);if(Hl==52||Hl==79)Hl==79&&vs(),kl(27),xl(52),kl(267),Df();Hl==94&&(xl(94),kl(15),xl(7)),Jl(2,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(2,t,-2)}}}switch(_l){case-1:Jt(),kl(183);if(Hl==52||Hl==79)Hl==79&&vs(),kl(27),xl(52),kl(267),Df();Hl==94&&(xl(94),kl(15),xl(7));break;case-3:break;default:Df()}}function $t(){Vl.startNonterminal("GroupingVariable",Pl),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("GroupingVariable",Pl)}function Jt(){xl(31),kl(255),pi()}function Kt(){Vl.startNonterminal("OrderByClause",Pl);switch(Hl){case 201:Sl(201),kl(34),Sl(87);break;default:Sl(236),kl(67),Sl(201),kl(34),Sl(87)}kl(267),Nl(),Gt(),Vl.endNonterminal("OrderByClause",Pl)}function Qt(){switch(Hl){case 201:xl(201),kl(34),xl(87);break;default:xl(236),kl(67),xl(201),kl(34),xl(87)}kl(267),Yt()}function Gt(){Vl.startNonterminal("OrderSpecList",Pl),Zt();for(;;){kl(176);if(Hl!=41)break;Sl(41),kl(267),Nl(),Zt()}Vl.endNonterminal("OrderSpecList",Pl)}function Yt(){en();for(;;){kl(176);if(Hl!=41)break;xl(41),kl(267),en()}}function Zt(){Vl.startNonterminal("OrderSpec",Pl),_f(),Nl(),tn(),Vl.endNonterminal("OrderSpec",Pl)}function en(){Df(),nn()}function tn(){Vl.startNonterminal("OrderModifier",Pl);if(Hl==80||Hl==113)switch(Hl){case 80:Sl(80);break;default:Sl(113)}kl(180);if(Hl==123){Sl(123),kl(121);switch(Hl){case 147:Sl(147);break;default:Sl(173)}}kl(177),Hl==94&&(Sl(94),kl(15),Sl(7)),Vl.endNonterminal("OrderModifier",Pl)}function nn(){if(Hl==80||Hl==113)switch(Hl){case 80:xl(80);break;default:xl(113)}kl(180);if(Hl==123){xl(123),kl(121);switch(Hl){case 147:xl(147);break;default:xl(173)}}kl(177),Hl==94&&(xl(94),kl(15),xl(7))}function rn(){Vl.startNonterminal("ReturnClause",Pl),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("ReturnClause",Pl)}function sn(){xl(220),kl(267),Df()}function on(){Vl.startNonterminal("QuantifiedExpr",Pl);switch(Hl){case 235:Sl(235);break;default:Sl(129)}kl(21),Nl(),an();for(;;){if(Hl!=41)break;Sl(41),kl(21),Nl(),an()}Sl(224),kl(267),Nl(),_f(),Vl.endNonterminal("QuantifiedExpr",Pl)}function un(){switch(Hl){case 235:xl(235);break;default:xl(129)}kl(21),fn();for(;;){if(Hl!=41)break;xl(41),kl(21),fn()}xl(224),kl(267),Df()}function an(){Vl.startNonterminal("QuantifiedVarDecl",Pl),Sl(31),kl(255),Nl(),hi(),kl(110),Hl==79&&(Nl(),ds()),kl(53),Sl(154),kl(267),Nl(),_f(),Vl.endNonterminal("QuantifiedVarDecl",Pl)}function fn(){xl(31),kl(255),pi(),kl(110),Hl==79&&vs(),kl(53),xl(154),kl(267),Df()}function ln(){Vl.startNonterminal("SwitchExpr",Pl),Sl(243),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),hn();if(Hl!=88)break}Sl(109),kl(70),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("SwitchExpr",Pl)}function cn(){xl(243),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),pn();if(Hl!=88)break}xl(109),kl(70),xl(220),kl(267),Df()}function hn(){Vl.startNonterminal("SwitchCaseClause",Pl);for(;;){Sl(88),kl(267),Nl(),dn();if(Hl!=88)break}Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("SwitchCaseClause",Pl)}function pn(){for(;;){xl(88),kl(267),vn();if(Hl!=88)break}xl(220),kl(267),Df()}function dn(){Vl.startNonterminal("SwitchCaseOperand",Pl),_f(),Vl.endNonterminal("SwitchCaseOperand",Pl)}function vn(){Df()}function mn(){Vl.startNonterminal("TypeswitchExpr",Pl),Sl(253),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),yn();if(Hl!=88)break}Sl(109),kl(95),Hl==31&&(Sl(31),kl(255),Nl(),hi()),kl(70),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("TypeswitchExpr",Pl)}function gn(){xl(253),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),bn();if(Hl!=88)break}xl(109),kl(95),Hl==31&&(xl(31),kl(255),pi()),kl(70),xl(220),kl(267),Df()}function yn(){Vl.startNonterminal("CaseClause",Pl),Sl(88),kl(262),Hl==31&&(Sl(31),kl(255),Nl(),hi(),kl(30),Sl(79)),kl(260),Nl(),wn(),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("CaseClause",Pl)}function bn(){xl(88),kl(262),Hl==31&&(xl(31),kl(255),pi(),kl(30),xl(79)),kl(260),En(),xl(220),kl(267),Df()}function wn(){Vl.startNonterminal("SequenceTypeUnion",Pl),ms();for(;;){kl(134);if(Hl!=279)break;Sl(279),kl(260),Nl(),ms()}Vl.endNonterminal("SequenceTypeUnion",Pl)}function En(){gs();for(;;){kl(134);if(Hl!=279)break;xl(279),kl(260),gs()}}function Sn(){Vl.startNonterminal("IfExpr",Pl),Sl(152),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37),kl(77),Sl(245),kl(267),Nl(),_f(),Sl(122),kl(267),Nl(),_f(),Vl.endNonterminal("IfExpr",Pl)}function xn(){xl(152),kl(22),xl(34),kl(267),Y(),xl(37),kl(77),xl(245),kl(267),Df(),xl(122),kl(267),Df()}function Tn(){Vl.startNonterminal("TryCatchExpr",Pl),Cn();for(;;){kl(36),Nl(),On(),kl(184);if(Hl!=91)break}Vl.endNonterminal("TryCatchExpr",Pl)}function Nn(){kn();for(;;){kl(36),Mn(),kl(184);if(Hl!=91)break}}function Cn(){Vl.startNonterminal("TryClause",Pl),Sl(250),kl(87),Sl(276),kl(267),Nl(),Ln(),Sl(282),Vl.endNonterminal("TryClause",Pl)}function kn(){xl(250),kl(87),xl(276),kl(267),An(),xl(282)}function Ln(){Vl.startNonterminal("TryTargetExpr",Pl),G(),Vl.endNonterminal("TryTargetExpr",Pl)}function An(){Y()}function On(){Vl.startNonterminal("CatchClause",Pl),Sl(91),kl(257),Nl(),_n(),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("CatchClause",Pl)}function Mn(){xl(91),kl(257),Dn(),xl(276),kl(267),Y(),xl(282)}function _n(){Vl.startNonterminal("CatchErrorList",Pl),Qr();for(;;){kl(136);if(Hl!=279)break;Sl(279),kl(257),Nl(),Qr()}Vl.endNonterminal("CatchErrorList",Pl)}function Dn(){Gr();for(;;){kl(136);if(Hl!=279)break;xl(279),kl(257),Gr()}}function Pn(){Vl.startNonterminal("OrExpr",Pl),Bn();for(;;){if(Hl!=200)break;Sl(200),kl(267),Nl(),Bn()}Vl.endNonterminal("OrExpr",Pl)}function Hn(){jn();for(;;){if(Hl!=200)break;xl(200),kl(267),jn()}}function Bn(){Vl.startNonterminal("AndExpr",Pl),Fn();for(;;){if(Hl!=75)break;Sl(75),kl(267),Nl(),Fn()}Vl.endNonterminal("AndExpr",Pl)}function jn(){In();for(;;){if(Hl!=75)break;xl(75),kl(267),In()}}function Fn(){Vl.startNonterminal("ComparisonExpr",Pl),qn();if(Hl==27||Hl==54||Hl==57||Hl==58||Hl==60||Hl==61||Hl==62||Hl==63||Hl==128||Hl==146||Hl==150||Hl==164||Hl==172||Hl==178||Hl==186){switch(Hl){case 128:case 146:case 150:case 172:case 178:case 186:Nl(),mr();break;case 57:case 63:case 164:Nl(),yr();break;default:Nl(),dr()}kl(267),Nl(),qn()}Vl.endNonterminal("ComparisonExpr",Pl)}function In(){Rn();if(Hl==27||Hl==54||Hl==57||Hl==58||Hl==60||Hl==61||Hl==62||Hl==63||Hl==128||Hl==146||Hl==150||Hl==164||Hl==172||Hl==178||Hl==186){switch(Hl){case 128:case 146:case 150:case 172:case 178:case 186:gr();break;case 57:case 63:case 164:br();break;default:vr()}kl(267),Rn()}}function qn(){Vl.startNonterminal("FTContainsExpr",Pl),Un(),Hl==99&&(Sl(99),kl(76),Sl(244),kl(162),Nl(),Jo(),Hl==271&&(Nl(),ha())),Vl.endNonterminal("FTContainsExpr",Pl)}function Rn(){zn(),Hl==99&&(xl(99),kl(76),xl(244),kl(162),Ko(),Hl==271&&pa())}function Un(){Vl.startNonterminal("StringConcatExpr",Pl),Wn();for(;;){if(Hl!=280)break;Sl(280),kl(267),Nl(),Wn()}Vl.endNonterminal("StringConcatExpr",Pl)}function zn(){Xn();for(;;){if(Hl!=280)break;xl(280),kl(267),Xn()}}function Wn(){Vl.startNonterminal("RangeExpr",Pl),Vn(),Hl==248&&(Sl(248),kl(267),Nl(),Vn()),Vl.endNonterminal("RangeExpr",Pl)}function Xn(){$n(),Hl==248&&(xl(248),kl(267),$n())}function Vn(){Vl.startNonterminal("AdditiveExpr",Pl),Jn();for(;;){if(Hl!=40&&Hl!=42)break;switch(Hl){case 40:Sl(40);break;default:Sl(42)}kl(267),Nl(),Jn()}Vl.endNonterminal("AdditiveExpr",Pl)}function $n(){Kn();for(;;){if(Hl!=40&&Hl!=42)break;switch(Hl){case 40:xl(40);break;default:xl(42)}kl(267),Kn()}}function Jn(){Vl.startNonterminal("MultiplicativeExpr",Pl),Qn();for(;;){if(Hl!=38&&Hl!=118&&Hl!=151&&Hl!=180)break;switch(Hl){case 38:Sl(38);break;case 118:Sl(118);break;case 151:Sl(151);break;default:Sl(180)}kl(267),Nl(),Qn()}Vl.endNonterminal("MultiplicativeExpr",Pl)}function Kn(){Gn();for(;;){if(Hl!=38&&Hl!=118&&Hl!=151&&Hl!=180)break;switch(Hl){case 38:xl(38);break;case 118:xl(118);break;case 151:xl(151);break;default:xl(180)}kl(267),Gn()}}function Qn(){Vl.startNonterminal("UnionExpr",Pl),Yn();for(;;){if(Hl!=254&&Hl!=279)break;switch(Hl){case 254:Sl(254);break;default:Sl(279)}kl(267),Nl(),Yn()}Vl.endNonterminal("UnionExpr",Pl)}function Gn(){Zn();for(;;){if(Hl!=254&&Hl!=279)break;switch(Hl){case 254:xl(254);break;default:xl(279)}kl(267),Zn()}}function Yn(){Vl.startNonterminal("IntersectExceptExpr",Pl),er();for(;;){kl(223);if(Hl!=131&&Hl!=162)break;switch(Hl){case 162:Sl(162);break;default:Sl(131)}kl(267),Nl(),er()}Vl.endNonterminal("IntersectExceptExpr",Pl)}function Zn(){tr();for(;;){kl(223);if(Hl!=131&&Hl!=162)break;switch(Hl){case 162:xl(162);break;default:xl(131)}kl(267),tr()}}function er(){Vl.startNonterminal("InstanceofExpr",Pl),nr(),kl(224),Hl==160&&(Sl(160),kl(64),Sl(196),kl(260),Nl(),ms()),Vl.endNonterminal("InstanceofExpr",Pl)}function tr(){rr(),kl(224),Hl==160&&(xl(160),kl(64),xl(196),kl(260),gs())}function nr(){Vl.startNonterminal("TreatExpr",Pl),ir(),kl(225),Hl==249&&(Sl(249),kl(30),Sl(79),kl(260),Nl(),ms()),Vl.endNonterminal("TreatExpr",Pl)}function rr(){sr(),kl(225),Hl==249&&(xl(249),kl(30),xl(79),kl(260),gs())}function ir(){Vl.startNonterminal("CastableExpr",Pl),or(),kl(226),Hl==90&&(Sl(90),kl(30),Sl(79),kl(255),Nl(),hs()),Vl.endNonterminal("CastableExpr",Pl)}function sr(){ur(),kl(226),Hl==90&&(xl(90),kl(30),xl(79),kl(255),ps())}function or(){Vl.startNonterminal("CastExpr",Pl),ar(),kl(228),Hl==89&&(Sl(89),kl(30),Sl(79),kl(255),Nl(),hs()),Vl.endNonterminal("CastExpr",Pl)}function ur(){fr(),kl(228),Hl==89&&(xl(89),kl(30),xl(79),kl(255),ps())}function ar(){Vl.startNonterminal("UnaryExpr",Pl);for(;;){kl(267);if(Hl!=40&&Hl!=42)break;switch(Hl){case 42:Sl(42);break;default:Sl(40)}}Nl(),lr(),Vl.endNonterminal("UnaryExpr",Pl)}function fr(){for(;;){kl(267);if(Hl!=40&&Hl!=42)break;switch(Hl){case 42:xl(42);break;default:xl(40)}}cr()}function lr(){Vl.startNonterminal("ValueExpr",Pl);switch(Hl){case 260:Ll(248);break;default:_l=Hl}switch(_l){case 87812:case 123140:case 129284:case 141572:wr();break;case 35:Tr();break;default:hr()}Vl.endNonterminal("ValueExpr",Pl)}function cr(){switch(Hl){case 260:Ll(248);break;default:_l=Hl}switch(_l){case 87812:case 123140:case 129284:case 141572:Er();break;case 35:Nr();break;default:pr()}}function hr(){Vl.startNonterminal("SimpleMapExpr",Pl),Lr();for(;;){if(Hl!=26)break;Sl(26),kl(266),Nl(),Lr()}Vl.endNonterminal("SimpleMapExpr",Pl)}function pr(){Ar();for(;;){if(Hl!=26)break;xl(26),kl(266),Ar()}}function dr(){Vl.startNonterminal("GeneralComp",Pl);switch(Hl){case 60:Sl(60);break;case 27:Sl(27);break;case 54:Sl(54);break;case 58:Sl(58);break;case 61:Sl(61);break;default:Sl(62)}Vl.endNonterminal("GeneralComp",Pl)}function vr(){switch(Hl){case 60:xl(60);break;case 27:xl(27);break;case 54:xl(54);break;case 58:xl(58);break;case 61:xl(61);break;default:xl(62)}}function mr(){Vl.startNonterminal("ValueComp",Pl);switch(Hl){case 128:Sl(128);break;case 186:Sl(186);break;case 178:Sl(178);break;case 172:Sl(172);break;case 150:Sl(150);break;default:Sl(146)}Vl.endNonterminal("ValueComp",Pl)}function gr(){switch(Hl){case 128:xl(128);break;case 186:xl(186);break;case 178:xl(178);break;case 172:xl(172);break;case 150:xl(150);break;default:xl(146)}}function yr(){Vl.startNonterminal("NodeComp",Pl);switch(Hl){case 164:Sl(164);break;case 57:Sl(57);break;default:Sl(63)}Vl.endNonterminal("NodeComp",Pl)}function br(){switch(Hl){case 164:xl(164);break;case 57:xl(57);break;default:xl(63)}}function wr(){Vl.startNonterminal("ValidateExpr",Pl),Sl(260),kl(160);if(Hl!=276)switch(Hl){case 252:Sl(252),kl(255),Nl(),go();break;default:Nl(),Sr()}kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("ValidateExpr",Pl)}function Er(){xl(260),kl(160);if(Hl!=276)switch(Hl){case 252:xl(252),kl(255),yo();break;default:xr()}kl(87),xl(276),kl(267),Y(),xl(282)}function Sr(){Vl.startNonterminal("ValidationMode",Pl);switch(Hl){case 171:Sl(171);break;default:Sl(240)}Vl.endNonterminal("ValidationMode",Pl)}function xr(){switch(Hl){case 171:xl(171);break;default:xl(240)}}function Tr(){Vl.startNonterminal("ExtensionExpr",Pl);for(;;){Nl(),Cr(),kl(100);if(Hl!=35)break}Sl(276),kl(274),Hl!=282&&(Nl(),G()),Sl(282),Vl.endNonterminal("ExtensionExpr",Pl)}function Nr(){for(;;){kr(),kl(100);if(Hl!=35)break}xl(276),kl(274),Hl!=282&&Y(),xl(282)}function Cr(){Vl.startNonterminal("Pragma",Pl),Sl(35),Al(252),Hl==21&&Sl(21),Ha(),Al(10),Hl==21&&(Sl(21),Al(0),Sl(1)),Al(5),Sl(30),Vl.endNonterminal("Pragma",Pl)}function kr(){xl(35),Al(252),Hl==21&&xl(21),Ba(),Al(10),Hl==21&&(xl(21),Al(0),xl(1)),Al(5),xl(30)}function Lr(){Vl.startNonterminal("PathExpr",Pl);switch(Hl){case 46:Sl(46),kl(286);switch(Hl){case 25:case 26:case 27:case 37:case 38:case 40:case 41:case 42:case 49:case 53:case 57:case 58:case 60:case 61:case 62:case 63:case 69:case 87:case 99:case 205:case 232:case 247:case 273:case 279:case 280:case 281:case 282:break;default:Nl(),Or()}break;case 47:Sl(47),kl(265),Nl(),Or();break;default:Or()}Vl.endNonterminal("PathExpr",Pl)}function Ar(){switch(Hl){case 46:xl(46),kl(286);switch(Hl){case 25:case 26:case 27:case 37:case 38:case 40:case 41:case 42:case 49:case 53:case 57:case 58:case 60:case 61:case 62:case 63:case 69:case 87:case 99:case 205:case 232:case 247:case 273:case 279:case 280:case 281:case 282:break;default:Mr()}break;case 47:xl(47),kl(265),Mr();break;default:Mr()}}function Or(){Vl.startNonterminal("RelativePathExpr",Pl),_r();for(;;){switch(Hl){case 26:Ll(266);break;default:_l=Hl}if(_l!=25&&_l!=27&&_l!=37&&_l!=38&&_l!=40&&_l!=41&&_l!=42&&_l!=46&&_l!=47&&_l!=49&&_l!=53&&_l!=54&&_l!=57&&_l!=58&&_l!=60&&_l!=61&&_l!=62&&_l!=63&&_l!=69&&_l!=70&&_l!=75&&_l!=79&&_l!=80&&_l!=81&&_l!=84&&_l!=87&&_l!=88&&_l!=89&&_l!=90&&_l!=94&&_l!=99&&_l!=105&&_l!=109&&_l!=113&&_l!=118&&_l!=122&&_l!=123&&_l!=126&&_l!=128&&_l!=131&&_l!=137&&_l!=146&&_l!=148&&_l!=150&&_l!=151&&_l!=160&&_l!=162&&_l!=163&&_l!=164&&_l!=172&&_l!=174&&_l!=178&&_l!=180&&_l!=181&&_l!=186&&_l!=198&&_l!=200&&_l!=201&&_l!=205&&_l!=220&&_l!=224&&_l!=232&&_l!=236&&_l!=237&&_l!=247&&_l!=248&&_l!=249&&_l!=254&&_l!=266&&_l!=270&&_l!=273&&_l!=279&&_l!=280&&_l!=281&&_l!=282&&_l!=23578&&_l!=24090){_l=Kl(3,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{switch(Hl){case 46:xl(46);break;case 47:xl(47);break;default:xl(26)}kl(265),Dr(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(3,Pl,_l)}}if(_l!=-1&&_l!=46&&_l!=47)break;switch(Hl){case 46:Sl(46);break;case 47:Sl(47);break;default:Sl(26)}kl(265),Nl(),_r()}Vl.endNonterminal("RelativePathExpr",Pl)}function Mr(){Dr();for(;;){switch(Hl){case 26:Ll(266);break;default:_l=Hl}if(_l!=25&&_l!=27&&_l!=37&&_l!=38&&_l!=40&&_l!=41&&_l!=42&&_l!=46&&_l!=47&&_l!=49&&_l!=53&&_l!=54&&_l!=57&&_l!=58&&_l!=60&&_l!=61&&_l!=62&&_l!=63&&_l!=69&&_l!=70&&_l!=75&&_l!=79&&_l!=80&&_l!=81&&_l!=84&&_l!=87&&_l!=88&&_l!=89&&_l!=90&&_l!=94&&_l!=99&&_l!=105&&_l!=109&&_l!=113&&_l!=118&&_l!=122&&_l!=123&&_l!=126&&_l!=128&&_l!=131&&_l!=137&&_l!=146&&_l!=148&&_l!=150&&_l!=151&&_l!=160&&_l!=162&&_l!=163&&_l!=164&&_l!=172&&_l!=174&&_l!=178&&_l!=180&&_l!=181&&_l!=186&&_l!=198&&_l!=200&&_l!=201&&_l!=205&&_l!=220&&_l!=224&&_l!=232&&_l!=236&&_l!=237&&_l!=247&&_l!=248&&_l!=249&&_l!=254&&_l!=266&&_l!=270&&_l!=273&&_l!=279&&_l!=280&&_l!=281&&_l!=282&&_l!=23578&&_l!=24090){_l=Kl(3,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{switch(Hl){case 46:xl(46);break;case 47:xl(47);break;default:xl(26)}kl(265),Dr(),Jl(3,t,-1);continue}catch(a){Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(3,t,-2);break}}}if(_l!=-1&&_l!=46&&_l!=47)break;switch(Hl){case 46:xl(46);break;case 47:xl(47);break;default:xl(26)}kl(265),Dr()}}function _r(){Vl.startNonterminal("StepExpr",Pl);switch(Hl){case 82:Ll(285);break;case 121:Ll(283);break;case 184:case 216:Ll(282);break;case 96:case 119:case 202:case 244:case 256:Ll(247);break;case 78:case 124:case 152:case 165:case 167:case 242:case 243:case 253:Ll(240);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(246);break;case 6:case 70:case 72:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 137:case 141:case 145:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(244);break;default:_l=Hl}if(_l==35922||_l==35961||_l==36024||_l==36056||_l==38482||_l==38521||_l==38584||_l==38616||_l==40530||_l==40569||_l==40632||_l==40664||_l==41042||_l==41081||_l==41144||_l==41176||_l==41554||_l==41593||_l==41656||_l==41688||_l==43090||_l==43129||_l==43192||_l==43224||_l==45138||_l==45177||_l==45240||_l==45272||_l==45650||_l==45689||_l==45752||_l==45784||_l==46162||_l==46201||_l==46264||_l==46296||_l==48210||_l==48249||_l==48312||_l==48344||_l==53842||_l==53881||_l==53944||_l==53976||_l==55890||_l==55929||_l==55992||_l==56024||_l==57938||_l==57977||_l==58040||_l==58072||_l==60498||_l==60537||_l==60600||_l==60632||_l==62546||_l==62585||_l==62648||_l==62680||_l==63058||_l==63097||_l==63160||_l==63192||_l==64594||_l==64633||_l==64696||_l==64728||_l==65618||_l==65657||_l==65720||_l==65752||_l==67154||_l==67193||_l==67256||_l==67288||_l==70226||_l==70265||_l==70328||_l==70360||_l==74834||_l==74873||_l==74936||_l==74968||_l==75858||_l==75897||_l==75960||_l==75992||_l==76882||_l==76921||_l==76984||_l==77016||_l==77394||_l==77433||_l==77496||_l==77528||_l==82002||_l==82041||_l==82104||_l==82136||_l==83026||_l==83065||_l==83128||_l==83160||_l==83538||_l==83577||_l==83640||_l==83672||_l==84050||_l==84089||_l==84152||_l==84184||_l==88146||_l==88185||_l==88248||_l==88280||_l==89170||_l==89209||_l==89272||_l==89304||_l==91218||_l==91257||_l==91320||_l==91352||_l==92242||_l==92281||_l==92344||_l==92376||_l==92754||_l==92793||_l==92856||_l==92888||_l==95314||_l==95353||_l==95416||_l==95448||_l==101458||_l==101497||_l==101560||_l==101592||_l==102482||_l==102521||_l==102584||_l==102616||_l==102994||_l==103033||_l==103096||_l==103128||_l==112722||_l==112761||_l==112824||_l==112856||_l==114770||_l==114809||_l==114872||_l==114904||_l==120914||_l==120953||_l==121016||_l==121048||_l==121426||_l==121465||_l==121528||_l==121560||_l==127058||_l==127097||_l==127160||_l==127192||_l==127570||_l==127609||_l==127672||_l==127704||_l==130130||_l==130169||_l==130232||_l==130264||_l==136274||_l==136313||_l==136376||_l==136408||_l==138322||_l==138361||_l==138424||_l==138456){_l=Kl(4,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Zr(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(4,Pl,_l)}}switch(_l){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 34:case 44:case 54:case 55:case 59:case 68:case 276:case 278:case 3154:case 3193:case 9912:case 9944:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14993:case 14994:case 14996:case 14998:case 14999:case 15e3:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15033:case 15034:case 15039:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15074:case 15075:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15090:case 15091:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15101:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17553:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:case 36946:case 36985:case 37048:case 37080:case 37458:case 37497:case 37560:case 37592:case 37970:case 38009:case 38072:case 38104:case 39506:case 39545:case 39608:case 39640:case 40018:case 40057:case 42066:case 42105:case 42168:case 42200:case 42578:case 42617:case 42680:case 42712:case 43602:case 43641:case 43704:case 43736:case 44114:case 44153:case 44216:case 44248:case 46674:case 46713:case 46776:case 46808:case 47698:case 47737:case 47800:case 47832:case 49234:case 49273:case 49336:case 49368:case 49746:case 49785:case 49848:case 49880:case 50258:case 50297:case 50360:case 50392:case 51794:case 51833:case 51896:case 51928:case 52306:case 52345:case 52408:case 52440:case 52818:case 52857:case 52920:case 52952:case 53330:case 53369:case 53432:case 53464:case 54354:case 54393:case 54456:case 54488:case 55378:case 55417:case 55480:case 55512:case 56402:case 56441:case 56504:case 56536:case 56914:case 56953:case 57016:case 57048:case 57426:case 57465:case 57528:case 57560:case 61010:case 61049:case 61112:case 61144:case 61522:case 61561:case 61624:case 61656:case 62034:case 62073:case 62136:case 62168:case 63570:case 63609:case 63672:case 63704:case 64082:case 64121:case 64184:case 64216:case 66130:case 66169:case 66232:case 66264:case 67666:case 67705:case 67768:case 67800:case 68178:case 68217:case 68280:case 68312:case 68690:case 68729:case 68792:case 68824:case 69202:case 69241:case 69304:case 69336:case 69714:case 69753:case 69816:case 69848:case 72274:case 72313:case 72376:case 72408:case 74322:case 74361:case 74424:case 74456:case 77906:case 77945:case 78008:case 78040:case 78418:case 78457:case 78520:case 78552:case 78930:case 78969:case 79032:case 79064:case 79442:case 79481:case 79544:case 79576:case 81490:case 81529:case 81592:case 81624:case 82514:case 82553:case 82616:case 82648:case 84562:case 84601:case 84664:case 84696:case 85074:case 85113:case 85176:case 85208:case 85586:case 85625:case 87122:case 87161:case 87224:case 87256:case 87634:case 87673:case 87736:case 87768:case 90194:case 90233:case 90296:case 90328:case 93266:case 93305:case 93368:case 93400:case 94290:case 94329:case 94392:case 94424:case 94802:case 94841:case 94904:case 94936:case 97874:case 97913:case 97976:case 98008:case 98386:case 98425:case 98488:case 98520:case 99410:case 99449:case 99512:case 99544:case 101970:case 102009:case 102072:case 102104:case 103506:case 103545:case 103608:case 103640:case 104018:case 104057:case 104120:case 104152:case 105554:case 105593:case 105656:case 105688:case 108626:case 108665:case 108728:case 108760:case 109138:case 109177:case 109240:case 109272:case 110674:case 110713:case 110776:case 110808:case 111698:case 111737:case 111800:case 111832:case 112210:case 112249:case 112312:case 112344:case 113234:case 113273:case 113336:case 113368:case 113746:case 113785:case 113848:case 113880:case 115282:case 115321:case 115384:case 115416:case 115794:case 115833:case 115896:case 115928:case 116306:case 116345:case 116408:case 116440:case 116818:case 116857:case 116920:case 116952:case 117330:case 117369:case 117432:case 117464:case 119890:case 119929:case 119992:case 120024:case 120402:case 120441:case 120504:case 120536:case 122962:case 123001:case 123064:case 123096:case 123986:case 124025:case 124498:case 124537:case 124600:case 124632:case 125010:case 125049:case 125112:case 125144:case 128082:case 128121:case 128184:case 128216:case 128594:case 128633:case 128696:case 128728:case 129106:case 129145:case 129208:case 129240:case 129618:case 129657:case 129720:case 129752:case 131154:case 131193:case 131256:case 131288:case 131666:case 131705:case 131768:case 131800:case 133202:case 133241:case 133304:case 133336:case 133714:case 133753:case 133816:case 133848:case 134226:case 134265:case 134328:case 134360:case 134738:case 134777:case 134840:case 134872:case 136786:case 136825:case 136888:case 136920:case 140370:case 140409:case 140472:case 140504:case 141394:case 141408:case 141431:case 141433:case 141496:case 141514:case 141528:case 141556:case 141568:Yr();break;default:Pr()}Vl.endNonterminal("StepExpr",Pl)}function Dr(){switch(Hl){case 82:Ll(285);break;case 121:Ll(283);break;case 184:case 216:Ll(282);break;case 96:case 119:case 202:case 244:case 256:Ll(247);break;case 78:case 124:case 152:case 165:case 167:case 242:case 243:case 253:Ll(240);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(246);break;case 6:case 70:case 72:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 137:case 141:case 145:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(244);break;default:_l=Hl}if(_l==35922||_l==35961||_l==36024||_l==36056||_l==38482||_l==38521||_l==38584||_l==38616||_l==40530||_l==40569||_l==40632||_l==40664||_l==41042||_l==41081||_l==41144||_l==41176||_l==41554||_l==41593||_l==41656||_l==41688||_l==43090||_l==43129||_l==43192||_l==43224||_l==45138||_l==45177||_l==45240||_l==45272||_l==45650||_l==45689||_l==45752||_l==45784||_l==46162||_l==46201||_l==46264||_l==46296||_l==48210||_l==48249||_l==48312||_l==48344||_l==53842||_l==53881||_l==53944||_l==53976||_l==55890||_l==55929||_l==55992||_l==56024||_l==57938||_l==57977||_l==58040||_l==58072||_l==60498||_l==60537||_l==60600||_l==60632||_l==62546||_l==62585||_l==62648||_l==62680||_l==63058||_l==63097||_l==63160||_l==63192||_l==64594||_l==64633||_l==64696||_l==64728||_l==65618||_l==65657||_l==65720||_l==65752||_l==67154||_l==67193||_l==67256||_l==67288||_l==70226||_l==70265||_l==70328||_l==70360||_l==74834||_l==74873||_l==74936||_l==74968||_l==75858||_l==75897||_l==75960||_l==75992||_l==76882||_l==76921||_l==76984||_l==77016||_l==77394||_l==77433||_l==77496||_l==77528||_l==82002||_l==82041||_l==82104||_l==82136||_l==83026||_l==83065||_l==83128||_l==83160||_l==83538||_l==83577||_l==83640||_l==83672||_l==84050||_l==84089||_l==84152||_l==84184||_l==88146||_l==88185||_l==88248||_l==88280||_l==89170||_l==89209||_l==89272||_l==89304||_l==91218||_l==91257||_l==91320||_l==91352||_l==92242||_l==92281||_l==92344||_l==92376||_l==92754||_l==92793||_l==92856||_l==92888||_l==95314||_l==95353||_l==95416||_l==95448||_l==101458||_l==101497||_l==101560||_l==101592||_l==102482||_l==102521||_l==102584||_l==102616||_l==102994||_l==103033||_l==103096||_l==103128||_l==112722||_l==112761||_l==112824||_l==112856||_l==114770||_l==114809||_l==114872||_l==114904||_l==120914||_l==120953||_l==121016||_l==121048||_l==121426||_l==121465||_l==121528||_l==121560||_l==127058||_l==127097||_l==127160||_l==127192||_l==127570||_l==127609||_l==127672||_l==127704||_l==130130||_l==130169||_l==130232||_l==130264||_l==136274||_l==136313||_l==136376||_l==136408||_l==138322||_l==138361||_l==138424||_l==138456){_l=Kl(4,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Zr(),Jl(4,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(4,t,-2)}}}switch(_l){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 34:case 44:case 54:case 55:case 59:case 68:case 276:case 278:case 3154:case 3193:case 9912:case 9944:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14993:case 14994:case 14996:case 14998:case 14999:case 15e3:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15033:case 15034:case 15039:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15074:case 15075:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15090:case 15091:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15101:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17553:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:case 36946:case 36985:case 37048:case 37080:case 37458:case 37497:case 37560:case 37592:case 37970:case 38009:case 38072:case 38104:case 39506:case 39545:case 39608:case 39640:case 40018:case 40057:case 42066:case 42105:case 42168:case 42200:case 42578:case 42617:case 42680:case 42712:case 43602:case 43641:case 43704:case 43736:case 44114:case 44153:case 44216:case 44248:case 46674:case 46713:case 46776:case 46808:case 47698:case 47737:case 47800:case 47832:case 49234:case 49273:case 49336:case 49368:case 49746:case 49785:case 49848:case 49880:case 50258:case 50297:case 50360:case 50392:case 51794:case 51833:case 51896:case 51928:case 52306:case 52345:case 52408:case 52440:case 52818:case 52857:case 52920:case 52952:case 53330:case 53369:case 53432:case 53464:case 54354:case 54393:case 54456:case 54488:case 55378:case 55417:case 55480:case 55512:case 56402:case 56441:case 56504:case 56536:case 56914:case 56953:case 57016:case 57048:case 57426:case 57465:case 57528:case 57560:case 61010:case 61049:case 61112:case 61144:case 61522:case 61561:case 61624:case 61656:case 62034:case 62073:case 62136:case 62168:case 63570:case 63609:case 63672:case 63704:case 64082:case 64121:case 64184:case 64216:case 66130:case 66169:case 66232:case 66264:case 67666:case 67705:case 67768:case 67800:case 68178:case 68217:case 68280:case 68312:case 68690:case 68729:case 68792:case 68824:case 69202:case 69241:case 69304:case 69336:case 69714:case 69753:case 69816:case 69848:case 72274:case 72313:case 72376:case 72408:case 74322:case 74361:case 74424:case 74456:case 77906:case 77945:case 78008:case 78040:case 78418:case 78457:case 78520:case 78552:case 78930:case 78969:case 79032:case 79064:case 79442:case 79481:case 79544:case 79576:case 81490:case 81529:case 81592:case 81624:case 82514:case 82553:case 82616:case 82648:case 84562:case 84601:case 84664:case 84696:case 85074:case 85113:case 85176:case 85208:case 85586:case 85625:case 87122:case 87161:case 87224:case 87256:case 87634:case 87673:case 87736:case 87768:case 90194:case 90233:case 90296:case 90328:case 93266:case 93305:case 93368:case 93400:case 94290:case 94329:case 94392:case 94424:case 94802:case 94841:case 94904:case 94936:case 97874:case 97913:case 97976:case 98008:case 98386:case 98425:case 98488:case 98520:case 99410:case 99449:case 99512:case 99544:case 101970:case 102009:case 102072:case 102104:case 103506:case 103545:case 103608:case 103640:case 104018:case 104057:case 104120:case 104152:case 105554:case 105593:case 105656:case 105688:case 108626:case 108665:case 108728:case 108760:case 109138:case 109177:case 109240:case 109272:case 110674:case 110713:case 110776:case 110808:case 111698:case 111737:case 111800:case 111832:case 112210:case 112249:case 112312:case 112344:case 113234:case 113273:case 113336:case 113368:case 113746:case 113785:case 113848:case 113880:case 115282:case 115321:case 115384:case 115416:case 115794:case 115833:case 115896:case 115928:case 116306:case 116345:case 116408:case 116440:case 116818:case 116857:case 116920:case 116952:case 117330:case 117369:case 117432:case 117464:case 119890:case 119929:case 119992:case 120024:case 120402:case 120441:case 120504:case 120536:case 122962:case 123001:case 123064:case 123096:case 123986:case 124025:case 124498:case 124537:case 124600:case 124632:case 125010:case 125049:case 125112:case 125144:case 128082:case 128121:case 128184:case 128216:case 128594:case 128633:case 128696:case 128728:case 129106:case 129145:case 129208:case 129240:case 129618:case 129657:case 129720:case 129752:case 131154:case 131193:case 131256:case 131288:case 131666:case 131705:case 131768:case 131800:case 133202:case 133241:case 133304:case 133336:case 133714:case 133753:case 133816:case 133848:case 134226:case 134265:case 134328:case 134360:case 134738:case 134777:case 134840:case 134872:case 136786:case 136825:case 136888:case 136920:case 140370:case 140409:case 140472:case 140504:case 141394:case 141408:case 141431:case 141433:case 141496:case 141514:case 141528:case 141556:case 141568:Zr();break;case-3:break;default:Hr()}}function Pr(){Vl.startNonterminal("AxisStep",Pl);switch(Hl){case 73:case 74:case 206:case 212:case 213:Ll(242);break;default:_l=Hl}switch(_l){case 45:case 26185:case 26186:case 26318:case 26324:case 26325:Ur();break;default:Br()}kl(238),Nl(),ni(),Vl.endNonterminal("AxisStep",Pl)}function Hr(){switch(Hl){case 73:case 74:case 206:case 212:case 213:Ll(242);break;default:_l=Hl}switch(_l){case 45:case 26185:case 26186:case 26318:case 26324:case 26325:zr();break;default:jr()}kl(238),ri()}function Br(){Vl.startNonterminal("ForwardStep",Pl);switch(Hl){case 82:Ll(245);break;case 93:case 111:case 112:case 135:case 136:case 229:Ll(242);break;default:_l=Hl}switch(_l){case 26194:case 26205:case 26223:case 26224:case 26247:case 26248:case 26341:Fr(),kl(257),Nl(),Jr();break;default:qr()}Vl.endNonterminal("ForwardStep",Pl)}function jr(){switch(Hl){case 82:Ll(245);break;case 93:case 111:case 112:case 135:case 136:case 229:Ll(242);break;default:_l=Hl}switch(_l){case 26194:case 26205:case 26223:case 26224:case 26247:case 26248:case 26341:Ir(),kl(257),Kr();break;default:Rr()}}function Fr(){Vl.startNonterminal("ForwardAxis",Pl);switch(Hl){case 93:Sl(93),kl(26),Sl(51);break;case 111:Sl(111),kl(26),Sl(51);break;case 82:Sl(82),kl(26),Sl(51);break;case 229:Sl(229),kl(26),Sl(51);break;case 112:Sl(112),kl(26),Sl(51);break;case 136:Sl(136),kl(26),Sl(51);break;default:Sl(135),kl(26),Sl(51)}Vl.endNonterminal("ForwardAxis",Pl)}function Ir(){switch(Hl){case 93:xl(93),kl(26),xl(51);break;case 111:xl(111),kl(26),xl(51);break;case 82:xl(82),kl(26),xl(51);break;case 229:xl(229),kl(26),xl(51);break;case 112:xl(112),kl(26),xl(51);break;case 136:xl(136),kl(26),xl(51);break;default:xl(135),kl(26),xl(51)}}function qr(){Vl.startNonterminal("AbbrevForwardStep",Pl),Hl==66&&Sl(66),kl(257),Nl(),Jr(),Vl.endNonterminal("AbbrevForwardStep",Pl)}function Rr(){Hl==66&&xl(66),kl(257),Kr()}function Ur(){Vl.startNonterminal("ReverseStep",Pl);switch(Hl){case 45:Vr();break;default:Wr(),kl(257),Nl(),Jr()}Vl.endNonterminal("ReverseStep",Pl)}function zr(){switch(Hl){case 45:$r();break;default:Xr(),kl(257),Kr()}}function Wr(){Vl.startNonterminal("ReverseAxis",Pl);switch(Hl){case 206:Sl(206),kl(26),Sl(51);break;case 73:Sl(73),kl(26),Sl(51);break;case 213:Sl(213),kl(26),Sl(51);break;case 212:Sl(212),kl(26),Sl(51);break;default:Sl(74),kl(26),Sl(51)}Vl.endNonterminal("ReverseAxis",Pl)}function Xr(){switch(Hl){case 206:xl(206),kl(26),xl(51);break;case 73:xl(73),kl(26),xl(51);break;case 213:xl(213),kl(26),xl(51);break;case 212:xl(212),kl(26),xl(51);break;default:xl(74),kl(26),xl(51)}}function Vr(){Vl.startNonterminal("AbbrevReverseStep",Pl),Sl(45),Vl.endNonterminal("AbbrevReverseStep",Pl)}function $r(){xl(45)}function Jr(){Vl.startNonterminal("NodeTest",Pl);switch(Hl){case 82:case 96:case 120:case 121:case 185:case 191:case 216:case 226:case 227:case 244:Ll(241);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Ps();break;default:Qr()}Vl.endNonterminal("NodeTest",Pl)}function Kr(){switch(Hl){case 82:case 96:case 120:case 121:case 185:case 191:case 216:case 226:case 227:case 244:Ll(241);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Hs();break;default:Gr()}}function Qr(){Vl.startNonterminal("NameTest",Pl);switch(Hl){case 5:Sl(5);break;default:Ha()}Vl.endNonterminal("NameTest",Pl)}function Gr(){switch(Hl){case 5:xl(5);break;default:Ba()}}function Yr(){Vl.startNonterminal("PostfixExpr",Pl),ol();for(;;){kl(241);if(Hl!=34&&Hl!=68)break;switch(Hl){case 68:Nl(),ii();break;default:Nl(),ei()}}Vl.endNonterminal("PostfixExpr",Pl)}function Zr(){ul();for(;;){kl(241);if(Hl!=34&&Hl!=68)break;switch(Hl){case 68:si();break;default:ti()}}}function ei(){Vl.startNonterminal("ArgumentList",Pl),Sl(34),kl(276);if(Hl!=37){Nl(),Ti();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(271),Nl(),Ti()}}Sl(37),Vl.endNonterminal("ArgumentList",Pl)}function ti(){xl(34),kl(276);if(Hl!=37){Ni();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(271),Ni()}}xl(37)}function ni(){Vl.startNonterminal("PredicateList",Pl);for(;;){kl(238);if(Hl!=68)break;Nl(),ii()}Vl.endNonterminal("PredicateList",Pl)}function ri(){for(;;){kl(238);if(Hl!=68)break;si()}}function ii(){Vl.startNonterminal("Predicate",Pl),Sl(68),kl(267),Nl(),G(),Sl(69),Vl.endNonterminal("Predicate",Pl)}function si(){xl(68),kl(267),Y(),xl(69)}function oi(){Vl.startNonterminal("Literal",Pl);switch(Hl){case 11:Sl(11);break;default:ai()}Vl.endNonterminal("Literal",Pl)}function ui(){switch(Hl){case 11:xl(11);break;default:fi()}}function ai(){Vl.startNonterminal("NumericLiteral",Pl);switch(Hl){case 8:Sl(8);break;case 9:Sl(9);break;default:Sl(10)}Vl.endNonterminal("NumericLiteral",Pl)}function fi(){switch(Hl){case 8:xl(8);break;case 9:xl(9);break;default:xl(10)}}function li(){Vl.startNonterminal("VarRef",Pl),Sl(31),kl(255),Nl(),hi(),Vl.endNonterminal("VarRef",Pl)}function ci(){xl(31),kl(255),pi()}function hi(){Vl.startNonterminal("VarName",Pl),Ha(),Vl.endNonterminal("VarName",Pl)}function pi(){Ba()}function di(){Vl.startNonterminal("ParenthesizedExpr",Pl),Sl(34),kl(269),Hl!=37&&(Nl(),G()),Sl(37),Vl.endNonterminal("ParenthesizedExpr",Pl)}function vi(){xl(34),kl(269),Hl!=37&&Y(),xl(37)}function mi(){Vl.startNonterminal("ContextItemExpr",Pl),Sl(44),Vl.endNonterminal("ContextItemExpr",Pl)}function gi(){xl(44)}function yi(){Vl.startNonterminal("OrderedExpr",Pl),Sl(202),kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("OrderedExpr",Pl)}function bi(){xl(202),kl(87),xl(276),kl(267),Y(),xl(282)}function wi(){Vl.startNonterminal("UnorderedExpr",Pl),Sl(256),kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("UnorderedExpr",Pl)}function Ei(){xl(256),kl(87),xl(276),kl(267),Y(),xl(282)}function Si(){Vl.startNonterminal("FunctionCall",Pl),ja(),kl(22),Nl(),ei(),Vl.endNonterminal("FunctionCall",Pl)}function xi(){Fa(),kl(22),ti()}function Ti(){Vl.startNonterminal("Argument",Pl);switch(Hl){case 64:Ci();break;default:_f()}Vl.endNonterminal("Argument",Pl)}function Ni(){switch(Hl){case 64:ki();break;default:Df()}}function Ci(){Vl.startNonterminal("ArgumentPlaceholder",Pl),Sl(64),Vl.endNonterminal("ArgumentPlaceholder",Pl)}function ki(){xl(64)}function Li(){Vl.startNonterminal("Constructor",Pl);switch(Hl){case 54:case 55:case 59:Oi();break;default:Ji()}Vl.endNonterminal("Constructor",Pl)}function Ai(){switch(Hl){case 54:case 55:case 59:Mi();break;default:Ki()}}function Oi(){Vl.startNonterminal("DirectConstructor",Pl);switch(Hl){case 54:_i();break;case 55:Wi();break;default:Vi()}Vl.endNonterminal("DirectConstructor",Pl)}function Mi(){switch(Hl){case 54:Di();break;case 55:Xi();break;default:$i()}}function _i(){Vl.startNonterminal("DirElemConstructor",Pl),Sl(54),Al(4),Sl(20),Pi();switch(Hl){case 48:Sl(48);break;default:Sl(61);for(;;){Al(174);if(Hl==56)break;Ui()}Sl(56),Al(4),Sl(20),Al(12),Hl==21&&Sl(21),Al(8),Sl(61)}Vl.endNonterminal("DirElemConstructor",Pl)}function Di(){xl(54),Al(4),xl(20),Hi();switch(Hl){case 48:xl(48);break;default:xl(61);for(;;){Al(174);if(Hl==56)break;zi()}xl(56),Al(4),xl(20),Al(12),Hl==21&&xl(21),Al(8),xl(61)}}function Pi(){Vl.startNonterminal("DirAttributeList",Pl);for(;;){Al(19);if(Hl!=21)break;Sl(21),Al(91),Hl==20&&(Sl(20),Al(11),Hl==21&&Sl(21),Al(7),Sl(60),Al(18),Hl==21&&Sl(21),Bi())}Vl.endNonterminal("DirAttributeList",Pl)}function Hi(){for(;;){Al(19);if(Hl!=21)break;xl(21),Al(91),Hl==20&&(xl(20),Al(11),Hl==21&&xl(21),Al(7),xl(60),Al(18),Hl==21&&xl(21),ji())}}function Bi(){Vl.startNonterminal("DirAttributeValue",Pl),Al(14);switch(Hl){case 28:Sl(28);for(;;){Al(167);if(Hl==28)break;switch(Hl){case 13:Sl(13);break;default:Fi()}}Sl(28);break;default:Sl(33);for(;;){Al(168);if(Hl==33)break;switch(Hl){case 14:Sl(14);break;default:qi()}}Sl(33)}Vl.endNonterminal("DirAttributeValue",Pl)}function ji(){Al(14);switch(Hl){case 28:xl(28);for(;;){Al(167);if(Hl==28)break;switch(Hl){case 13:xl(13);break;default:Ii()}}xl(28);break;default:xl(33);for(;;){Al(168);if(Hl==33)break;switch(Hl){case 14:xl(14);break;default:Ri()}}xl(33)}}function Fi(){Vl.startNonterminal("QuotAttrValueContent",Pl);switch(Hl){case 16:Sl(16);break;default:Vf()}Vl.endNonterminal("QuotAttrValueContent",Pl)}function Ii(){switch(Hl){case 16:xl(16);break;default:$f()}}function qi(){Vl.startNonterminal("AposAttrValueContent",Pl);switch(Hl){case 17:Sl(17);break;default:Vf()}Vl.endNonterminal("AposAttrValueContent",Pl)}function Ri(){switch(Hl){case 17:xl(17);break;default:$f()}}function Ui(){Vl.startNonterminal("DirElemContent",Pl);switch(Hl){case 54:case 55:case 59:Oi();break;case 4:Sl(4);break;case 15:Sl(15);break;default:Vf()}Vl.endNonterminal("DirElemContent",Pl)}function zi(){switch(Hl){case 54:case 55:case 59:Mi();break;case 4:xl(4);break;case 15:xl(15);break;default:$f()}}function Wi(){Vl.startNonterminal("DirCommentConstructor",Pl),Sl(55),Al(1),Sl(2),Al(6),Sl(43),Vl.endNonterminal("DirCommentConstructor",Pl)}function Xi(){xl(55),Al(1),xl(2),Al(6),xl(43)}function Vi(){Vl.startNonterminal("DirPIConstructor",Pl),Sl(59),Al(3),Sl(18),Al(13),Hl==21&&(Sl(21),Al(2),Sl(3)),Al(9),Sl(65),Vl.endNonterminal("DirPIConstructor",Pl)}function $i(){xl(59),Al(3),xl(18),Al(13),Hl==21&&(xl(21),Al(2),xl(3)),Al(9),xl(65)}function Ji(){Vl.startNonterminal("ComputedConstructor",Pl);switch(Hl){case 119:Qf();break;case 121:Qi();break;case 82:Yf();break;case 184:Yi();break;case 244:il();break;case 96:nl();break;default:el()}Vl.endNonterminal("ComputedConstructor",Pl)}function Ki(){switch(Hl){case 119:Gf();break;case 121:Gi();break;case 82:Zf();break;case 184:Zi();break;case 244:sl();break;case 96:rl();break;default:tl()}}function Qi(){Vl.startNonterminal("CompElemConstructor",Pl),Sl(121),kl(258);switch(Hl){case 276:Sl(276),kl(267),Nl(),G(),Sl(282);break;default:Nl(),Ha()}kl(87),Sl(276),kl(277),Hl!=282&&(Nl(),Jf()),Sl(282),Vl.endNonterminal("CompElemConstructor",Pl)}function Gi(){xl(121),kl(258);switch(Hl){case 276:xl(276),kl(267),Y(),xl(282);break;default:Ba()}kl(87),xl(276),kl(277),Hl!=282&&Kf(),xl(282)}function Yi(){Vl.startNonterminal("CompNamespaceConstructor",Pl),Sl(184),kl(251);switch(Hl){case 276:Sl(276),kl(267),Nl(),ns(),Sl(282);break;default:Nl(),es()}kl(87),Sl(276),kl(267),Nl(),is(),Sl(282),Vl.endNonterminal("CompNamespaceConstructor",Pl)}function Zi(){xl(184),kl(251);switch(Hl){case 276:xl(276),kl(267),rs(),xl(282);break;default:ts()}kl(87),xl(276),kl(267),ss(),xl(282)}function es(){Vl.startNonterminal("Prefix",Pl),Ia(),Vl.endNonterminal("Prefix",Pl)}function ts(){qa()}function ns(){Vl.startNonterminal("PrefixExpr",Pl),G(),Vl.endNonterminal("PrefixExpr",Pl)}function rs(){Y()}function is(){Vl.startNonterminal("URIExpr",Pl),G(),Vl.endNonterminal("URIExpr",Pl)}function ss(){Y()}function os(){Vl.startNonterminal("FunctionItemExpr",Pl);switch(Hl){case 145:Ll(92);break;default:_l=Hl}switch(_l){case 32:case 17553:ls();break;default:as()}Vl.endNonterminal("FunctionItemExpr",Pl)}function us(){switch(Hl){case 145:Ll(92);break;default:_l=Hl}switch(_l){case 32:case 17553:cs();break;default:fs()}}function as(){Vl.startNonterminal("NamedFunctionRef",Pl),Ha(),kl(20),Sl(29),kl(16),Sl(8),Vl.endNonterminal("NamedFunctionRef",Pl)}function fs(){Ba(),kl(20),xl(29),kl(16),xl(8)}function ls(){Vl.startNonterminal("InlineFunctionExpr",Pl);for(;;){kl(97);if(Hl!=32)break;Nl(),B()}Sl(145),kl(22),Sl(34),kl(94),Hl==31&&(Nl(),U()),Sl(37),kl(111),Hl==79&&(Sl(79),kl(260),Nl(),ms()),kl(87),Nl(),V(),Vl.endNonterminal("InlineFunctionExpr",Pl)}function cs(){for(;;){kl(97);if(Hl!=32)break;j()}xl(145),kl(22),xl(34),kl(94),Hl==31&&z(),xl(37),kl(111),Hl==79&&(xl(79),kl(260),gs()),kl(87),$()}function hs(){Vl.startNonterminal("SingleType",Pl),vo(),kl(227),Hl==64&&Sl(64),Vl.endNonterminal("SingleType",Pl)}function ps(){mo(),kl(227),Hl==64&&xl(64)}function ds(){Vl.startNonterminal("TypeDeclaration",Pl),Sl(79),kl(260),Nl(),ms(),Vl.endNonterminal("TypeDeclaration",Pl)}function vs(){xl(79),kl(260),gs()}function ms(){Vl.startNonterminal("SequenceType",Pl);switch(Hl){case 124:Ll(243);break;default:_l=Hl}switch(_l){case 17532:Sl(124),kl(22),Sl(34),kl(23),Sl(37);break;default:ws(),kl(239);switch(Hl){case 39:case 40:case 64:Nl(),ys();break;default:}}Vl.endNonterminal("SequenceType",Pl)}function gs(){switch(Hl){case 124:Ll(243);break;default:_l=Hl}switch(_l){case 17532:xl(124),kl(22),xl(34),kl(23),xl(37);break;default:Es(),kl(239);switch(Hl){case 39:case 40:case 64:bs();break;default:}}}function ys(){Vl.startNonterminal("OccurrenceIndicator",Pl);switch(Hl){case 64:Sl(64);break;case 39:Sl(39);break;default:Sl(40)}Vl.endNonterminal("OccurrenceIndicator",Pl)}function bs(){switch(Hl){case 64:xl(64);break;case 39:xl(39);break;default:xl(40)}}function ws(){Vl.startNonterminal("ItemType",Pl);switch(Hl){case 78:case 82:case 96:case 120:case 121:case 145:case 165:case 167:case 185:case 191:case 194:case 216:case 226:case 227:case 242:case 244:Ll(243);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Ps();break;case 17573:Sl(165),kl(22),Sl(34),kl(23),Sl(37);break;case 32:case 17553:bo();break;case 34:No();break;case 17486:case 17575:case 17602:Ss();break;case 17650:Ts();break;default:_s()}Vl.endNonterminal("ItemType",Pl)}function Es(){switch(Hl){case 78:case 82:case 96:case 120:case 121:case 145:case 165:case 167:case 185:case 191:case 194:case 216:case 226:case 227:case 242:case 244:Ll(243);break;default:_l=Hl}switch(_l){case 17490:case 17504:case 17528:case 17529:case 17593:case 17599:case 17624:case 17634:case 17635:case 17652:Hs();break;case 17573:xl(165),kl(22),xl(34),kl(23),xl(37);break;case 32:case 17553:wo();break;case 34:Co();break;case 17486:case 17575:case 17602:xs();break;case 17650:Ns();break;default:Ds()}}function Ss(){Vl.startNonterminal("JSONTest",Pl);switch(Hl){case 167:Cs();break;case 194:Ls();break;default:Os()}Vl.endNonterminal("JSONTest",Pl)}function xs(){switch(Hl){case 167:ks();break;case 194:As();break;default:Ms()}}function Ts(){Vl.startNonterminal("StructuredItemTest",Pl),Sl(242),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("StructuredItemTest",Pl)}function Ns(){xl(242),kl(22),xl(34),kl(23),xl(37)}function Cs(){Vl.startNonterminal("JSONItemTest",Pl),Sl(167),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("JSONItemTest",Pl)}function ks(){xl(167),kl(22),xl(34),kl(23),xl(37)}function Ls(){Vl.startNonterminal("JSONObjectTest",Pl),Sl(194),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("JSONObjectTest",Pl)}function As(){xl(194),kl(22),xl(34),kl(23),xl(37)}function Os(){Vl.startNonterminal("JSONArrayTest",Pl),Sl(78),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("JSONArrayTest",Pl)}function Ms(){xl(78),kl(22),xl(34),kl(23),xl(37)}function _s(){Vl.startNonterminal("AtomicOrUnionType",Pl),Ha(),Vl.endNonterminal("AtomicOrUnionType",Pl)}function Ds(){Ba()}function Ps(){Vl.startNonterminal("KindTest",Pl);switch(Hl){case 120:Fs();break;case 121:no();break;case 82:Js();break;case 227:oo();break;case 226:Ys();break;case 216:Vs();break;case 96:Us();break;case 244:qs();break;case 185:Ws();break;default:Bs()}Vl.endNonterminal("KindTest",Pl)}function Hs(){switch(Hl){case 120:Is();break;case 121:ro();break;case 82:Ks();break;case 227:uo();break;case 226:Zs();break;case 216:$s();break;case 96:zs();break;case 244:Rs();break;case 185:Xs();break;default:js()}}function Bs(){Vl.startNonterminal("AnyKindTest",Pl),Sl(191),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("AnyKindTest",Pl)}function js(){xl(191),kl(22),xl(34),kl(23),xl(37)}function Fs(){Vl.startNonterminal("DocumentTest",Pl),Sl(120),kl(22),Sl(34),kl(144);if(Hl!=37)switch(Hl){case 121:Nl(),no();break;default:Nl(),oo()}kl(23),Sl(37),Vl.endNonterminal("DocumentTest",Pl)}function Is(){xl(120),kl(22),xl(34),kl(144);if(Hl!=37)switch(Hl){case 121:ro();break;default:uo()}kl(23),xl(37)}function qs(){Vl.startNonterminal("TextTest",Pl),Sl(244),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("TextTest",Pl)}function Rs(){xl(244),kl(22),xl(34),kl(23),xl(37)}function Us(){Vl.startNonterminal("CommentTest",Pl),Sl(96),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("CommentTest",Pl)}function zs(){xl(96),kl(22),xl(34),kl(23),xl(37)}function Ws(){Vl.startNonterminal("NamespaceNodeTest",Pl),Sl(185),kl(22),Sl(34),kl(23),Sl(37),Vl.endNonterminal("NamespaceNodeTest",Pl)}function Xs(){xl(185),kl(22),xl(34),kl(23),xl(37)}function Vs(){Vl.startNonterminal("PITest",Pl),Sl(216),kl(22),Sl(34),kl(253);if(Hl!=37)switch(Hl){case 11:Sl(11);break;default:Nl(),Ia()}kl(23),Sl(37),Vl.endNonterminal("PITest",Pl)}function $s(){xl(216),kl(22),xl(34),kl(253);if(Hl!=37)switch(Hl){case 11:xl(11);break;default:qa()}kl(23),xl(37)}function Js(){Vl.startNonterminal("AttributeTest",Pl),Sl(82),kl(22),Sl(34),kl(261),Hl!=37&&(Nl(),Qs(),kl(101),Hl==41&&(Sl(41),kl(255),Nl(),go())),kl(23),Sl(37),Vl.endNonterminal("AttributeTest",Pl)}function Ks(){xl(82),kl(22),xl(34),kl(261),Hl!=37&&(Gs(),kl(101),Hl==41&&(xl(41),kl(255),yo())),kl(23),xl(37)}function Qs(){Vl.startNonterminal("AttribNameOrWildcard",Pl);switch(Hl){case 38:Sl(38);break;default:lo()}Vl.endNonterminal("AttribNameOrWildcard",Pl)}function Gs(){switch(Hl){case 38:xl(38);break;default:co()}}function Ys(){Vl.startNonterminal("SchemaAttributeTest",Pl),Sl(226),kl(22),Sl(34),kl(255),Nl(),eo(),kl(23),Sl(37),Vl.endNonterminal("SchemaAttributeTest",Pl)}function Zs(){xl(226),kl(22),xl(34),kl(255),to(),kl(23),xl(37)}function eo(){Vl.startNonterminal("AttributeDeclaration",Pl),lo(),Vl.endNonterminal("AttributeDeclaration",Pl)}function to(){co()}function no(){Vl.startNonterminal("ElementTest",Pl),Sl(121),kl(22),Sl(34),kl(261),Hl!=37&&(Nl(),io(),kl(101),Hl==41&&(Sl(41),kl(255),Nl(),go(),kl(102),Hl==64&&Sl(64))),kl(23),Sl(37),Vl.endNonterminal("ElementTest",Pl)}function ro(){xl(121),kl(22),xl(34),kl(261),Hl!=37&&(so(),kl(101),Hl==41&&(xl(41),kl(255),yo(),kl(102),Hl==64&&xl(64))),kl(23),xl(37)}function io(){Vl.startNonterminal("ElementNameOrWildcard",Pl);switch(Hl){case 38:Sl(38);break;default:ho()}Vl.endNonterminal("ElementNameOrWildcard",Pl)}function so(){switch(Hl){case 38:xl(38);break;default:po()}}function oo(){Vl.startNonterminal("SchemaElementTest",Pl),Sl(227),kl(22),Sl(34),kl(255),Nl(),ao(),kl(23),Sl(37),Vl.endNonterminal("SchemaElementTest",Pl)}function uo(){xl(227),kl(22),xl(34),kl(255),fo(),kl(23),xl(37)}function ao(){Vl.startNonterminal("ElementDeclaration",Pl),ho(),Vl.endNonterminal("ElementDeclaration",Pl)}function fo(){po()}function lo(){Vl.startNonterminal("AttributeName",Pl),Ha(),Vl.endNonterminal("AttributeName",Pl)}function co(){Ba()}function ho(){Vl.startNonterminal("ElementName",Pl),Ha(),Vl.endNonterminal("ElementName",Pl)}function po(){Ba()}function vo(){Vl.startNonterminal("SimpleTypeName",Pl),go(),Vl.endNonterminal("SimpleTypeName",Pl)}function mo(){yo()}function go(){Vl.startNonterminal("TypeName",Pl),Ha(),Vl.endNonterminal("TypeName",Pl)}function yo(){Ba()}function bo(){Vl.startNonterminal("FunctionTest",Pl);for(;;){kl(97);if(Hl!=32)break;Nl(),B()}switch(Hl){case 145:Ll(22);break;default:_l=Hl}_l=Kl(5,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{So(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(5,Pl,_l)}switch(_l){case-1:Nl(),Eo();break;default:Nl(),xo()}Vl.endNonterminal("FunctionTest",Pl)}function wo(){for(;;){kl(97);if(Hl!=32)break;j()}switch(Hl){case 145:Ll(22);break;default:_l=Hl}_l=Kl(5,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{So(),Jl(5,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(5,t,-2)}}switch(_l){case-1:So();break;case-3:break;default:To()}}function Eo(){Vl.startNonterminal("AnyFunctionTest",Pl),Sl(145),kl(22),Sl(34),kl(24),Sl(38),kl(23),Sl(37),Vl.endNonterminal("AnyFunctionTest",Pl)}function So(){xl(145),kl(22),xl(34),kl(24),xl(38),kl(23),xl(37)}function xo(){Vl.startNonterminal("TypedFunctionTest",Pl),Sl(145),kl(22),Sl(34),kl(263);if(Hl!=37){Nl(),ms();for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(260),Nl(),ms()}}Sl(37),kl(30),Sl(79),kl(260),Nl(),ms(),Vl.endNonterminal("TypedFunctionTest",Pl)}function To(){xl(145),kl(22),xl(34),kl(263);if(Hl!=37){gs();for(;;){kl(101);if(Hl!=41)break;xl(41),kl(260),gs()}}xl(37),kl(30),xl(79),kl(260),gs()}function No(){Vl.startNonterminal("ParenthesizedItemType",Pl),Sl(34),kl(260),Nl(),ws(),kl(23),Sl(37),Vl.endNonterminal("ParenthesizedItemType",Pl)}function Co(){xl(34),kl(260),Es(),kl(23),xl(37)}function ko(){Vl.startNonterminal("RevalidationDecl",Pl),Sl(108),kl(72),Sl(222),kl(152);switch(Hl){case 240:Sl(240);break;case 171:Sl(171);break;default:Sl(233)}Vl.endNonterminal("RevalidationDecl",Pl)}function Lo(){Vl.startNonterminal("InsertExprTargetChoice",Pl);switch(Hl){case 70:Sl(70);break;case 84:Sl(84);break;default:if(Hl==79){Sl(79),kl(119);switch(Hl){case 134:Sl(134);break;default:Sl(170)}}kl(54),Sl(163)}Vl.endNonterminal("InsertExprTargetChoice",Pl)}function Ao(){switch(Hl){case 70:xl(70);break;case 84:xl(84);break;default:if(Hl==79){xl(79),kl(119);switch(Hl){case 134:xl(134);break;default:xl(170)}}kl(54),xl(163)}}function Oo(){Vl.startNonterminal("InsertExpr",Pl),Sl(159),kl(129);switch(Hl){case 191:Sl(191);break;default:Sl(192)}kl(267),Nl(),Fo(),Nl(),Lo(),kl(267),Nl(),qo(),Vl.endNonterminal("InsertExpr",Pl)}function Mo(){xl(159),kl(129);switch(Hl){case 191:xl(191);break;default:xl(192)}kl(267),Io(),Ao(),kl(267),Ro()}function _o(){Vl.startNonterminal("DeleteExpr",Pl),Sl(110),kl(129);switch(Hl){case 191:Sl(191);break;default:Sl(192)}kl(267),Nl(),qo(),Vl.endNonterminal("DeleteExpr",Pl)}function Do(){xl(110),kl(129);switch(Hl){case 191:xl(191);break;default:xl(192)}kl(267),Ro()}function Po(){Vl.startNonterminal("ReplaceExpr",Pl),Sl(219),kl(130),Hl==261&&(Sl(261),kl(64),Sl(196)),kl(62),Sl(191),kl(267),Nl(),qo(),Sl(270),kl(267),Nl(),_f(),Vl.endNonterminal("ReplaceExpr",Pl)}function Ho(){xl(219),kl(130),Hl==261&&(xl(261),kl(64),xl(196)),kl(62),xl(191),kl(267),Ro(),xl(270),kl(267),Df()}function Bo(){Vl.startNonterminal("RenameExpr",Pl),Sl(218),kl(62),Sl(191),kl(267),Nl(),qo(),Sl(79),kl(267),Nl(),Uo(),Vl.endNonterminal("RenameExpr",Pl)}function jo(){xl(218),kl(62),xl(191),kl(267),Ro(),xl(79),kl(267),zo()}function Fo(){Vl.startNonterminal("SourceExpr",Pl),_f(),Vl.endNonterminal("SourceExpr",Pl)}function Io(){Df()}function qo(){Vl.startNonterminal("TargetExpr",Pl),_f(),Vl.endNonterminal("TargetExpr",Pl)}function Ro(){Df()}function Uo(){Vl.startNonterminal("NewNameExpr",Pl),_f(),Vl.endNonterminal("NewNameExpr",Pl)}function zo(){Df()}function Wo(){Vl.startNonterminal("TransformExpr",Pl),Sl(103),kl(21),Nl(),Vo();for(;;){if(Hl!=41)break;Sl(41),kl(21),Nl(),Vo()}Sl(181),kl(267),Nl(),_f(),Sl(220),kl(267),Nl(),_f(),Vl.endNonterminal("TransformExpr",Pl)}function Xo(){xl(103),kl(21),$o();for(;;){if(Hl!=41)break;xl(41),kl(21),$o()}xl(181),kl(267),Df(),xl(220),kl(267),Df()}function Vo(){Vl.startNonterminal("TransformSpec",Pl),Sl(31),kl(255),Nl(),hi(),kl(27),Sl(52),kl(267),Nl(),_f(),Vl.endNonterminal("TransformSpec",Pl)}function $o(){xl(31),kl(255),pi(),kl(27),xl(52),kl(267),Df()}function Jo(){Vl.startNonterminal("FTSelection",Pl),Yo();for(;;){kl(212);switch(Hl){case 81:Ll(151);break;default:_l=Hl}if(_l!=115&&_l!=117&&_l!=127&&_l!=202&&_l!=223&&_l!=269&&_l!=64593&&_l!=121425)break;Nl(),Su()}Vl.endNonterminal("FTSelection",Pl)}function Ko(){Zo();for(;;){kl(212);switch(Hl){case 81:Ll(151);break;default:_l=Hl}if(_l!=115&&_l!=117&&_l!=127&&_l!=202&&_l!=223&&_l!=269&&_l!=64593&&_l!=121425)break;xu()}}function Qo(){Vl.startNonterminal("FTWeight",Pl),Sl(264),kl(87),Sl(276),kl(267),Nl(),G(),Sl(282),Vl.endNonterminal("FTWeight",Pl)}function Go(){xl(264),kl(87),xl(276),kl(267),Y(),xl(282)}function Yo(){Vl.startNonterminal("FTOr",Pl),eu();for(;;){if(Hl!=144)break;Sl(144),kl(162),Nl(),eu()}Vl.endNonterminal("FTOr",Pl)}function Zo(){tu();for(;;){if(Hl!=144)break;xl(144),kl(162),tu()}}function eu(){Vl.startNonterminal("FTAnd",Pl),nu();for(;;){if(Hl!=142)break;Sl(142),kl(162),Nl(),nu()}Vl.endNonterminal("FTAnd",Pl)}function tu(){ru();for(;;){if(Hl!=142)break;xl(142),kl(162),ru()}}function nu(){Vl.startNonterminal("FTMildNot",Pl),iu();for(;;){kl(213);if(Hl!=193)break;Sl(193),kl(53),Sl(154),kl(162),Nl(),iu()}Vl.endNonterminal("FTMildNot",Pl)}function ru(){su();for(;;){kl(213);if(Hl!=193)break;xl(193),kl(53),xl(154),kl(162),su()}}function iu(){Vl.startNonterminal("FTUnaryNot",Pl),Hl==143&&Sl(143),kl(155),Nl(),ou(),Vl.endNonterminal("FTUnaryNot",Pl)}function su(){Hl==143&&xl(143),kl(155),uu()}function ou(){Vl.startNonterminal("FTPrimaryWithOptions",Pl),au(),kl(215),Hl==259&&(Nl(),Fu()),Hl==264&&(Nl(),Qo()),Vl.endNonterminal("FTPrimaryWithOptions",Pl)}function uu(){fu(),kl(215),Hl==259&&Iu(),Hl==264&&Go()}function au(){Vl.startNonterminal("FTPrimary",Pl);switch(Hl){case 34:Sl(34),kl(162),Nl(),Jo(),Sl(37);break;case 35:du();break;default:lu(),kl(216),Hl==195&&(Nl(),yu())}Vl.endNonterminal("FTPrimary",Pl)}function fu(){switch(Hl){case 34:xl(34),kl(162),Ko(),xl(37);break;case 35:vu();break;default:cu(),kl(216),Hl==195&&bu()}}function lu(){Vl.startNonterminal("FTWords",Pl),hu(),kl(222);if(Hl==71||Hl==76||Hl==210)Nl(),mu();Vl.endNonterminal("FTWords",Pl)}function cu(){pu(),kl(222),(Hl==71||Hl==76||Hl==210)&&gu()}function hu(){Vl.startNonterminal("FTWordsValue",Pl);switch(Hl){case 11:Sl(11);break;default:Sl(276),kl(267),Nl(),G(),Sl(282)}Vl.endNonterminal("FTWordsValue",Pl)}function pu(){switch(Hl){case 11:xl(11);break;default:xl(276),kl(267),Y(),xl(282)}}function du(){Vl.startNonterminal("FTExtensionSelection",Pl);for(;;){Nl(),Cr(),kl(100);if(Hl!=35)break}Sl(276),kl(166),Hl!=282&&(Nl(),Jo()),Sl(282),Vl.endNonterminal("FTExtensionSelection",Pl)}function vu(){for(;;){kr(),kl(100);if(Hl!=35)break}xl(276),kl(166),Hl!=282&&Ko(),xl(282)}function mu(){Vl.startNonterminal("FTAnyallOption",Pl);switch(Hl){case 76:Sl(76),kl(219),Hl==272&&Sl(272);break;case 71:Sl(71),kl(220),Hl==273&&Sl(273);break;default:Sl(210)}Vl.endNonterminal("FTAnyallOption",Pl)}function gu(){switch(Hl){case 76:xl(76),kl(219),Hl==272&&xl(272);break;case 71:xl(71),kl(220),Hl==273&&xl(273);break;default:xl(210)}}function yu(){Vl.startNonterminal("FTTimes",Pl),Sl(195),kl(149),Nl(),wu(),Sl(247),Vl.endNonterminal("FTTimes",Pl)}function bu(){xl(195),kl(149),Eu(),xl(247)}function wu(){Vl.startNonterminal("FTRange",Pl);switch(Hl){case 130:Sl(130),kl(267),Nl(),Vn();break;case 81:Sl(81),kl(125);switch(Hl){case 173:Sl(173),kl(267),Nl(),Vn();break;default:Sl(183),kl(267),Nl(),Vn()}break;default:Sl(140),kl(267),Nl(),Vn(),Sl(248),kl(267),Nl(),Vn()}Vl.endNonterminal("FTRange",Pl)}function Eu(){switch(Hl){case 130:xl(130),kl(267),$n();break;case 81:xl(81),kl(125);switch(Hl){case 173:xl(173),kl(267),$n();break;default:xl(183),kl(267),$n()}break;default:xl(140),kl(267),$n(),xl(248),kl(267),$n()}}function Su(){Vl.startNonterminal("FTPosFilter",Pl);switch(Hl){case 202:Tu();break;case 269:Cu();break;case 117:Lu();break;case 115:case 223:_u();break;default:Bu()}Vl.endNonterminal("FTPosFilter",Pl)}function xu(){switch(Hl){case 202:Nu();break;case 269:ku();break;case 117:Au();break;case 115:case 223:Du();break;default:ju()}}function Tu(){Vl.startNonterminal("FTOrder",Pl),Sl(202),Vl.endNonterminal("FTOrder",Pl)}function Nu(){xl(202)}function Cu(){Vl.startNonterminal("FTWindow",Pl),Sl(269),kl(267),Nl(),Vn(),Nl(),Ou(),Vl.endNonterminal("FTWindow",Pl)}function ku(){xl(269),kl(267),$n(),Mu()}function Lu(){Vl.startNonterminal("FTDistance",Pl),Sl(117),kl(149),Nl(),wu(),Nl(),Ou(),Vl.endNonterminal("FTDistance",Pl)}function Au(){xl(117),kl(149),Eu(),Mu()}function Ou(){Vl.startNonterminal("FTUnit",Pl);switch(Hl){case 273:Sl(273);break;case 232:Sl(232);break;default:Sl(205)}Vl.endNonterminal("FTUnit",Pl)}function Mu(){switch(Hl){case 273:xl(273);break;case 232:xl(232);break;default:xl(205)}}function _u(){Vl.startNonterminal("FTScope",Pl);switch(Hl){case 223:Sl(223);break;default:Sl(115)}kl(132),Nl(),Pu(),Vl.endNonterminal("FTScope",Pl)}function Du(){switch(Hl){case 223:xl(223);break;default:xl(115)}kl(132),Hu()}function Pu(){Vl.startNonterminal("FTBigUnit",Pl);switch(Hl){case 231:Sl(231);break;default:Sl(204)}Vl.endNonterminal("FTBigUnit",Pl)}function Hu(){switch(Hl){case 231:xl(231);break;default:xl(204)}}function Bu(){Vl.startNonterminal("FTContent",Pl);switch(Hl){case 81:Sl(81),kl(117);switch(Hl){case 237:Sl(237);break;default:Sl(126)}break;default:Sl(127),kl(42),Sl(100)}Vl.endNonterminal("FTContent",Pl)}function ju(){switch(Hl){case 81:xl(81),kl(117);switch(Hl){case 237:xl(237);break;default:xl(126)}break;default:xl(127),kl(42),xl(100)}}function Fu(){Vl.startNonterminal("FTMatchOptions",Pl);for(;;){Sl(259),kl(182),Nl(),qu(),kl(215);if(Hl!=259)break}Vl.endNonterminal("FTMatchOptions",Pl)}function Iu(){for(;;){xl(259),kl(182),Ru(),kl(215);if(Hl!=259)break}}function qu(){Vl.startNonterminal("FTMatchOption",Pl);switch(Hl){case 188:Ll(161);break;default:_l=Hl}switch(_l){case 169:oa();break;case 268:case 137404:aa();break;case 246:case 126140:Ju();break;case 238:case 122044:Vu();break;case 114:Wu();break;case 239:case 122556:ea();break;case 199:la();break;default:Uu()}Vl.endNonterminal("FTMatchOption",Pl)}function Ru(){switch(Hl){case 188:Ll(161);break;default:_l=Hl}switch(_l){case 169:ua();break;case 268:case 137404:fa();break;case 246:case 126140:Ku();break;case 238:case 122044:$u();break;case 114:Xu();break;case 239:case 122556:ta();break;case 199:ca();break;default:zu()}}function Uu(){Vl.startNonterminal("FTCaseOption",Pl);switch(Hl){case 88:Sl(88),kl(124);switch(Hl){case 158:Sl(158);break;default:Sl(230)}break;case 177:Sl(177);break;default:Sl(258)}Vl.endNonterminal("FTCaseOption",Pl)}function zu(){switch(Hl){case 88:xl(88),kl(124);switch(Hl){case 158:xl(158);break;default:xl(230)}break;case 177:xl(177);break;default:xl(258)}}function Wu(){Vl.startNonterminal("FTDiacriticsOption",Pl),Sl(114),kl(124);switch(Hl){case 158:Sl(158);break;default:Sl(230)}Vl.endNonterminal("FTDiacriticsOption",Pl)}function Xu(){xl(114),kl(124);switch(Hl){case 158:xl(158);break;default:xl(230)}}function Vu(){Vl.startNonterminal("FTStemOption",Pl);switch(Hl){case 238:Sl(238);break;default:Sl(188),kl(74),Sl(238)}Vl.endNonterminal("FTStemOption",Pl)}function $u(){switch(Hl){case 238:xl(238);break;default:xl(188),kl(74),xl(238)}}function Ju(){Vl.startNonterminal("FTThesaurusOption",Pl);switch(Hl){case 246:Sl(246),kl(142);switch(Hl){case 81:Nl(),Qu();break;case 109:Sl(109);break;default:Sl(34),kl(112);switch(Hl){case 81:Nl(),Qu();break;default:Sl(109)}for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(31),Nl(),Qu()}Sl(37)}break;default:Sl(188),kl(78),Sl(246)}Vl.endNonterminal("FTThesaurusOption",Pl)}function Ku(){switch(Hl){case 246:xl(246),kl(142);switch(Hl){case 81:Gu();break;case 109:xl(109);break;default:xl(34),kl(112);switch(Hl){case 81:Gu();break;default:xl(109)}for(;;){kl(101);if(Hl!=41)break;xl(41),kl(31),Gu()}xl(37)}break;default:xl(188),kl(78),xl(246)}}function Qu(){Vl.startNonterminal("FTThesaurusID",Pl),Sl(81),kl(15),Sl(7),kl(221),Hl==217&&(Sl(217),kl(17),Sl(11)),kl(217);switch(Hl){case 81:Ll(165);break;default:_l=Hl}if(_l==130||_l==140||_l==88657||_l==93777)Nl(),Yu(),kl(58),Sl(175);Vl.endNonterminal("FTThesaurusID",Pl)}function Gu(){xl(81),kl(15),xl(7),kl(221),Hl==217&&(xl(217),kl(17),xl(11)),kl(217);switch(Hl){case 81:Ll(165);break;default:_l=Hl}if(_l==130||_l==140||_l==88657||_l==93777)Zu(),kl(58),xl(175)}function Yu(){Vl.startNonterminal("FTLiteralRange",Pl);switch(Hl){case 130:Sl(130),kl(16),Sl(8);break;case 81:Sl(81),kl(125);switch(Hl){case 173:Sl(173),kl(16),Sl(8);break;default:Sl(183),kl(16),Sl(8)}break;default:Sl(140),kl(16),Sl(8),kl(79),Sl(248),kl(16),Sl(8)}Vl.endNonterminal("FTLiteralRange",Pl)}function Zu(){switch(Hl){case 130:xl(130),kl(16),xl(8);break;case 81:xl(81),kl(125);switch(Hl){case 173:xl(173),kl(16),xl(8);break;default:xl(183),kl(16),xl(8)}break;default:xl(140),kl(16),xl(8),kl(79),xl(248),kl(16),xl(8)}}function ea(){Vl.startNonterminal("FTStopWordOption",Pl);switch(Hl){case 239:Sl(239),kl(86),Sl(273),kl(142);switch(Hl){case 109:Sl(109);for(;;){kl(218);if(Hl!=131&&Hl!=254)break;Nl(),ia()}break;default:Nl(),na();for(;;){kl(218);if(Hl!=131&&Hl!=254)break;Nl(),ia()}}break;default:Sl(188),kl(75),Sl(239),kl(86),Sl(273)}Vl.endNonterminal("FTStopWordOption",Pl)}function ta(){switch(Hl){case 239:xl(239),kl(86),xl(273),kl(142);switch(Hl){case 109:xl(109);for(;;){kl(218);if(Hl!=131&&Hl!=254)break;sa()}break;default:ra();for(;;){kl(218);if(Hl!=131&&Hl!=254)break;sa()}}break;default:xl(188),kl(75),xl(239),kl(86),xl(273)}}function na(){Vl.startNonterminal("FTStopWords",Pl);switch(Hl){case 81:Sl(81),kl(15),Sl(7);break;default:Sl(34),kl(17),Sl(11);for(;;){kl(101);if(Hl!=41)break;Sl(41),kl(17),Sl(11)}Sl(37)}Vl.endNonterminal("FTStopWords",Pl)}function ra(){switch(Hl){case 81:xl(81),kl(15),xl(7);break;default:xl(34),kl(17),xl(11);for(;;){kl(101);if(Hl!=41)break;xl(41),kl(17),xl(11)}xl(37)}}function ia(){Vl.startNonterminal("FTStopWordsInclExcl",Pl);switch(Hl){case 254:Sl(254);break;default:Sl(131)}kl(99),Nl(),na(),Vl.endNonterminal("FTStopWordsInclExcl",Pl)}function sa(){switch(Hl){case 254:xl(254);break;default:xl(131)}kl(99),ra()}function oa(){Vl.startNonterminal("FTLanguageOption",Pl),Sl(169),kl(17),Sl(11),Vl.endNonterminal("FTLanguageOption",Pl)}function ua(){xl(169),kl(17),xl(11)}function aa(){Vl.startNonterminal("FTWildCardOption",Pl);switch(Hl){case 268:Sl(268);break;default:Sl(188),kl(84),Sl(268)}Vl.endNonterminal("FTWildCardOption",Pl)}function fa(){switch(Hl){case 268:xl(268);break;default:xl(188),kl(84),xl(268)}}function la(){Vl.startNonterminal("FTExtensionOption",Pl),Sl(199),kl(255),Nl(),Ha(),kl(17),Sl(11),Vl.endNonterminal("FTExtensionOption",Pl)}function ca(){xl(199),kl(255),Ba(),kl(17),xl(11)}function ha(){Vl.startNonterminal("FTIgnoreOption",Pl),Sl(271),kl(42),Sl(100),kl(267),Nl(),Qn(),Vl.endNonterminal("FTIgnoreOption",Pl)}function pa(){xl(271),kl(42),xl(100),kl(267),Gn()}function da(){Vl.startNonterminal("CollectionDecl",Pl),Sl(95),kl(255),Nl(),Ha(),kl(107),Hl==79&&(Nl(),va()),Vl.endNonterminal("CollectionDecl",Pl)}function va(){Vl.startNonterminal("CollectionTypeDecl",Pl),Sl(79),kl(178),Nl(),Ps(),kl(156),Hl!=53&&(Nl(),ys()),Vl.endNonterminal("CollectionTypeDecl",Pl)}function ma(){Vl.startNonterminal("IndexName",Pl),Ha(),Vl.endNonterminal("IndexName",Pl)}function ga(){Vl.startNonterminal("IndexDomainExpr",Pl),Lr(),Vl.endNonterminal("IndexDomainExpr",Pl)}function ya(){Vl.startNonterminal("IndexKeySpec",Pl),ba(),Hl==79&&(Nl(),wa()),kl(146),Hl==94&&(Nl(),Sa()),Vl.endNonterminal("IndexKeySpec",Pl)}function ba(){Vl.startNonterminal("IndexKeyExpr",Pl),Lr(),Vl.endNonterminal("IndexKeyExpr",Pl)}function wa(){Vl.startNonterminal("IndexKeyTypeDecl",Pl),Sl(79),kl(255),Nl(),Ea(),kl(169);if(Hl==39||Hl==40||Hl==64)Nl(),ys();Vl.endNonterminal("IndexKeyTypeDecl",Pl)}function Ea(){Vl.startNonterminal("AtomicType",Pl),Ha(),Vl.endNonterminal("AtomicType",Pl)}function Sa(){Vl.startNonterminal("IndexKeyCollation",Pl),Sl(94),kl(15),Sl(7),Vl.endNonterminal("IndexKeyCollation",Pl)}function xa(){Vl.startNonterminal("IndexDecl",Pl),Sl(155),kl(255),Nl(),ma(),kl(65),Sl(197),kl(63),Sl(192),kl(266),Nl(),ga(),Sl(87),kl(266),Nl(),ya();for(;;){kl(103);if(Hl!=41)break;Sl(41),kl(266),Nl(),ya()}Vl.endNonterminal("IndexDecl",Pl)}function Ta(){Vl.startNonterminal("ICDecl",Pl),Sl(161),kl(40),Sl(97),kl(255),Nl(),Ha(),kl(120);switch(Hl){case 197:Nl(),Na();break;default:Nl(),Aa()}Vl.endNonterminal("ICDecl",Pl)}function Na(){Vl.startNonterminal("ICCollection",Pl),Sl(197),kl(39),Sl(95),kl(255),Nl(),Ha(),kl(140);switch(Hl){case 31:Nl(),Ca();break;case 191:Nl(),ka();break;default:Nl(),La()}Vl.endNonterminal("ICCollection",Pl)}function Ca(){Vl.startNonterminal("ICCollSequence",Pl),li(),kl(37),Sl(92),kl(267),Nl(),_f(),Vl.endNonterminal("ICCollSequence",Pl)}function ka(){Vl.startNonterminal("ICCollSequenceUnique",Pl),Sl(191),kl(21),Nl(),li(),kl(37),Sl(92),kl(80),Sl(255),kl(57),Sl(168),kl(266),Nl(),Lr(),Vl.endNonterminal("ICCollSequenceUnique",Pl)}function La(){Vl.startNonterminal("ICCollNode",Pl),Sl(138),kl(62),Sl(191),kl(21),Nl(),li(),kl(37),Sl(92),kl(267),Nl(),_f(),Vl.endNonterminal("ICCollNode",Pl)}function Aa(){Vl.startNonterminal("ICForeignKey",Pl),Sl(139),kl(57),Sl(168),kl(51),Nl(),Oa(),Nl(),Ma(),Vl.endNonterminal("ICForeignKey",Pl)}function Oa(){Vl.startNonterminal("ICForeignKeySource",Pl),Sl(140),kl(39),Nl(),_a(),Vl.endNonterminal("ICForeignKeySource",Pl)}function Ma(){Vl.startNonterminal("ICForeignKeyTarget",Pl),Sl(248),kl(39),Nl(),_a(),Vl.endNonterminal("ICForeignKeyTarget",Pl)}function _a(){Vl.startNonterminal("ICForeignKeyValues",Pl),Sl(95),kl(255),Nl(),Ha(),kl(62),Sl(191),kl(21),Nl(),li(),kl(57),Sl(168),kl(266),Nl(),Lr(),Vl.endNonterminal("ICForeignKeyValues",Pl)}function Da(){xl(36);for(;;){Al(89);if(Hl==50)break;switch(Hl){case 24:xl(24);break;default:Da()}}xl(50)}function Pa(){switch(Hl){case 22:xl(22);break;default:Da()}}function Ha(){Vl.startNonterminal("EQName",Pl),Al(250);switch(Hl){case 82:Sl(82);break;case 96:Sl(96);break;case 120:Sl(120);break;case 121:Sl(121);break;case 124:Sl(124);break;case 145:Sl(145);break;case 152:Sl(152);break;case 165:Sl(165);break;case 185:Sl(185);break;case 191:Sl(191);break;case 216:Sl(216);break;case 226:Sl(226);break;case 227:Sl(227);break;case 243:Sl(243);break;case 244:Sl(244);break;case 253:Sl(253);break;case 78:Sl(78);break;case 167:Sl(167);break;case 242:Sl(242);break;default:ja()}Vl.endNonterminal("EQName",Pl)}function Ba(){Al(250);switch(Hl){case 82:xl(82);break;case 96:xl(96);break;case 120:xl(120);break;case 121:xl(121);break;case 124:xl(124);break;case 145:xl(145);break;case 152:xl(152);break;case 165:xl(165);break;case 185:xl(185);break;case 191:xl(191);break;case 216:xl(216);break;case 226:xl(226);break;case 227:xl(227);break;case 243:xl(243);break;case 244:xl(244);break;case 253:xl(253);break;case 78:xl(78);break;case 167:xl(167);break;case 242:xl(242);break;default:Fa()}}function ja(){Vl.startNonterminal("FunctionName",Pl);switch(Hl){case 6:Sl(6);break;case 70:Sl(70);break;case 73:Sl(73);break;case 74:Sl(74);break;case 75:Sl(75);break;case 79:Sl(79);break;case 80:Sl(80);break;case 84:Sl(84);break;case 88:Sl(88);break;case 89:Sl(89);break;case 90:Sl(90);break;case 93:Sl(93);break;case 94:Sl(94);break;case 103:Sl(103);break;case 105:Sl(105);break;case 108:Sl(108);break;case 109:Sl(109);break;case 110:Sl(110);break;case 111:Sl(111);break;case 112:Sl(112);break;case 113:Sl(113);break;case 118:Sl(118);break;case 119:Sl(119);break;case 122:Sl(122);break;case 123:Sl(123);break;case 126:Sl(126);break;case 128:Sl(128);break;case 129:Sl(129);break;case 131:Sl(131);break;case 134:Sl(134);break;case 135:Sl(135);break;case 136:Sl(136);break;case 137:Sl(137);break;case 146:Sl(146);break;case 148:Sl(148);break;case 150:Sl(150);break;case 151:Sl(151);break;case 153:Sl(153);break;case 159:Sl(159);break;case 160:Sl(160);break;case 162:Sl(162);break;case 163:Sl(163);break;case 164:Sl(164);break;case 170:Sl(170);break;case 172:Sl(172);break;case 174:Sl(174);break;case 178:Sl(178);break;case 180:Sl(180);break;case 181:Sl(181);break;case 182:Sl(182);break;case 184:Sl(184);break;case 186:Sl(186);break;case 198:Sl(198);break;case 200:Sl(200);break;case 201:Sl(201);break;case 202:Sl(202);break;case 206:Sl(206);break;case 212:Sl(212);break;case 213:Sl(213);break;case 218:Sl(218);break;case 219:Sl(219);break;case 220:Sl(220);break;case 224:Sl(224);break;case 229:Sl(229);break;case 235:Sl(235);break;case 236:Sl(236);break;case 237:Sl(237);break;case 248:Sl(248);break;case 249:Sl(249);break;case 250:Sl(250);break;case 254:Sl(254);break;case 256:Sl(256);break;case 260:Sl(260);break;case 266:Sl(266);break;case 270:Sl(270);break;case 274:Sl(274);break;case 72:Sl(72);break;case 81:Sl(81);break;case 83:Sl(83);break;case 85:Sl(85);break;case 86:Sl(86);break;case 91:Sl(91);break;case 98:Sl(98);break;case 101:Sl(101);break;case 102:Sl(102);break;case 104:Sl(104);break;case 106:Sl(106);break;case 125:Sl(125);break;case 132:Sl(132);break;case 133:Sl(133);break;case 141:Sl(141);break;case 154:Sl(154);break;case 155:Sl(155);break;case 161:Sl(161);break;case 171:Sl(171);break;case 192:Sl(192);break;case 199:Sl(199);break;case 203:Sl(203);break;case 222:Sl(222);break;case 225:Sl(225);break;case 228:Sl(228);break;case 234:Sl(234);break;case 240:Sl(240);break;case 251:Sl(251);break;case 252:Sl(252);break;case 257:Sl(257);break;case 261:Sl(261);break;case 262:Sl(262);break;case 263:Sl(263);break;case 267:Sl(267);break;case 97:Sl(97);break;case 176:Sl(176);break;case 221:Sl(221);break;case 77:Sl(77);break;case 166:Sl(166);break;default:Sl(194)}Vl.endNonterminal("FunctionName",Pl)}function Fa(){switch(Hl){case 6:xl(6);break;case 70:xl(70);break;case 73:xl(73);break;case 74:xl(74);break;case 75:xl(75);break;case 79:xl(79);break;case 80:xl(80);break;case 84:xl(84);break;case 88:xl(88);break;case 89:xl(89);break;case 90:xl(90);break;case 93:xl(93);break;case 94:xl(94);break;case 103:xl(103);break;case 105:xl(105);break;case 108:xl(108);break;case 109:xl(109);break;case 110:xl(110);break;case 111:xl(111);break;case 112:xl(112);break;case 113:xl(113);break;case 118:xl(118);break;case 119:xl(119);break;case 122:xl(122);break;case 123:xl(123);break;case 126:xl(126);break;case 128:xl(128);break;case 129:xl(129);break;case 131:xl(131);break;case 134:xl(134);break;case 135:xl(135);break;case 136:xl(136);break;case 137:xl(137);break;case 146:xl(146);break;case 148:xl(148);break;case 150:xl(150);break;case 151:xl(151);break;case 153:xl(153);break;case 159:xl(159);break;case 160:xl(160);break;case 162:xl(162);break;case 163:xl(163);break;case 164:xl(164);break;case 170:xl(170);break;case 172:xl(172);break;case 174:xl(174);break;case 178:xl(178);break;case 180:xl(180);break;case 181:xl(181);break;case 182:xl(182);break;case 184:xl(184);break;case 186:xl(186);break;case 198:xl(198);break;case 200:xl(200);break;case 201:xl(201);break;case 202:xl(202);break;case 206:xl(206);break;case 212:xl(212);break;case 213:xl(213);break;case 218:xl(218);break;case 219:xl(219);break;case 220:xl(220);break;case 224:xl(224);break;case 229:xl(229);break;case 235:xl(235);break;case 236:xl(236);break;case 237:xl(237);break;case 248:xl(248);break;case 249:xl(249);break;case 250:xl(250);break;case 254:xl(254);break;case 256:xl(256);break;case 260:xl(260);break;case 266:xl(266);break;case 270:xl(270);break;case 274:xl(274);break;case 72:xl(72);break;case 81:xl(81);break;case 83:xl(83);break;case 85:xl(85);break;case 86:xl(86);break;case 91:xl(91);break;case 98:xl(98);break;case 101:xl(101);break;case 102:xl(102);break;case 104:xl(104);break;case 106:xl(106);break;case 125:xl(125);break;case 132:xl(132);break;case 133:xl(133);break;case 141:xl(141);break;case 154:xl(154);break;case 155:xl(155);break;case 161:xl(161);break;case 171:xl(171);break;case 192:xl(192);break;case 199:xl(199);break;case 203:xl(203);break;case 222:xl(222);break;case 225:xl(225);break;case 228:xl(228);break;case 234:xl(234);break;case 240:xl(240);break;case 251:xl(251);break;case 252:xl(252);break;case 257:xl(257);break;case 261:xl(261);break;case 262:xl(262);break;case 263:xl(263);break;case 267:xl(267);break;case 97:xl(97);break;case 176:xl(176);break;case 221:xl(221);break;case 77:xl(77);break;case 166:xl(166);break;default:xl(194)}}function Ia(){Vl.startNonterminal("NCName",Pl);switch(Hl){case 19:Sl(19);break;case 70:Sl(70);break;case 75:Sl(75);break;case 79:Sl(79);break;case 80:Sl(80);break;case 84:Sl(84);break;case 88:Sl(88);break;case 89:Sl(89);break;case 90:Sl(90);break;case 94:Sl(94);break;case 105:Sl(105);break;case 109:Sl(109);break;case 113:Sl(113);break;case 118:Sl(118);break;case 122:Sl(122);break;case 123:Sl(123);break;case 126:Sl(126);break;case 128:Sl(128);break;case 131:Sl(131);break;case 137:Sl(137);break;case 146:Sl(146);break;case 148:Sl(148);break;case 150:Sl(150);break;case 151:Sl(151);break;case 160:Sl(160);break;case 162:Sl(162);break;case 163:Sl(163);break;case 164:Sl(164);break;case 172:Sl(172);break;case 174:Sl(174);break;case 178:Sl(178);break;case 180:Sl(180);break;case 181:Sl(181);break;case 186:Sl(186);break;case 198:Sl(198);break;case 200:Sl(200);break;case 201:Sl(201);break;case 220:Sl(220);break;case 224:Sl(224);break;case 236:Sl(236);break;case 237:Sl(237);break;case 248:Sl(248);break;case 249:Sl(249);break;case 254:Sl(254);break;case 266:Sl(266);break;case 270:Sl(270);break;case 73:Sl(73);break;case 74:Sl(74);break;case 82:Sl(82);break;case 93:Sl(93);break;case 96:Sl(96);break;case 103:Sl(103);break;case 108:Sl(108);break;case 110:Sl(110);break;case 111:Sl(111);break;case 112:Sl(112);break;case 119:Sl(119);break;case 120:Sl(120);break;case 121:Sl(121);break;case 124:Sl(124);break;case 129:Sl(129);break;case 134:Sl(134);break;case 135:Sl(135);break;case 136:Sl(136);break;case 145:Sl(145);break;case 152:Sl(152);break;case 153:Sl(153);break;case 159:Sl(159);break;case 165:Sl(165);break;case 170:Sl(170);break;case 182:Sl(182);break;case 184:Sl(184);break;case 185:Sl(185);break;case 191:Sl(191);break;case 202:Sl(202);break;case 206:Sl(206);break;case 212:Sl(212);break;case 213:Sl(213);break;case 216:Sl(216);break;case 218:Sl(218);break;case 219:Sl(219);break;case 226:Sl(226);break;case 227:Sl(227);break;case 229:Sl(229);break;case 235:Sl(235);break;case 243:Sl(243);break;case 244:Sl(244);break;case 250:Sl(250);break;case 253:Sl(253);break;case 256:Sl(256);break;case 260:Sl(260);break;case 262:Sl(262);break;case 274:Sl(274);break;case 72:Sl(72);break;case 81:Sl(81);break;case 83:Sl(83);break;case 85:Sl(85);break;case 86:Sl(86);break;case 91:Sl(91);break;case 98:Sl(98);break;case 101:Sl(101);break;case 102:Sl(102);break;case 104:Sl(104);break;case 106:Sl(106);break;case 125:Sl(125);break;case 132:Sl(132);break;case 133:Sl(133);break;case 141:Sl(141);break;case 154:Sl(154);break;case 155:Sl(155);break;case 161:Sl(161);break;case 171:Sl(171);break;case 192:Sl(192);break;case 199:Sl(199);break;case 203:Sl(203);break;case 222:Sl(222);break;case 225:Sl(225);break;case 228:Sl(228);break;case 234:Sl(234);break;case 240:Sl(240);break;case 251:Sl(251);break;case 252:Sl(252);break;case 257:Sl(257);break;case 261:Sl(261);break;case 263:Sl(263);break;case 267:Sl(267);break;case 97:Sl(97);break;case 176:Sl(176);break;case 221:Sl(221);break;case 77:Sl(77);break;case 166:Sl(166);break;default:Sl(194)}Vl.endNonterminal("NCName",Pl)}function qa(){switch(Hl){case 19:xl(19);break;case 70:xl(70);break;case 75:xl(75);break;case 79:xl(79);break;case 80:xl(80);break;case 84:xl(84);break;case 88:xl(88);break;case 89:xl(89);break;case 90:xl(90);break;case 94:xl(94);break;case 105:xl(105);break;case 109:xl(109);break;case 113:xl(113);break;case 118:xl(118);break;case 122:xl(122);break;case 123:xl(123);break;case 126:xl(126);break;case 128:xl(128);break;case 131:xl(131);break;case 137:xl(137);break;case 146:xl(146);break;case 148:xl(148);break;case 150:xl(150);break;case 151:xl(151);break;case 160:xl(160);break;case 162:xl(162);break;case 163:xl(163);break;case 164:xl(164);break;case 172:xl(172);break;case 174:xl(174);break;case 178:xl(178);break;case 180:xl(180);break;case 181:xl(181);break;case 186:xl(186);break;case 198:xl(198);break;case 200:xl(200);break;case 201:xl(201);break;case 220:xl(220);break;case 224:xl(224);break;case 236:xl(236);break;case 237:xl(237);break;case 248:xl(248);break;case 249:xl(249);break;case 254:xl(254);break;case 266:xl(266);break;case 270:xl(270);break;case 73:xl(73);break;case 74:xl(74);break;case 82:xl(82);break;case 93:xl(93);break;case 96:xl(96);break;case 103:xl(103);break;case 108:xl(108);break;case 110:xl(110);break;case 111:xl(111);break;case 112:xl(112);break;case 119:xl(119);break;case 120:xl(120);break;case 121:xl(121);break;case 124:xl(124);break;case 129:xl(129);break;case 134:xl(134);break;case 135:xl(135);break;case 136:xl(136);break;case 145:xl(145);break;case 152:xl(152);break;case 153:xl(153);break;case 159:xl(159);break;case 165:xl(165);break;case 170:xl(170);break;case 182:xl(182);break;case 184:xl(184);break;case 185:xl(185);break;case 191:xl(191);break;case 202:xl(202);break;case 206:xl(206);break;case 212:xl(212);break;case 213:xl(213);break;case 216:xl(216);break;case 218:xl(218);break;case 219:xl(219);break;case 226:xl(226);break;case 227:xl(227);break;case 229:xl(229);break;case 235:xl(235);break;case 243:xl(243);break;case 244:xl(244);break;case 250:xl(250);break;case 253:xl(253);break;case 256:xl(256);break;case 260:xl(260);break;case 262:xl(262);break;case 274:xl(274);break;case 72:xl(72);break;case 81:xl(81);break;case 83:xl(83);break;case 85:xl(85);break;case 86:xl(86);break;case 91:xl(91);break;case 98:xl(98);break;case 101:xl(101);break;case 102:xl(102);break;case 104:xl(104);break;case 106:xl(106);break;case 125:xl(125);break;case 132:xl(132);break;case 133:xl(133);break;case 141:xl(141);break;case 154:xl(154);break;case 155:xl(155);break;case 161:xl(161);break;case 171:xl(171);break;case 192:xl(192);break;case 199:xl(199);break;case 203:xl(203);break;case 222:xl(222);break;case 225:xl(225);break;case 228:xl(228);break;case 234:xl(234);break;case 240:xl(240);break;case 251:xl(251);break;case 252:xl(252);break;case 257:xl(257);break;case 261:xl(261);break;case 263:xl(263);break;case 267:xl(267);break;case 97:xl(97);break;case 176:xl(176);break;case 221:xl(221);break;case 77:xl(77);break;case 166:xl(166);break;default:xl(194)}}function Ra(){Vl.startNonterminal("MainModule",Pl),l(),Nl(),Ua(),Vl.endNonterminal("MainModule",Pl)}function Ua(){Vl.startNonterminal("Program",Pl),$a(),Vl.endNonterminal("Program",Pl)}function za(){Vl.startNonterminal("Statements",Pl);for(;;){kl(278);switch(Hl){case 34:Ll(269);break;case 35:Ol(252);break;case 46:Ll(284);break;case 47:Ll(265);break;case 54:Ol(4);break;case 55:Ol(1);break;case 59:Ol(3);break;case 66:Ll(257);break;case 68:Ll(272);break;case 77:Ll(200);break;case 82:Ll(281);break;case 121:Ll(280);break;case 132:Ll(203);break;case 137:Ll(208);break;case 174:Ll(205);break;case 218:Ll(206);break;case 219:Ll(207);break;case 260:Ll(210);break;case 276:Ll(277);break;case 278:Ll(273);break;case 5:case 45:Ll(186);break;case 31:case 32:Ll(255);break;case 40:case 42:Ll(267);break;case 86:case 102:Ll(201);break;case 110:case 159:Ll(209);break;case 184:case 216:Ll(268);break;case 103:case 129:case 235:case 262:Ll(197);break;case 8:case 9:case 10:case 11:case 44:Ll(192);break;case 78:case 124:case 165:case 167:case 242:Ll(191);break;case 96:case 119:case 202:case 244:case 250:case 256:Ll(204);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(198);break;case 6:case 70:case 72:case 75:case 79:case 80:case 81:case 83:case 84:case 85:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 104:case 105:case 106:case 108:case 109:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 131:case 133:case 134:case 141:case 145:case 146:case 148:case 150:case 151:case 152:case 153:case 154:case 155:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 236:case 237:case 240:case 243:case 248:case 249:case 251:case 252:case 253:case 254:case 257:case 261:case 263:case 266:case 267:case 270:case 274:Ll(195);break;default:_l=Hl}if(_l!=25&&_l!=53&&_l!=282&&_l!=12805&&_l!=12806&&_l!=12808&&_l!=12809&&_l!=12810&&_l!=12811&&_l!=12844&&_l!=12845&&_l!=12846&&_l!=12870&&_l!=12872&&_l!=12873&&_l!=12874&&_l!=12875&&_l!=12877&&_l!=12878&&_l!=12879&&_l!=12880&&_l!=12881&&_l!=12882&&_l!=12883&&_l!=12884&&_l!=12885&&_l!=12886&&_l!=12888&&_l!=12889&&_l!=12890&&_l!=12891&&_l!=12893&&_l!=12894&&_l!=12896&&_l!=12897&&_l!=12898&&_l!=12901&&_l!=12902&&_l!=12903&&_l!=12904&&_l!=12905&&_l!=12906&&_l!=12908&&_l!=12909&&_l!=12910&&_l!=12911&&_l!=12912&&_l!=12913&&_l!=12918&&_l!=12919&&_l!=12920&&_l!=12921&&_l!=12922&&_l!=12923&&_l!=12924&&_l!=12925&&_l!=12926&&_l!=12928&&_l!=12929&&_l!=12931&&_l!=12932&&_l!=12933&&_l!=12934&&_l!=12935&&_l!=12936&&_l!=12937&&_l!=12941&&_l!=12945&&_l!=12946&&_l!=12948&&_l!=12950&&_l!=12951&&_l!=12952&&_l!=12953&&_l!=12954&&_l!=12955&&_l!=12959&&_l!=12960&&_l!=12961&&_l!=12962&&_l!=12963&&_l!=12964&&_l!=12965&&_l!=12966&&_l!=12967&&_l!=12970&&_l!=12971&&_l!=12972&&_l!=12974&&_l!=12976&&_l!=12978&&_l!=12980&&_l!=12981&&_l!=12982&&_l!=12984&&_l!=12985&&_l!=12986&&_l!=12991&&_l!=12992&&_l!=12994&&_l!=12998&&_l!=12999&&_l!=13e3&&_l!=13001&&_l!=13002&&_l!=13003&&_l!=13006&&_l!=13012&&_l!=13013&&_l!=13016&&_l!=13018&&_l!=13019&&_l!=13020&&_l!=13021&&_l!=13022&&_l!=13024&&_l!=13025&&_l!=13026&&_l!=13027&&_l!=13028&&_l!=13029&&_l!=13034&&_l!=13035&&_l!=13036&&_l!=13037&&_l!=13040&&_l!=13042&&_l!=13043&&_l!=13044&&_l!=13048&&_l!=13049&&_l!=13050&&_l!=13051&&_l!=13052&&_l!=13053&&_l!=13054&&_l!=13056&&_l!=13057&&_l!=13060&&_l!=13061&&_l!=13062&&_l!=13063&&_l!=13066&&_l!=13067&&_l!=13070&&_l!=13074&&_l!=16134&&_l!=20997&&_l!=20998&&_l!=21e3&&_l!=21001&&_l!=21002&&_l!=21003&&_l!=21036&&_l!=21037&&_l!=21038&&_l!=21062&&_l!=21064&&_l!=21065&&_l!=21066&&_l!=21067&&_l!=21069&&_l!=21070&&_l!=21071&&_l!=21072&&_l!=21073&&_l!=21074&&_l!=21075&&_l!=21076&&_l!=21077&&_l!=21078&&_l!=21080&&_l!=21081&&_l!=21082&&_l!=21083&&_l!=21085&&_l!=21086&&_l!=21088&&_l!=21089&&_l!=21090&&_l!=21093&&_l!=21094&&_l!=21095&&_l!=21096&&_l!=21097&&_l!=21098&&_l!=21100&&_l!=21101&&_l!=21102&&_l!=21103&&_l!=21104&&_l!=21105&&_l!=21110&&_l!=21111&&_l!=21112&&_l!=21113&&_l!=21114&&_l!=21115&&_l!=21116&&_l!=21117&&_l!=21118&&_l!=21120&&_l!=21121&&_l!=21123&&_l!=21124&&_l!=21125&&_l!=21126&&_l!=21127&&_l!=21128&&_l!=21129&&_l!=21133&&_l!=21137&&_l!=21138&&_l!=21140&&_l!=21142&&_l!=21143&&_l!=21144&&_l!=21145&&_l!=21146&&_l!=21147&&_l!=21151&&_l!=21152&&_l!=21153&&_l!=21154&&_l!=21155&&_l!=21156&&_l!=21157&&_l!=21158&&_l!=21159&&_l!=21162&&_l!=21163&&_l!=21164&&_l!=21166&&_l!=21168&&_l!=21170&&_l!=21172&&_l!=21173&&_l!=21174&&_l!=21176&&_l!=21177&&_l!=21178&&_l!=21183&&_l!=21184&&_l!=21186&&_l!=21190&&_l!=21191&&_l!=21192&&_l!=21193&&_l!=21194&&_l!=21195&&_l!=21198&&_l!=21204&&_l!=21205&&_l!=21208&&_l!=21210&&_l!=21211&&_l!=21212&&_l!=21213&&_l!=21214&&_l!=21216&&_l!=21217&&_l!=21218&&_l!=21219&&_l!=21220&&_l!=21221&&_l!=21226&&_l!=21227&&_l!=21228&&_l!=21229&&_l!=21232&&_l!=21234&&_l!=21235&&_l!=21236&&_l!=21240&&_l!=21241&&_l!=21242&&_l!=21243&&_l!=21244&&_l!=21245&&_l!=21246&&_l!=21248&&_l!=21249&&_l!=21252&&_l!=21253&&_l!=21254&&_l!=21255&&_l!=21258&&_l!=21259&&_l!=21262&&_l!=21266&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284&&_l!=144389&&_l!=144390&&_l!=144392&&_l!=144393&&_l!=144394&&_l!=144395&&_l!=144428&&_l!=144429&&_l!=144430&&_l!=144454&&_l!=144456&&_l!=144457&&_l!=144458&&_l!=144459&&_l!=144461&&_l!=144462&&_l!=144463&&_l!=144464&&_l!=144465&&_l!=144466&&_l!=144467&&_l!=144468&&_l!=144469&&_l!=144470&&_l!=144472&&_l!=144473&&_l!=144474&&_l!=144475&&_l!=144477&&_l!=144478&&_l!=144480&&_l!=144481&&_l!=144482&&_l!=144485&&_l!=144486&&_l!=144487&&_l!=144488&&_l!=144489&&_l!=144490&&_l!=144492&&_l!=144493&&_l!=144494&&_l!=144495&&_l!=144496&&_l!=144497&&_l!=144502&&_l!=144503&&_l!=144504&&_l!=144505&&_l!=144506&&_l!=144507&&_l!=144508&&_l!=144509&&_l!=144510&&_l!=144512&&_l!=144513&&_l!=144515&&_l!=144516&&_l!=144517&&_l!=144518&&_l!=144519&&_l!=144520&&_l!=144521&&_l!=144525&&_l!=144529&&_l!=144530&&_l!=144532&&_l!=144534&&_l!=144535&&_l!=144536&&_l!=144537&&_l!=144538&&_l!=144539&&_l!=144543&&_l!=144544&&_l!=144545&&_l!=144546&&_l!=144547&&_l!=144548&&_l!=144549&&_l!=144550&&_l!=144551&&_l!=144554&&_l!=144555&&_l!=144556&&_l!=144558&&_l!=144560&&_l!=144562&&_l!=144564&&_l!=144565&&_l!=144566&&_l!=144568&&_l!=144569&&_l!=144570&&_l!=144575&&_l!=144576&&_l!=144578&&_l!=144582&&_l!=144583&&_l!=144584&&_l!=144585&&_l!=144586&&_l!=144587&&_l!=144590&&_l!=144596&&_l!=144597&&_l!=144600&&_l!=144602&&_l!=144603&&_l!=144604&&_l!=144605&&_l!=144606&&_l!=144608&&_l!=144609&&_l!=144610&&_l!=144611&&_l!=144612&&_l!=144613&&_l!=144618&&_l!=144619&&_l!=144620&&_l!=144621&&_l!=144624&&_l!=144626&&_l!=144627&&_l!=144628&&_l!=144632&&_l!=144633&&_l!=144634&&_l!=144635&&_l!=144636&&_l!=144637&&_l!=144638&&_l!=144640&&_l!=144641&&_l!=144644&&_l!=144645&&_l!=144646&&_l!=144647&&_l!=144650&&_l!=144651&&_l!=144654&&_l!=144658){_l=Kl(6,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Qa(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(6,Pl,_l)}}if(_l!=-1&&_l!=53&&_l!=16134&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284)break;Nl(),Ka()}Vl.endNonterminal("Statements",Pl)}function Wa(){for(;;){kl(278);switch(Hl){case 34:Ll(269);break;case 35:Ol(252);break;case 46:Ll(284);break;case 47:Ll(265);break;case 54:Ol(4);break;case 55:Ol(1);break;case 59:Ol(3);break;case 66:Ll(257);break;case 68:Ll(272);break;case 77:Ll(200);break;case 82:Ll(281);break;case 121:Ll(280);break;case 132:Ll(203);break;case 137:Ll(208);break;case 174:Ll(205);break;case 218:Ll(206);break;case 219:Ll(207);break;case 260:Ll(210);break;case 276:Ll(277);break;case 278:Ll(273);break;case 5:case 45:Ll(186);break;case 31:case 32:Ll(255);break;case 40:case 42:Ll(267);break;case 86:case 102:Ll(201);break;case 110:case 159:Ll(209);break;case 184:case 216:Ll(268);break;case 103:case 129:case 235:case 262:Ll(197);break;case 8:case 9:case 10:case 11:case 44:Ll(192);break;case 78:case 124:case 165:case 167:case 242:Ll(191);break;case 96:case 119:case 202:case 244:case 250:case 256:Ll(204);break;case 73:case 74:case 93:case 111:case 112:case 135:case 136:case 206:case 212:case 213:case 229:Ll(198);break;case 6:case 70:case 72:case 75:case 79:case 80:case 81:case 83:case 84:case 85:case 88:case 89:case 90:case 91:case 94:case 97:case 98:case 101:case 104:case 105:case 106:case 108:case 109:case 113:case 118:case 120:case 122:case 123:case 125:case 126:case 128:case 131:case 133:case 134:case 141:case 145:case 146:case 148:case 150:case 151:case 152:case 153:case 154:case 155:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 176:case 178:case 180:case 181:case 182:case 185:case 186:case 191:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 220:case 221:case 222:case 224:case 225:case 226:case 227:case 228:case 234:case 236:case 237:case 240:case 243:case 248:case 249:case 251:case 252:case 253:case 254:case 257:case 261:case 263:case 266:case 267:case 270:case 274:Ll(195);break;default:_l=Hl}if(_l!=25&&_l!=53&&_l!=282&&_l!=12805&&_l!=12806&&_l!=12808&&_l!=12809&&_l!=12810&&_l!=12811&&_l!=12844&&_l!=12845&&_l!=12846&&_l!=12870&&_l!=12872&&_l!=12873&&_l!=12874&&_l!=12875&&_l!=12877&&_l!=12878&&_l!=12879&&_l!=12880&&_l!=12881&&_l!=12882&&_l!=12883&&_l!=12884&&_l!=12885&&_l!=12886&&_l!=12888&&_l!=12889&&_l!=12890&&_l!=12891&&_l!=12893&&_l!=12894&&_l!=12896&&_l!=12897&&_l!=12898&&_l!=12901&&_l!=12902&&_l!=12903&&_l!=12904&&_l!=12905&&_l!=12906&&_l!=12908&&_l!=12909&&_l!=12910&&_l!=12911&&_l!=12912&&_l!=12913&&_l!=12918&&_l!=12919&&_l!=12920&&_l!=12921&&_l!=12922&&_l!=12923&&_l!=12924&&_l!=12925&&_l!=12926&&_l!=12928&&_l!=12929&&_l!=12931&&_l!=12932&&_l!=12933&&_l!=12934&&_l!=12935&&_l!=12936&&_l!=12937&&_l!=12941&&_l!=12945&&_l!=12946&&_l!=12948&&_l!=12950&&_l!=12951&&_l!=12952&&_l!=12953&&_l!=12954&&_l!=12955&&_l!=12959&&_l!=12960&&_l!=12961&&_l!=12962&&_l!=12963&&_l!=12964&&_l!=12965&&_l!=12966&&_l!=12967&&_l!=12970&&_l!=12971&&_l!=12972&&_l!=12974&&_l!=12976&&_l!=12978&&_l!=12980&&_l!=12981&&_l!=12982&&_l!=12984&&_l!=12985&&_l!=12986&&_l!=12991&&_l!=12992&&_l!=12994&&_l!=12998&&_l!=12999&&_l!=13e3&&_l!=13001&&_l!=13002&&_l!=13003&&_l!=13006&&_l!=13012&&_l!=13013&&_l!=13016&&_l!=13018&&_l!=13019&&_l!=13020&&_l!=13021&&_l!=13022&&_l!=13024&&_l!=13025&&_l!=13026&&_l!=13027&&_l!=13028&&_l!=13029&&_l!=13034&&_l!=13035&&_l!=13036&&_l!=13037&&_l!=13040&&_l!=13042&&_l!=13043&&_l!=13044&&_l!=13048&&_l!=13049&&_l!=13050&&_l!=13051&&_l!=13052&&_l!=13053&&_l!=13054&&_l!=13056&&_l!=13057&&_l!=13060&&_l!=13061&&_l!=13062&&_l!=13063&&_l!=13066&&_l!=13067&&_l!=13070&&_l!=13074&&_l!=16134&&_l!=20997&&_l!=20998&&_l!=21e3&&_l!=21001&&_l!=21002&&_l!=21003&&_l!=21036&&_l!=21037&&_l!=21038&&_l!=21062&&_l!=21064&&_l!=21065&&_l!=21066&&_l!=21067&&_l!=21069&&_l!=21070&&_l!=21071&&_l!=21072&&_l!=21073&&_l!=21074&&_l!=21075&&_l!=21076&&_l!=21077&&_l!=21078&&_l!=21080&&_l!=21081&&_l!=21082&&_l!=21083&&_l!=21085&&_l!=21086&&_l!=21088&&_l!=21089&&_l!=21090&&_l!=21093&&_l!=21094&&_l!=21095&&_l!=21096&&_l!=21097&&_l!=21098&&_l!=21100&&_l!=21101&&_l!=21102&&_l!=21103&&_l!=21104&&_l!=21105&&_l!=21110&&_l!=21111&&_l!=21112&&_l!=21113&&_l!=21114&&_l!=21115&&_l!=21116&&_l!=21117&&_l!=21118&&_l!=21120&&_l!=21121&&_l!=21123&&_l!=21124&&_l!=21125&&_l!=21126&&_l!=21127&&_l!=21128&&_l!=21129&&_l!=21133&&_l!=21137&&_l!=21138&&_l!=21140&&_l!=21142&&_l!=21143&&_l!=21144&&_l!=21145&&_l!=21146&&_l!=21147&&_l!=21151&&_l!=21152&&_l!=21153&&_l!=21154&&_l!=21155&&_l!=21156&&_l!=21157&&_l!=21158&&_l!=21159&&_l!=21162&&_l!=21163&&_l!=21164&&_l!=21166&&_l!=21168&&_l!=21170&&_l!=21172&&_l!=21173&&_l!=21174&&_l!=21176&&_l!=21177&&_l!=21178&&_l!=21183&&_l!=21184&&_l!=21186&&_l!=21190&&_l!=21191&&_l!=21192&&_l!=21193&&_l!=21194&&_l!=21195&&_l!=21198&&_l!=21204&&_l!=21205&&_l!=21208&&_l!=21210&&_l!=21211&&_l!=21212&&_l!=21213&&_l!=21214&&_l!=21216&&_l!=21217&&_l!=21218&&_l!=21219&&_l!=21220&&_l!=21221&&_l!=21226&&_l!=21227&&_l!=21228&&_l!=21229&&_l!=21232&&_l!=21234&&_l!=21235&&_l!=21236&&_l!=21240&&_l!=21241&&_l!=21242&&_l!=21243&&_l!=21244&&_l!=21245&&_l!=21246&&_l!=21248&&_l!=21249&&_l!=21252&&_l!=21253&&_l!=21254&&_l!=21255&&_l!=21258&&_l!=21259&&_l!=21262&&_l!=21266&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284&&_l!=144389&&_l!=144390&&_l!=144392&&_l!=144393&&_l!=144394&&_l!=144395&&_l!=144428&&_l!=144429&&_l!=144430&&_l!=144454&&_l!=144456&&_l!=144457&&_l!=144458&&_l!=144459&&_l!=144461&&_l!=144462&&_l!=144463&&_l!=144464&&_l!=144465&&_l!=144466&&_l!=144467&&_l!=144468&&_l!=144469&&_l!=144470&&_l!=144472&&_l!=144473&&_l!=144474&&_l!=144475&&_l!=144477&&_l!=144478&&_l!=144480&&_l!=144481&&_l!=144482&&_l!=144485&&_l!=144486&&_l!=144487&&_l!=144488&&_l!=144489&&_l!=144490&&_l!=144492&&_l!=144493&&_l!=144494&&_l!=144495&&_l!=144496&&_l!=144497&&_l!=144502&&_l!=144503&&_l!=144504&&_l!=144505&&_l!=144506&&_l!=144507&&_l!=144508&&_l!=144509&&_l!=144510&&_l!=144512&&_l!=144513&&_l!=144515&&_l!=144516&&_l!=144517&&_l!=144518&&_l!=144519&&_l!=144520&&_l!=144521&&_l!=144525&&_l!=144529&&_l!=144530&&_l!=144532&&_l!=144534&&_l!=144535&&_l!=144536&&_l!=144537&&_l!=144538&&_l!=144539&&_l!=144543&&_l!=144544&&_l!=144545&&_l!=144546&&_l!=144547&&_l!=144548&&_l!=144549&&_l!=144550&&_l!=144551&&_l!=144554&&_l!=144555&&_l!=144556&&_l!=144558&&_l!=144560&&_l!=144562&&_l!=144564&&_l!=144565&&_l!=144566&&_l!=144568&&_l!=144569&&_l!=144570&&_l!=144575&&_l!=144576&&_l!=144578&&_l!=144582&&_l!=144583&&_l!=144584&&_l!=144585&&_l!=144586&&_l!=144587&&_l!=144590&&_l!=144596&&_l!=144597&&_l!=144600&&_l!=144602&&_l!=144603&&_l!=144604&&_l!=144605&&_l!=144606&&_l!=144608&&_l!=144609&&_l!=144610&&_l!=144611&&_l!=144612&&_l!=144613&&_l!=144618&&_l!=144619&&_l!=144620&&_l!=144621&&_l!=144624&&_l!=144626&&_l!=144627&&_l!=144628&&_l!=144632&&_l!=144633&&_l!=144634&&_l!=144635&&_l!=144636&&_l!=144637&&_l!=144638&&_l!=144640&&_l!=144641&&_l!=144644&&_l!=144645&&_l!=144646&&_l!=144647&&_l!=144650&&_l!=144651&&_l!=144654&&_l!=144658){_l=Kl(6,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Qa(),Jl(6,t,-1);continue}catch(a){Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(6,t,-2);break}}}if(_l!=-1&&_l!=53&&_l!=16134&&_l!=27141&&_l!=27142&&_l!=27144&&_l!=27145&&_l!=27146&&_l!=27147&&_l!=27180&&_l!=27181&&_l!=27182&&_l!=27206&&_l!=27208&&_l!=27209&&_l!=27210&&_l!=27211&&_l!=27213&&_l!=27214&&_l!=27215&&_l!=27216&&_l!=27217&&_l!=27218&&_l!=27219&&_l!=27220&&_l!=27221&&_l!=27222&&_l!=27224&&_l!=27225&&_l!=27226&&_l!=27227&&_l!=27229&&_l!=27230&&_l!=27232&&_l!=27233&&_l!=27234&&_l!=27237&&_l!=27238&&_l!=27239&&_l!=27240&&_l!=27241&&_l!=27242&&_l!=27244&&_l!=27245&&_l!=27246&&_l!=27247&&_l!=27248&&_l!=27249&&_l!=27254&&_l!=27255&&_l!=27256&&_l!=27257&&_l!=27258&&_l!=27259&&_l!=27260&&_l!=27261&&_l!=27262&&_l!=27264&&_l!=27265&&_l!=27267&&_l!=27268&&_l!=27269&&_l!=27270&&_l!=27271&&_l!=27272&&_l!=27273&&_l!=27277&&_l!=27281&&_l!=27282&&_l!=27284&&_l!=27286&&_l!=27287&&_l!=27288&&_l!=27289&&_l!=27290&&_l!=27291&&_l!=27295&&_l!=27296&&_l!=27297&&_l!=27298&&_l!=27299&&_l!=27300&&_l!=27301&&_l!=27302&&_l!=27303&&_l!=27306&&_l!=27307&&_l!=27308&&_l!=27310&&_l!=27312&&_l!=27314&&_l!=27316&&_l!=27317&&_l!=27318&&_l!=27320&&_l!=27321&&_l!=27322&&_l!=27327&&_l!=27328&&_l!=27330&&_l!=27334&&_l!=27335&&_l!=27336&&_l!=27337&&_l!=27338&&_l!=27339&&_l!=27342&&_l!=27348&&_l!=27349&&_l!=27352&&_l!=27354&&_l!=27355&&_l!=27356&&_l!=27357&&_l!=27358&&_l!=27360&&_l!=27361&&_l!=27362&&_l!=27363&&_l!=27364&&_l!=27365&&_l!=27370&&_l!=27371&&_l!=27372&&_l!=27373&&_l!=27376&&_l!=27378&&_l!=27379&&_l!=27380&&_l!=27384&&_l!=27385&&_l!=27386&&_l!=27387&&_l!=27388&&_l!=27389&&_l!=27390&&_l!=27392&&_l!=27393&&_l!=27396&&_l!=27397&&_l!=27398&&_l!=27399&&_l!=27402&&_l!=27403&&_l!=27406&&_l!=27410&&_l!=90198&&_l!=90214&&_l!=113284)break;Qa()}}function Xa(){Vl.startNonterminal("StatementsAndExpr",Pl),za(),Nl(),G(),Vl.endNonterminal("StatementsAndExpr",Pl)}function Va(){Wa(),Y()}function $a(){Vl.startNonterminal("StatementsAndOptionalExpr",Pl),za(),Hl!=25&&Hl!=282&&(Nl(),G()),Vl.endNonterminal("StatementsAndOptionalExpr",Pl)}function Ja(){Wa(),Hl!=25&&Hl!=282&&Y()}function Ka(){Vl.startNonterminal("Statement",Pl);switch(Hl){case 132:Ll(189);break;case 137:Ll(196);break;case 174:Ll(193);break;case 250:Ll(190);break;case 262:Ll(187);break;case 276:Ll(277);break;case 31:case 32:Ll(255);break;case 86:case 102:Ll(188);break;case 152:case 243:case 253:case 267:Ll(185);break;default:_l=Hl}if(_l==2836||_l==3103||_l==3104||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17675||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27412||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==35871||_l==35872||_l==36116||_l==36895||_l==36896||_l==37140||_l==37407||_l==37408||_l==37652||_l==37919||_l==37920||_l==38164||_l==38431||_l==38432||_l==38676||_l==39455||_l==39456||_l==39700||_l==39967||_l==39968||_l==40212||_l==40479||_l==40480||_l==40724||_l==40991||_l==40992||_l==41236||_l==41503||_l==41504||_l==41748||_l==42015||_l==42016||_l==42260||_l==42527||_l==42528||_l==42772||_l==43039||_l==43040||_l==43284||_l==43551||_l==43552||_l==43796||_l==44063||_l==44064||_l==44308||_l==45087||_l==45088||_l==45332||_l==45599||_l==45600||_l==45844||_l==46111||_l==46112||_l==46356||_l==46623||_l==46624||_l==46868||_l==47647||_l==47648||_l==47892||_l==48159||_l==48160||_l==48404||_l==49183||_l==49184||_l==49428||_l==49695||_l==49696||_l==49940||_l==50207||_l==50208||_l==50452||_l==51743||_l==51744||_l==51988||_l==52255||_l==52256||_l==52500||_l==52767||_l==52768||_l==53012||_l==53279||_l==53280||_l==53524||_l==53791||_l==53792||_l==54036||_l==54303||_l==54304||_l==54548||_l==55327||_l==55328||_l==55572||_l==55839||_l==55840||_l==56084||_l==56351||_l==56352||_l==56596||_l==56863||_l==56864||_l==57108||_l==57375||_l==57376||_l==57620||_l==57887||_l==57888||_l==58132||_l==60447||_l==60448||_l==60692||_l==60959||_l==60960||_l==61204||_l==61471||_l==61472||_l==61716||_l==61983||_l==61984||_l==62228||_l==62495||_l==62496||_l==62740||_l==63007||_l==63008||_l==63252||_l==63519||_l==63520||_l==63764||_l==64031||_l==64032||_l==64276||_l==64543||_l==64544||_l==64788||_l==65567||_l==65568||_l==65812||_l==66079||_l==66080||_l==66324||_l==67103||_l==67104||_l==67348||_l==67615||_l==67616||_l==67860||_l==68127||_l==68128||_l==68372||_l==68639||_l==68640||_l==68884||_l==69151||_l==69152||_l==69396||_l==69663||_l==69664||_l==69908||_l==70175||_l==70176||_l==70420||_l==72223||_l==72224||_l==72468||_l==74271||_l==74272||_l==74516||_l==74783||_l==74784||_l==75028||_l==75807||_l==75808||_l==76052||_l==76831||_l==76832||_l==77076||_l==77343||_l==77344||_l==77588||_l==77855||_l==77856||_l==78100||_l==78367||_l==78368||_l==78612||_l==78879||_l==78880||_l==79124||_l==79391||_l==79392||_l==79636||_l==81439||_l==81440||_l==81684||_l==81951||_l==81952||_l==82196||_l==82463||_l==82464||_l==82708||_l==82975||_l==82976||_l==83220||_l==83487||_l==83488||_l==83732||_l==83999||_l==84e3||_l==84244||_l==84511||_l==84512||_l==84756||_l==85023||_l==85024||_l==85268||_l==85535||_l==85536||_l==85780||_l==87071||_l==87072||_l==87316||_l==87583||_l==87584||_l==87828||_l==88095||_l==88096||_l==88340||_l==89119||_l==89120||_l==89364||_l==90143||_l==90144||_l==90388||_l==91167||_l==91168||_l==91412||_l==92191||_l==92192||_l==92436||_l==92703||_l==92704||_l==92948||_l==93215||_l==93216||_l==93460||_l==94239||_l==94240||_l==94484||_l==94751||_l==94752||_l==94996||_l==95263||_l==95264||_l==95508||_l==97823||_l==97824||_l==98068||_l==98335||_l==98336||_l==98580||_l==99359||_l==99360||_l==99604||_l==101407||_l==101408||_l==101652||_l==101919||_l==101920||_l==102164||_l==102431||_l==102432||_l==102676||_l==102943||_l==102944||_l==103188||_l==103455||_l==103456||_l==103700||_l==103967||_l==103968||_l==104212||_l==105503||_l==105504||_l==105748||_l==108575||_l==108576||_l==108820||_l==109087||_l==109088||_l==109332||_l==110623||_l==110624||_l==110868||_l==111647||_l==111648||_l==111892||_l==112159||_l==112160||_l==112404||_l==112671||_l==112672||_l==112916||_l==113183||_l==113184||_l==113428||_l==113695||_l==113696||_l==113940||_l==114719||_l==114720||_l==114964||_l==115231||_l==115232||_l==115476||_l==115743||_l==115744||_l==115988||_l==116255||_l==116256||_l==116500||_l==116767||_l==116768||_l==117012||_l==117279||_l==117280||_l==117524||_l==119839||_l==119840||_l==120084||_l==120351||_l==120352||_l==120596||_l==120863||_l==120864||_l==121108||_l==121375||_l==121376||_l==121620||_l==122911||_l==122912||_l==123156||_l==123935||_l==123936||_l==124180||_l==124447||_l==124448||_l==124692||_l==124959||_l==124960||_l==125204||_l==127007||_l==127008||_l==127252||_l==127519||_l==127520||_l==127764||_l==128031||_l==128032||_l==128276||_l==128543||_l==128544||_l==128788||_l==129055||_l==129056||_l==129300||_l==129567||_l==129568||_l==129812||_l==130079||_l==130080||_l==130324||_l==131103||_l==131104||_l==131348||_l==131615||_l==131616||_l==131860||_l==133151||_l==133152||_l==133396||_l==133663||_l==133664||_l==133908||_l==134175||_l==134176||_l==134420||_l==134687||_l==134688||_l==134932||_l==136223||_l==136224||_l==136468||_l==136735||_l==136736||_l==136980||_l==138271||_l==138272||_l==138516||_l==140319||_l==140320||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(7,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ya(),_l=-1}catch(a){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),ef(),_l=-2}catch(f){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),nf(),_l=-3}catch(l){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),kf(),_l=-12}catch(c){_l=-13}}}}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(7,Pl,_l)}}switch(_l){case-2:Za();break;case-3:tf();break;case 90198:rf();break;case 90214:of();break;case 113284:af();break;case 16009:case 16046:case 116910:case 119945:case 128649:lf();break;case 17560:df();break;case 17651:mf();break;case 141562:wf();break;case 17661:Sf();break;case-12:case 16134:Cf();break;case-13:Lf();break;case 53:Of();break;default:Ga()}Vl.endNonterminal("Statement",Pl)}function Qa(){switch(Hl){case 132:Ll(189);break;case 137:Ll(196);break;case 174:Ll(193);break;case 250:Ll(190);break;case 262:Ll(187);break;case 276:Ll(277);break;case 31:case 32:Ll(255);break;case 86:case 102:Ll(188);break;case 152:case 243:case 253:case 267:Ll(185);break;default:_l=Hl}if(_l==2836||_l==3103||_l==3104||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17675||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27412||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==35871||_l==35872||_l==36116||_l==36895||_l==36896||_l==37140||_l==37407||_l==37408||_l==37652||_l==37919||_l==37920||_l==38164||_l==38431||_l==38432||_l==38676||_l==39455||_l==39456||_l==39700||_l==39967||_l==39968||_l==40212||_l==40479||_l==40480||_l==40724||_l==40991||_l==40992||_l==41236||_l==41503||_l==41504||_l==41748||_l==42015||_l==42016||_l==42260||_l==42527||_l==42528||_l==42772||_l==43039||_l==43040||_l==43284||_l==43551||_l==43552||_l==43796||_l==44063||_l==44064||_l==44308||_l==45087||_l==45088||_l==45332||_l==45599||_l==45600||_l==45844||_l==46111||_l==46112||_l==46356||_l==46623||_l==46624||_l==46868||_l==47647||_l==47648||_l==47892||_l==48159||_l==48160||_l==48404||_l==49183||_l==49184||_l==49428||_l==49695||_l==49696||_l==49940||_l==50207||_l==50208||_l==50452||_l==51743||_l==51744||_l==51988||_l==52255||_l==52256||_l==52500||_l==52767||_l==52768||_l==53012||_l==53279||_l==53280||_l==53524||_l==53791||_l==53792||_l==54036||_l==54303||_l==54304||_l==54548||_l==55327||_l==55328||_l==55572||_l==55839||_l==55840||_l==56084||_l==56351||_l==56352||_l==56596||_l==56863||_l==56864||_l==57108||_l==57375||_l==57376||_l==57620||_l==57887||_l==57888||_l==58132||_l==60447||_l==60448||_l==60692||_l==60959||_l==60960||_l==61204||_l==61471||_l==61472||_l==61716||_l==61983||_l==61984||_l==62228||_l==62495||_l==62496||_l==62740||_l==63007||_l==63008||_l==63252||_l==63519||_l==63520||_l==63764||_l==64031||_l==64032||_l==64276||_l==64543||_l==64544||_l==64788||_l==65567||_l==65568||_l==65812||_l==66079||_l==66080||_l==66324||_l==67103||_l==67104||_l==67348||_l==67615||_l==67616||_l==67860||_l==68127||_l==68128||_l==68372||_l==68639||_l==68640||_l==68884||_l==69151||_l==69152||_l==69396||_l==69663||_l==69664||_l==69908||_l==70175||_l==70176||_l==70420||_l==72223||_l==72224||_l==72468||_l==74271||_l==74272||_l==74516||_l==74783||_l==74784||_l==75028||_l==75807||_l==75808||_l==76052||_l==76831||_l==76832||_l==77076||_l==77343||_l==77344||_l==77588||_l==77855||_l==77856||_l==78100||_l==78367||_l==78368||_l==78612||_l==78879||_l==78880||_l==79124||_l==79391||_l==79392||_l==79636||_l==81439||_l==81440||_l==81684||_l==81951||_l==81952||_l==82196||_l==82463||_l==82464||_l==82708||_l==82975||_l==82976||_l==83220||_l==83487||_l==83488||_l==83732||_l==83999||_l==84e3||_l==84244||_l==84511||_l==84512||_l==84756||_l==85023||_l==85024||_l==85268||_l==85535||_l==85536||_l==85780||_l==87071||_l==87072||_l==87316||_l==87583||_l==87584||_l==87828||_l==88095||_l==88096||_l==88340||_l==89119||_l==89120||_l==89364||_l==90143||_l==90144||_l==90388||_l==91167||_l==91168||_l==91412||_l==92191||_l==92192||_l==92436||_l==92703||_l==92704||_l==92948||_l==93215||_l==93216||_l==93460||_l==94239||_l==94240||_l==94484||_l==94751||_l==94752||_l==94996||_l==95263||_l==95264||_l==95508||_l==97823||_l==97824||_l==98068||_l==98335||_l==98336||_l==98580||_l==99359||_l==99360||_l==99604||_l==101407||_l==101408||_l==101652||_l==101919||_l==101920||_l==102164||_l==102431||_l==102432||_l==102676||_l==102943||_l==102944||_l==103188||_l==103455||_l==103456||_l==103700||_l==103967||_l==103968||_l==104212||_l==105503||_l==105504||_l==105748||_l==108575||_l==108576||_l==108820||_l==109087||_l==109088||_l==109332||_l==110623||_l==110624||_l==110868||_l==111647||_l==111648||_l==111892||_l==112159||_l==112160||_l==112404||_l==112671||_l==112672||_l==112916||_l==113183||_l==113184||_l==113428||_l==113695||_l==113696||_l==113940||_l==114719||_l==114720||_l==114964||_l==115231||_l==115232||_l==115476||_l==115743||_l==115744||_l==115988||_l==116255||_l==116256||_l==116500||_l==116767||_l==116768||_l==117012||_l==117279||_l==117280||_l==117524||_l==119839||_l==119840||_l==120084||_l==120351||_l==120352||_l==120596||_l==120863||_l==120864||_l==121108||_l==121375||_l==121376||_l==121620||_l==122911||_l==122912||_l==123156||_l==123935||_l==123936||_l==124180||_l==124447||_l==124448||_l==124692||_l==124959||_l==124960||_l==125204||_l==127007||_l==127008||_l==127252||_l==127519||_l==127520||_l==127764||_l==128031||_l==128032||_l==128276||_l==128543||_l==128544||_l==128788||_l==129055||_l==129056||_l==129300||_l==129567||_l==129568||_l==129812||_l==130079||_l==130080||_l==130324||_l==131103||_l==131104||_l==131348||_l==131615||_l==131616||_l==131860||_l==133151||_l==133152||_l==133396||_l==133663||_l==133664||_l==133908||_l==134175||_l==134176||_l==134420||_l==134687||_l==134688||_l==134932||_l==136223||_l==136224||_l==136468||_l==136735||_l==136736||_l==136980||_l==138271||_l==138272||_l==138516||_l==140319||_l==140320||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(7,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ya(),Jl(7,t,-1),_l=-15}catch(a){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),ef(),Jl(7,t,-2),_l=-15}catch(f){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),nf(),Jl(7,t,-3),_l=-15}catch(l){try{Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),kf(),Jl(7,t,-12),_l=-15}catch(c){_l=-13,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(7,t,-13)}}}}}}switch(_l){case-2:ef();break;case-3:nf();break;case 90198:sf();break;case 90214:uf();break;case 113284:ff();break;case 16009:case 16046:case 116910:case 119945:case 128649:cf();break;case 17560:vf();break;case 17651:gf();break;case 141562:Ef();break;case 17661:xf();break;case-12:case 16134:kf();break;case-13:Af();break;case 53:Mf();break;case-15:break;default:Ya()}}function Ga(){Vl.startNonterminal("ApplyStatement",Pl),Pf(),Sl(53),Vl.endNonterminal("ApplyStatement",Pl)}function Ya(){Hf(),xl(53)}function Za(){Vl.startNonterminal("AssignStatement",Pl),Sl(31),kl(255),Nl(),hi(),kl(27),Sl(52),kl(267),Nl(),_f(),Sl(53),Vl.endNonterminal("AssignStatement",Pl)}function ef(){xl(31),kl(255),pi(),kl(27),xl(52),kl(267),Df(),xl(53)}function tf(){Vl.startNonterminal("BlockStatement",Pl),Sl(276),kl(277),Nl(),za(),Sl(282),Vl.endNonterminal("BlockStatement",Pl)}function nf(){xl(276),kl(277),Wa(),xl(282)}function rf(){Vl.startNonterminal("BreakStatement",Pl),Sl(86),kl(59),Sl(176),kl(28),Sl(53),Vl.endNonterminal("BreakStatement",Pl)}function sf(){xl(86),kl(59),xl(176),kl(28),xl(53)}function of(){Vl.startNonterminal("ContinueStatement",Pl),Sl(102),kl(59),Sl(176),kl(28),Sl(53),Vl.endNonterminal("ContinueStatement",Pl)}function uf(){xl(102),kl(59),xl(176),kl(28),xl(53)}function af(){Vl.startNonterminal("ExitStatement",Pl),Sl(132),kl(71),Sl(221),kl(267),Nl(),_f(),Sl(53),Vl.endNonterminal("ExitStatement",Pl)}function ff(){xl(132),kl(71),xl(221),kl(267),Df(),xl(53)}function lf(){Vl.startNonterminal("FLWORStatement",Pl),tt();for(;;){kl(173);if(Hl==220)break;Nl(),rt()}Nl(),hf(),Vl.endNonterminal("FLWORStatement",Pl)}function cf(){nt();for(;;){kl(173);if(Hl==220)break;it()}pf()}function hf(){Vl.startNonterminal("ReturnStatement",Pl),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("ReturnStatement",Pl)}function pf(){xl(220),kl(270),Qa()}function df(){Vl.startNonterminal("IfStatement",Pl),Sl(152),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37),kl(77),Sl(245),kl(270),Nl(),Ka(),kl(48),Sl(122),kl(270),Nl(),Ka(),Vl.endNonterminal("IfStatement",Pl)}function vf(){xl(152),kl(22),xl(34),kl(267),Y(),xl(37),kl(77),xl(245),kl(270),Qa(),kl(48),xl(122),kl(270),Qa()}function mf(){Vl.startNonterminal("SwitchStatement",Pl),Sl(243),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),yf(),kl(113);if(Hl!=88)break}Sl(109),kl(70),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("SwitchStatement",Pl)}function gf(){xl(243),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),bf(),kl(113);if(Hl!=88)break}xl(109),kl(70),xl(220),kl(270),Qa()}function yf(){Vl.startNonterminal("SwitchCaseStatement",Pl);for(;;){Sl(88),kl(267),Nl(),dn();if(Hl!=88)break}Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("SwitchCaseStatement",Pl)}function bf(){for(;;){xl(88),kl(267),vn();if(Hl!=88)break}xl(220),kl(270),Qa()}function wf(){Vl.startNonterminal("TryCatchStatement",Pl),Sl(250),kl(87),Nl(),tf();for(;;){kl(36),Sl(91),kl(257),Nl(),_n(),Nl(),tf(),kl(278);switch(Hl){case 91:Ll(279);break;default:_l=Hl}if(_l==38491||_l==45659||_l==46171||_l==60507||_l==65627||_l==67163||_l==74843||_l==76891||_l==77403||_l==82011||_l==83035||_l==84059||_l==88155||_l==91227||_l==92251||_l==95323||_l==102491||_l==127067||_l==127579||_l==130139){_l=Kl(8,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{kl(36),xl(91),kl(257),Dn(),nf(),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(8,Pl,_l)}}if(_l!=-1&&_l!=2651&&_l!=3163&&_l!=35931&&_l!=36955&&_l!=37467&&_l!=37979&&_l!=39515&&_l!=40027&&_l!=40539&&_l!=41051&&_l!=41563&&_l!=42075&&_l!=42587&&_l!=43099&&_l!=43611&&_l!=44123&&_l!=45147&&_l!=46683&&_l!=47707&&_l!=48219&&_l!=49243&&_l!=49755&&_l!=50267&&_l!=51803&&_l!=52315&&_l!=52827&&_l!=53339&&_l!=53851&&_l!=54363&&_l!=55387&&_l!=55899&&_l!=56411&&_l!=56923&&_l!=57435&&_l!=57947&&_l!=61019&&_l!=61531&&_l!=62043&&_l!=62555&&_l!=63067&&_l!=63579&&_l!=64091&&_l!=64603&&_l!=66139&&_l!=67675&&_l!=68187&&_l!=68699&&_l!=69211&&_l!=69723&&_l!=70235&&_l!=72283&&_l!=74331&&_l!=75867&&_l!=77915&&_l!=78427&&_l!=78939&&_l!=79451&&_l!=81499&&_l!=82523&&_l!=83547&&_l!=84571&&_l!=85083&&_l!=85595&&_l!=87131&&_l!=87643&&_l!=89179&&_l!=90203&&_l!=92763&&_l!=93275&&_l!=94299&&_l!=94811&&_l!=97883&&_l!=98395&&_l!=99419&&_l!=101467&&_l!=101979&&_l!=103003&&_l!=103515&&_l!=104027&&_l!=105563&&_l!=108635&&_l!=109147&&_l!=110683&&_l!=111707&&_l!=112219&&_l!=112731&&_l!=113243&&_l!=113755&&_l!=114779&&_l!=115291&&_l!=115803&&_l!=116315&&_l!=116827&&_l!=117339&&_l!=119899&&_l!=120411&&_l!=120923&&_l!=121435&&_l!=122971&&_l!=123995&&_l!=124507&&_l!=125019&&_l!=128091&&_l!=128603&&_l!=129115&&_l!=129627&&_l!=131163&&_l!=131675&&_l!=133211&&_l!=133723&&_l!=134235&&_l!=134747&&_l!=136283&&_l!=136795&&_l!=138331&&_l!=140379)break}Vl.endNonterminal("TryCatchStatement",Pl)}function Ef(){xl(250),kl(87),nf(),kl(36),xl(91),kl(257),Dn(),nf();for(;;){kl(278);switch(Hl){case 91:Ll(279);break;default:_l=Hl}if(_l==38491||_l==45659||_l==46171||_l==60507||_l==65627||_l==67163||_l==74843||_l==76891||_l==77403||_l==82011||_l==83035||_l==84059||_l==88155||_l==91227||_l==92251||_l==95323||_l==102491||_l==127067||_l==127579||_l==130139){_l=Kl(8,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{kl(36),xl(91),kl(257),Dn(),nf(),Jl(8,t,-1);continue}catch(a){Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(8,t,-2);break}}}if(_l!=-1&&_l!=2651&&_l!=3163&&_l!=35931&&_l!=36955&&_l!=37467&&_l!=37979&&_l!=39515&&_l!=40027&&_l!=40539&&_l!=41051&&_l!=41563&&_l!=42075&&_l!=42587&&_l!=43099&&_l!=43611&&_l!=44123&&_l!=45147&&_l!=46683&&_l!=47707&&_l!=48219&&_l!=49243&&_l!=49755&&_l!=50267&&_l!=51803&&_l!=52315&&_l!=52827&&_l!=53339&&_l!=53851&&_l!=54363&&_l!=55387&&_l!=55899&&_l!=56411&&_l!=56923&&_l!=57435&&_l!=57947&&_l!=61019&&_l!=61531&&_l!=62043&&_l!=62555&&_l!=63067&&_l!=63579&&_l!=64091&&_l!=64603&&_l!=66139&&_l!=67675&&_l!=68187&&_l!=68699&&_l!=69211&&_l!=69723&&_l!=70235&&_l!=72283&&_l!=74331&&_l!=75867&&_l!=77915&&_l!=78427&&_l!=78939&&_l!=79451&&_l!=81499&&_l!=82523&&_l!=83547&&_l!=84571&&_l!=85083&&_l!=85595&&_l!=87131&&_l!=87643&&_l!=89179&&_l!=90203&&_l!=92763&&_l!=93275&&_l!=94299&&_l!=94811&&_l!=97883&&_l!=98395&&_l!=99419&&_l!=101467&&_l!=101979&&_l!=103003&&_l!=103515&&_l!=104027&&_l!=105563&&_l!=108635&&_l!=109147&&_l!=110683&&_l!=111707&&_l!=112219&&_l!=112731&&_l!=113243&&_l!=113755&&_l!=114779&&_l!=115291&&_l!=115803&&_l!=116315&&_l!=116827&&_l!=117339&&_l!=119899&&_l!=120411&&_l!=120923&&_l!=121435&&_l!=122971&&_l!=123995&&_l!=124507&&_l!=125019&&_l!=128091&&_l!=128603&&_l!=129115&&_l!=129627&&_l!=131163&&_l!=131675&&_l!=133211&&_l!=133723&&_l!=134235&&_l!=134747&&_l!=136283&&_l!=136795&&_l!=138331&&_l!=140379)break;kl(36),xl(91),kl(257),Dn(),nf()}}function Sf(){Vl.startNonterminal("TypeswitchStatement",Pl),Sl(253),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37);for(;;){kl(35),Nl(),Tf(),kl(113);if(Hl!=88)break}Sl(109),kl(95),Hl==31&&(Sl(31),kl(255),Nl(),hi()),kl(70),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("TypeswitchStatement",Pl)}function xf(){xl(253),kl(22),xl(34),kl(267),Y(),xl(37);for(;;){kl(35),Nf(),kl(113);if(Hl!=88)break}xl(109),kl(95),Hl==31&&(xl(31),kl(255),pi()),kl(70),xl(220),kl(270),Qa()}function Tf(){Vl.startNonterminal("CaseStatement",Pl),Sl(88),kl(262),Hl==31&&(Sl(31),kl(255),Nl(),hi(),kl(30),Sl(79)),kl(260),Nl(),ms(),kl(70),Sl(220),kl(270),Nl(),Ka(),Vl.endNonterminal("CaseStatement",Pl)}function Nf(){xl(88),kl(262),Hl==31&&(xl(31),kl(255),pi(),kl(30),xl(79)),kl(260),gs(),kl(70),xl(220),kl(270),Qa()}function Cf(){Vl.startNonterminal("VarDeclStatement",Pl);for(;;){kl(98);if(Hl!=32)break;Nl(),B()}Sl(262),kl(21),Sl(31),kl(255),Nl(),hi(),kl(157),Hl==79&&(Nl(),ds()),kl(145),Hl==52&&(Sl(52),kl(267),Nl(),_f());for(;;){if(Hl!=41)break;Sl(41),kl(21),Sl(31),kl(255),Nl(),hi(),kl(157),Hl==79&&(Nl(),ds()),kl(145),Hl==52&&(Sl(52),kl(267),Nl(),_f())}Sl(53),Vl.endNonterminal("VarDeclStatement",Pl)}function kf(){for(;;){kl(98);if(Hl!=32)break;j()}xl(262),kl(21),xl(31),kl(255),pi(),kl(157),Hl==79&&vs(),kl(145),Hl==52&&(xl(52),kl(267),Df());for(;;){if(Hl!=41)break;xl(41),kl(21),xl(31),kl(255),pi(),kl(157),Hl==79&&vs(),kl(145),Hl==52&&(xl(52),kl(267),Df())}xl(53)}function Lf(){Vl.startNonterminal("WhileStatement",Pl),Sl(267),kl(22),Sl(34),kl(267),Nl(),G(),Sl(37),kl(270),Nl(),Ka(),Vl.endNonterminal("WhileStatement",Pl)}function Af(){xl(267),kl(22),xl(34),kl(267),Y(),xl(37),kl(270),Qa()}function Of(){Vl.startNonterminal("VoidStatement",Pl),Sl(53),Vl.endNonterminal("VoidStatement",Pl)}function Mf(){xl(53)}function _f(){Vl.startNonterminal("ExprSingle",Pl);switch(Hl){case 137:Ll(236);break;case 174:Ll(233);break;case 250:Ll(232);break;case 152:case 243:case 253:Ll(229);break;default:_l=Hl}switch(_l){case 16009:case 16046:case 116910:case 119945:case 128649:Z();break;case 17560:Sn();break;case 17651:ln();break;case 141562:Tn();break;case 17661:mn();break;default:Pf()}Vl.endNonterminal("ExprSingle",Pl)}function Df(){switch(Hl){case 137:Ll(236);break;case 174:Ll(233);break;case 250:Ll(232);break;case 152:case 243:case 253:Ll(229);break;default:_l=Hl}switch(_l){case 16009:case 16046:case 116910:case 119945:case 128649:et();break;case 17560:xn();break;case 17651:cn();break;case 141562:Nn();break;case 17661:gn();break;default:Hf()}}function Pf(){Vl.startNonterminal("ExprSimple",Pl);switch(Hl){case 77:Ll(231);break;case 218:Ll(234);break;case 219:Ll(235);break;case 110:case 159:Ll(237);break;case 103:case 129:case 235:Ll(230);break;default:_l=Hl}if(_l==133851){_l=Kl(9,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ho(),_l=-6}catch(a){_l=-11}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(9,Pl,_l)}}switch(_l){case 16001:case 16107:on();break;case 97951:case 98463:Oo();break;case 97902:case 98414:_o();break;case 98010:Bo();break;case-6:case 98011:Po();break;case 15975:Wo();break;case 85102:Bf();break;case 85151:Ff();break;case 85210:qf();break;case-11:Uf();break;case 85069:Wf();break;default:Pn()}Vl.endNonterminal("ExprSimple",Pl)}function Hf(){switch(Hl){case 77:Ll(231);break;case 218:Ll(234);break;case 219:Ll(235);break;case 110:case 159:Ll(237);break;case 103:case 129:case 235:Ll(230);break;default:_l=Hl}if(_l==133851){_l=Kl(9,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{Ho(),Jl(9,t,-6),_l=-13}catch(a){_l=-11,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(9,t,-11)}}}switch(_l){case 16001:case 16107:un();break;case 97951:case 98463:Mo();break;case 97902:case 98414:Do();break;case 98010:jo();break;case-6:case 98011:Ho();break;case 15975:Xo();break;case 85102:jf();break;case 85151:If();break;case 85210:Rf();break;case-11:zf();break;case 85069:Xf();break;case-13:break;default:Hn()}}function Bf(){Vl.startNonterminal("JSONDeleteExpr",Pl),Sl(110),kl(56),Sl(166),kl(264),Nl(),Yr(),Vl.endNonterminal("JSONDeleteExpr",Pl)}function jf(){xl(110),kl(56),xl(166),kl(264),Zr()}function Ff(){Vl.startNonterminal("JSONInsertExpr",Pl);switch(Hl){case 159:Ll(56);break;default:_l=Hl}_l=Kl(10,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(159),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),Jl(11,f,-1)}catch(m){Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,f,-2)}_l=-2}}_l==-1&&(xl(81),kl(69),xl(211),kl(267),Df()),_l=-1}catch(g){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(10,Pl,_l)}switch(_l){case-1:Sl(159),kl(56),Sl(166),kl(267),Nl(),_f(),Sl(163),kl(267),Nl(),_f();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),_l=-1}catch(m){_l=-2}Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,Pl,_l)}}_l==-1&&(Sl(81),kl(69),Sl(211),kl(267),Nl(),_f());break;default:Sl(159),kl(56),Sl(166),kl(267),Nl(),hl(),Sl(163),kl(267),Nl(),_f()}Vl.endNonterminal("JSONInsertExpr",Pl)}function If(){switch(Hl){case 159:Ll(56);break;default:_l=Hl}_l=Kl(10,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(159),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),Jl(11,f,-1)}catch(m){Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,f,-2)}_l=-2}}_l==-1&&(xl(81),kl(69),xl(211),kl(267),Df()),Jl(10,t,-1),_l=-3}catch(g){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(10,t,-2)}}switch(_l){case-1:xl(159),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df();switch(Hl){case 81:Ll(69);break;default:_l=Hl}if(_l==108113){_l=Kl(11,Pl);if(_l==0){var a=Dl,f=Pl,l=Hl,c=Bl,h=jl,p=Fl,d=Il,v=ql;try{xl(81),kl(69),xl(211),kl(267),Df(),Jl(11,f,-1)}catch(m){Dl=a,Pl=f,Hl=l,Hl==0?Zl=f:(Bl=c,jl=h,Fl=p,Fl==0?Zl=h:(Il=d,ql=v,Zl=v)),Jl(11,f,-2)}_l=-2}}_l==-1&&(xl(81),kl(69),xl(211),kl(267),Df());break;case-3:break;default:xl(159),kl(56),xl(166),kl(267),pl(),xl(163),kl(267),Df()}}function qf(){Vl.startNonterminal("JSONRenameExpr",Pl),Sl(218),kl(56),Sl(166),kl(264),Nl(),Yr(),Sl(79),kl(267),Nl(),_f(),Vl.endNonterminal("JSONRenameExpr",Pl)}function Rf(){xl(218),kl(56),xl(166),kl(264),Zr(),xl(79),kl(267),Df()}function Uf(){Vl.startNonterminal("JSONReplaceExpr",Pl),Sl(219),kl(82),Sl(261),kl(64),Sl(196),kl(56),Sl(166),kl(264),Nl(),Yr(),Sl(270),kl(267),Nl(),_f(),Vl.endNonterminal("JSONReplaceExpr",Pl)}function zf(){xl(219),kl(82),xl(261),kl(64),xl(196),kl(56),xl(166),kl(264),Zr(),xl(270),kl(267),Df()}function Wf(){Vl.startNonterminal("JSONAppendExpr",Pl),Sl(77),kl(56),Sl(166),kl(267),Nl(),_f(),Sl(163),kl(267),Nl(),_f(),Vl.endNonterminal("JSONAppendExpr",Pl)}function Xf(){xl(77),kl(56),xl(166),kl(267),Df(),xl(163),kl(267),Df()}function Vf(){Vl.startNonterminal("CommonContent",Pl);switch(Hl){case 12:Sl(12);break;case 23:Sl(23);break;case 277:Sl(277);break;case 283:Sl(283);break;default:yl()}Vl.endNonterminal("CommonContent",Pl)}function $f(){switch(Hl){case 12:xl(12);break;case 23:xl(23);break;case 277:xl(277);break;case 283:xl(283);break;default:bl()}}function Jf(){Vl.startNonterminal("ContentExpr",Pl),Xa(),Vl.endNonterminal("ContentExpr",Pl)}function Kf(){Va()}function Qf(){Vl.startNonterminal("CompDocConstructor",Pl),Sl(119),kl(87),Nl(),yl(),Vl.endNonterminal("CompDocConstructor",Pl)}function Gf(){xl(119),kl(87),bl()}function Yf(){Vl.startNonterminal("CompAttrConstructor",Pl),Sl(82),kl(258);switch(Hl){case 276:Sl(276),kl(267),Nl(),G(),Sl(282);break;default:Nl(),Ha()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(12,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(12,Pl,_l)}}switch(_l){case-1:Sl(276),kl(88),Sl(282);break;default:Nl(),yl()}Vl.endNonterminal("CompAttrConstructor",Pl)}function Zf(){xl(82),kl(258);switch(Hl){case 276:xl(276),kl(267),Y(),xl(282);break;default:Ba()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(12,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),Jl(12,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(12,t,-2)}}}switch(_l){case-1:xl(276),kl(88),xl(282);break;case-3:break;default:bl()}}function el(){Vl.startNonterminal("CompPIConstructor",Pl),Sl(216),kl(251);switch(Hl){case 276:Sl(276),kl(267),Nl(),G(),Sl(282);break;default:Nl(),Ia()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(13,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),_l=-1}catch(a){_l=-2}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(13,Pl,_l)}}switch(_l){case-1:Sl(276),kl(88),Sl(282);break;default:Nl(),yl()}Vl.endNonterminal("CompPIConstructor",Pl)}function tl(){xl(216),kl(251);switch(Hl){case 276:xl(276),kl(267),Y(),xl(282);break;default:qa()}kl(87);switch(Hl){case 276:Ll(277);break;default:_l=Hl}if(_l==144660){_l=Kl(13,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{xl(276),kl(88),xl(282),Jl(13,t,-1),_l=-3}catch(a){_l=-2,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(13,t,-2)}}}switch(_l){case-1:xl(276),kl(88),xl(282);break;case-3:break;default:bl()}}function nl(){Vl.startNonterminal("CompCommentConstructor",Pl),Sl(96),kl(87),Nl(),yl(),Vl.endNonterminal("CompCommentConstructor",Pl)}function rl(){xl(96),kl(87),bl()}function il(){Vl.startNonterminal("CompTextConstructor",Pl),Sl(244),kl(87),Nl(),yl(),Vl.endNonterminal("CompTextConstructor",Pl)}function sl(){xl(244),kl(87),bl()}function ol(){Vl.startNonterminal("PrimaryExpr",Pl);switch(Hl){case 184:Ll(256);break;case 216:Ll(254);break;case 276:Ll(277);break;case 82:case 121:Ll(259);break;case 96:case 244:Ll(93);break;case 119:case 202:case 256:Ll(139);break;case 6:case 70:case 72:case 73:case 74:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 93:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 111:case 112:case 113:case 118:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 141:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 186:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 206:case 212:case 213:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 228:case 229:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(92);break;default:_l=Hl}if(_l==2836||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==36116||_l==37140||_l==37652||_l==38164||_l==38676||_l==39700||_l==40212||_l==40724||_l==41236||_l==41748||_l==42260||_l==42772||_l==43284||_l==43796||_l==44308||_l==45332||_l==45844||_l==46356||_l==46868||_l==47892||_l==48404||_l==49428||_l==49940||_l==50452||_l==51988||_l==52500||_l==53012||_l==53524||_l==54036||_l==54548||_l==55572||_l==56084||_l==56596||_l==57108||_l==57620||_l==58132||_l==60692||_l==61204||_l==61716||_l==62228||_l==62740||_l==63252||_l==63764||_l==64276||_l==64788||_l==65812||_l==66324||_l==67348||_l==67860||_l==68372||_l==68884||_l==69396||_l==69908||_l==70420||_l==72468||_l==74516||_l==75028||_l==76052||_l==77076||_l==77588||_l==78100||_l==78612||_l==79124||_l==79636||_l==81684||_l==82196||_l==82708||_l==83220||_l==83732||_l==84244||_l==84756||_l==85268||_l==85780||_l==87316||_l==87828||_l==88340||_l==89364||_l==90388||_l==91412||_l==92436||_l==92948||_l==93460||_l==94484||_l==94996||_l==95508||_l==98068||_l==98580||_l==99604||_l==101652||_l==102164||_l==102676||_l==103188||_l==103700||_l==104212||_l==105748||_l==108820||_l==109332||_l==110868||_l==111892||_l==112404||_l==112916||_l==113428||_l==113940||_l==114964||_l==115476||_l==115988||_l==116500||_l==117012||_l==117524||_l==120084||_l==120596||_l==121108||_l==121620||_l==123156||_l==124180||_l==124692||_l==125204||_l==127252||_l==127764||_l==128276||_l==128788||_l==129300||_l==129812||_l==130324||_l==131348||_l==131860||_l==133396||_l==133908||_l==134420||_l==134932||_l==136468||_l==136980||_l==138516||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(14,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{bl(),_l=-10}catch(a){_l=-11}Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(14,Pl,_l)}}switch(_l){case 8:case 9:case 10:case 11:oi();break;case 31:li();break;case 34:di();break;case 44:mi();break;case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:Si();break;case 141514:yi();break;case 141568:wi();break;case 32:case 78:case 120:case 124:case 145:case 152:case 165:case 167:case 185:case 191:case 226:case 227:case 242:case 243:case 253:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14969:case 14970:case 14971:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14994:case 14996:case 14998:case 14999:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15014:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15034:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:os();break;case-10:case 27412:yl();break;case-11:ll();break;case 68:ml();break;case 278:al();break;default:Li()}Vl.endNonterminal("PrimaryExpr",Pl)}function ul(){switch(Hl){case 184:Ll(256);break;case 216:Ll(254);break;case 276:Ll(277);break;case 82:case 121:Ll(259);break;case 96:case 244:Ll(93);break;case 119:case 202:case 256:Ll(139);break;case 6:case 70:case 72:case 73:case 74:case 75:case 77:case 79:case 80:case 81:case 83:case 84:case 85:case 86:case 88:case 89:case 90:case 91:case 93:case 94:case 97:case 98:case 101:case 102:case 103:case 104:case 105:case 106:case 108:case 109:case 110:case 111:case 112:case 113:case 118:case 122:case 123:case 125:case 126:case 128:case 129:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 141:case 146:case 148:case 150:case 151:case 153:case 154:case 155:case 159:case 160:case 161:case 162:case 163:case 164:case 166:case 170:case 171:case 172:case 174:case 176:case 178:case 180:case 181:case 182:case 186:case 192:case 194:case 198:case 199:case 200:case 201:case 203:case 206:case 212:case 213:case 218:case 219:case 220:case 221:case 222:case 224:case 225:case 228:case 229:case 234:case 235:case 236:case 237:case 240:case 248:case 249:case 250:case 251:case 252:case 254:case 257:case 260:case 261:case 262:case 263:case 266:case 267:case 270:case 274:Ll(92);break;default:_l=Hl}if(_l==2836||_l==3348||_l==4372||_l==4884||_l==5396||_l==5908||_l==16148||_l==16660||_l==17684||_l==18196||_l==20756||_l==21780||_l==22804||_l==23316||_l==23828||_l==24340||_l==27924||_l==28436||_l==30484||_l==34068||_l==35092||_l==36116||_l==37140||_l==37652||_l==38164||_l==38676||_l==39700||_l==40212||_l==40724||_l==41236||_l==41748||_l==42260||_l==42772||_l==43284||_l==43796||_l==44308||_l==45332||_l==45844||_l==46356||_l==46868||_l==47892||_l==48404||_l==49428||_l==49940||_l==50452||_l==51988||_l==52500||_l==53012||_l==53524||_l==54036||_l==54548||_l==55572||_l==56084||_l==56596||_l==57108||_l==57620||_l==58132||_l==60692||_l==61204||_l==61716||_l==62228||_l==62740||_l==63252||_l==63764||_l==64276||_l==64788||_l==65812||_l==66324||_l==67348||_l==67860||_l==68372||_l==68884||_l==69396||_l==69908||_l==70420||_l==72468||_l==74516||_l==75028||_l==76052||_l==77076||_l==77588||_l==78100||_l==78612||_l==79124||_l==79636||_l==81684||_l==82196||_l==82708||_l==83220||_l==83732||_l==84244||_l==84756||_l==85268||_l==85780||_l==87316||_l==87828||_l==88340||_l==89364||_l==90388||_l==91412||_l==92436||_l==92948||_l==93460||_l==94484||_l==94996||_l==95508||_l==98068||_l==98580||_l==99604||_l==101652||_l==102164||_l==102676||_l==103188||_l==103700||_l==104212||_l==105748||_l==108820||_l==109332||_l==110868||_l==111892||_l==112404||_l==112916||_l==113428||_l==113940||_l==114964||_l==115476||_l==115988||_l==116500||_l==117012||_l==117524||_l==120084||_l==120596||_l==121108||_l==121620||_l==123156||_l==124180||_l==124692||_l==125204||_l==127252||_l==127764||_l==128276||_l==128788||_l==129300||_l==129812||_l==130324||_l==131348||_l==131860||_l==133396||_l==133908||_l==134420||_l==134932||_l==136468||_l==136980||_l==138516||_l==140564||_l==141588||_l==142612||_l==144660){_l=Kl(14,Pl);if(_l==0){var e=Dl,t=Pl,n=Hl,r=Bl,i=jl,s=Fl,o=Il,u=ql;try{bl(),Jl(14,t,-10),_l=-14}catch(a){_l=-11,Dl=e,Pl=t,Hl=n,Hl==0?Zl=t:(Bl=r,jl=i,Fl=s,Fl==0?Zl=i:(Il=o,ql=u,Zl=u)),Jl(14,t,-11)}}}switch(_l){case 8:case 9:case 10:case 11:ui();break;case 31:ci();break;case 34:vi();break;case 44:gi();break;case 17414:case 17478:case 17480:case 17481:case 17482:case 17483:case 17485:case 17487:case 17488:case 17489:case 17491:case 17492:case 17493:case 17494:case 17496:case 17497:case 17498:case 17499:case 17501:case 17502:case 17505:case 17506:case 17509:case 17510:case 17511:case 17512:case 17513:case 17514:case 17516:case 17517:case 17518:case 17519:case 17520:case 17521:case 17526:case 17527:case 17530:case 17531:case 17533:case 17534:case 17536:case 17537:case 17539:case 17540:case 17541:case 17542:case 17543:case 17544:case 17545:case 17549:case 17554:case 17556:case 17558:case 17559:case 17561:case 17562:case 17563:case 17567:case 17568:case 17569:case 17570:case 17571:case 17572:case 17574:case 17578:case 17579:case 17580:case 17582:case 17584:case 17586:case 17588:case 17589:case 17590:case 17592:case 17594:case 17600:case 17602:case 17606:case 17607:case 17608:case 17609:case 17610:case 17611:case 17614:case 17620:case 17621:case 17626:case 17627:case 17628:case 17629:case 17630:case 17632:case 17633:case 17636:case 17637:case 17642:case 17643:case 17644:case 17645:case 17648:case 17656:case 17657:case 17658:case 17659:case 17660:case 17662:case 17664:case 17665:case 17668:case 17669:case 17670:case 17671:case 17674:case 17675:case 17678:case 17682:xi();break;case 141514:bi();break;case 141568:Ei();break;case 32:case 78:case 120:case 124:case 145:case 152:case 165:case 167:case 185:case 191:case 226:case 227:case 242:case 243:case 253:case 14854:case 14918:case 14920:case 14921:case 14922:case 14923:case 14925:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14936:case 14937:case 14938:case 14939:case 14941:case 14942:case 14944:case 14945:case 14946:case 14949:case 14950:case 14951:case 14952:case 14953:case 14954:case 14956:case 14957:case 14958:case 14959:case 14960:case 14961:case 14966:case 14967:case 14969:case 14970:case 14971:case 14973:case 14974:case 14976:case 14977:case 14979:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14989:case 14994:case 14996:case 14998:case 14999:case 15001:case 15002:case 15003:case 15007:case 15008:case 15009:case 15010:case 15011:case 15012:case 15014:case 15018:case 15019:case 15020:case 15022:case 15024:case 15026:case 15028:case 15029:case 15030:case 15032:case 15034:case 15040:case 15042:case 15046:case 15047:case 15048:case 15049:case 15050:case 15051:case 15054:case 15060:case 15061:case 15064:case 15066:case 15067:case 15068:case 15069:case 15070:case 15072:case 15073:case 15076:case 15077:case 15082:case 15083:case 15084:case 15085:case 15088:case 15092:case 15096:case 15097:case 15098:case 15099:case 15100:case 15102:case 15104:case 15105:case 15108:case 15109:case 15110:case 15111:case 15114:case 15115:case 15118:case 15122:us();break;case-10:case 27412:bl();break;case-11:cl();break;case 68:gl();break;case 278:fl();break;case-14:break;default:Ai()}}function al(){Vl.startNonterminal("JSONSimpleObjectUnion",Pl),Sl(278),kl(273),Hl!=281&&(Nl(),G()),Sl(281),Vl.endNonterminal("JSONSimpleObjectUnion",Pl)}function fl(){xl(278),kl(273),Hl!=281&&Y(),xl(281)}function ll(){Vl.startNonterminal("ObjectConstructor",Pl),Sl(276),kl(274),Hl!=282&&(Nl(),hl()),Sl(282),Vl.endNonterminal("ObjectConstructor",Pl)}function cl(){xl(276),kl(274),Hl!=282&&pl(),xl(282)}function hl(){Vl.startNonterminal("PairConstructorList",Pl),dl();for(;;){if(Hl!=41)break;Sl(41),kl(267),Nl(),dl()}Vl.endNonterminal("PairConstructorList",Pl)}function pl(){vl();for(;;){if(Hl!=41)break;xl(41),kl(267),vl()}}function dl(){Vl.startNonterminal("PairConstructor",Pl),_f(),Sl(49),kl(267),Nl(),_f(),Vl.endNonterminal("PairConstructor",Pl)}function vl(){Df(),xl(49),kl(267),Df()}function ml(){Vl.startNonterminal("ArrayConstructor",Pl),Sl(68),kl(272),Hl!=69&&(Nl(),G()),Sl(69),Vl.endNonterminal("ArrayConstructor",Pl)}function gl(){xl(68),kl(272),Hl!=69&&Y(),xl(69)}function yl(){Vl.startNonterminal("BlockExpr",Pl),Sl(276),kl(277),Nl(),$a(),Sl(282),Vl.endNonterminal("BlockExpr",Pl)}function bl(){xl(276),kl(277),Ja(),xl(282)}function wl(){Vl.startNonterminal("FunctionDecl",Pl),Sl(145),kl(255),Nl(),Ha(),kl(22),Sl(34),kl(94),Hl==31&&(Nl(),U()),Sl(37),kl(148),Hl==79&&(Nl(),El()),kl(118);switch(Hl){case 276:Sl(276),kl(277),Nl(),$a(),Sl(282);break;default:Sl(133)}Vl.endNonterminal("FunctionDecl",Pl)}function El(){Vl.startNonterminal("ReturnType",Pl),Sl(79),kl(260),Nl(),ms(),Vl.endNonterminal("ReturnType",Pl)}function Sl(e){Hl==e?(Nl(),Vl.terminal(i.TOKEN[Hl],Bl,jl>Gl?Gl:jl),Dl=Bl,Pl=jl,Hl=Fl,Hl!=0&&(Bl=Il,jl=ql,Fl=0)):Ml(Bl,jl,0,Hl,e)}function xl(e){Hl==e?(Dl=Bl,Pl=jl,Hl=Fl,Hl!=0&&(Bl=Il,jl=ql,Fl=0)):Ml(Bl,jl,0,Hl,e)}function Tl(e){var t=Dl,n=Pl,r=Hl,i=Bl,s=jl;Hl=e,Bl=Yl,jl=Zl,Fl=0,Pa(),Dl=t,Pl=n,Hl=r,Hl!=0&&(Bl=i,jl=s)}function Nl(){Pl!=Bl&&(Dl=Pl,Pl=Bl,Vl.whitespace(Dl,Pl))}function Cl(e){var t;for(;;){t=ec(e);if(t!=22){if(t!=36)break;Tl(t)}}return t}function kl(e){Hl==0&&(Hl=Cl(e),Bl=Yl,jl=Zl)}function Ll(e){Fl==0&&(Fl=Cl(e),Il=Yl,ql=Zl),_l=Fl<<9|Hl}function Al(e){Hl==0&&(Hl=ec(e),Bl=Yl,jl=Zl)}function Ol(e){Fl==0&&(Fl=ec(e),Il=Yl,ql=Zl),_l=Fl<<9|Hl}function Ml(e,t,r,i,s){throw t>Ul&&(Rl=e,Ul=t,zl=r,Wl=i,Xl=s),new n.ParseException(Rl,Ul,zl,Wl,Xl)}function Jl(e,t,n){$l[(t<<4)+e]=n}function Kl(e,t){var n=$l[(t<<4)+e];return typeof n!="undefined"?n:0}function ec(e){var t=!1;Yl=Zl;var n=Zl,r=i.INITIAL[e],s=0;for(var o=r&4095;o!=0;){var u,a=n<Gl?Ql.charCodeAt(n):0;++n;if(a<128)u=i.MAP0[a];else if(a<55296){var f=a>>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n<Gl?Ql.charCodeAt(n):0;f>=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]<a)){u=i.MAP2[12+h];break}l=h+1}if(l>c){u=0;break}}}s=o;var p=(u<<12)+o-1;o=i.TRANSITION[(p&15)+i.TRANSITION[p>>4]],o>4095&&(r=o,o&=4095,Zl=n)}r>>=12;if(r==0){Zl=n-1;var f=Zl<Gl?Ql.charCodeAt(Zl):0;return f>=56320&&f<57344&&--Zl,Ml(Yl,Zl,s,-1,-1)}if(t)for(var d=r>>9;d>0;--d){--Zl;var f=Zl<Gl?Ql.charCodeAt(Zl):0;f>=56320&&f<57344&&--Zl}else Zl-=r>>9;return(r&511)-1}r(e,t);var n=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return Ql},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=Ql.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+Ql.substring(e.getBegin(),Math.min(Ql.length,e.getBegin()+64))+"..."},this.parse_XQuery=function(){Vl.startNonterminal("XQuery",Pl),kl(275),Nl(),o(),Sl(25),Vl.endNonterminal("XQuery",Pl)};var _l,Dl,Pl,Hl,Bl,jl,Fl,Il,ql,Rl,Ul,zl,Wl,Xl,Vl,$l,Ql,Gl,Yl,Zl};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&4095;for(var i=0;i<284;i+=32){var s=i,o=(i>>5)*3694+n-1,u=o>>1,a=u>>2,f=r.EXPECTED[(o&1)+r.EXPECTED[(u&3)+r.EXPECTED[(a&3)+r.EXPECTED[a>>2]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[70,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,38,30,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,38,38],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,355,371,387,423,423,423,415,339,331,339,331,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,440,440,440,440,440,440,440,324,339,339,339,339,339,339,339,339,401,423,423,424,422,423,423,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,338,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,70,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,30,30,30,30,30,30,30,30,30,30,30,30,38,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,38,30,38,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,38,38,38,38,38,38,38,38,38,38,38,38,30,30,38,38,38,38,38,38,38,69,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,38,30,38,30,30,38],r.INITIAL=[1,12290,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287],r.TRANSITION=[42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,25651,25666,25670,25670,25670,18189,25670,25670,25670,25670,18201,25670,25670,25670,25670,18176,25670,25671,18217,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,18730,20976,20988,20999,21015,25420,18732,21040,42516,42516,42516,27632,42516,42516,51474,31122,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,21056,21084,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,23286,21107,42516,42516,42516,39416,42516,42516,43470,47286,25568,42516,42516,42516,42516,23672,41495,21126,21160,42516,42516,42516,27632,42516,42516,35938,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25556,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21176,21248,42516,42516,42516,50595,42516,42516,42445,42516,25917,23619,21211,21279,21269,21226,21240,44419,21040,42516,42516,42516,27632,21302,42516,32247,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,19871,21321,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,21344,26008,18612,18632,18596,21349,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42510,42516,42516,42516,48894,42515,42516,51366,42516,21365,42504,21403,42515,21410,42516,27599,27612,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,21426,42516,42516,42516,22170,42516,42516,21445,42516,42516,21468,21481,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,24484,42516,42516,42516,42516,42516,42516,42517,21497,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,21513,25598,18486,18508,51408,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,25358,21538,42516,42516,42516,29996,42516,42516,26519,46446,25383,42516,42516,42516,42516,25736,28473,18232,21557,42516,42516,42516,27632,42516,42516,51474,21573,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,19060,21591,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,23074,23089,21619,21619,21619,21672,21614,21619,21624,23096,21640,21745,21688,21665,21655,21732,21703,21716,21040,42516,42516,42516,33326,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,21761,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,45317,42516,42516,42516,49458,21798,42516,22640,21804,25917,45316,42516,21821,21844,21828,21860,21869,21885,42516,42516,42516,29550,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,21901,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,21944,42516,42516,42516,48069,42516,42516,42516,26308,36543,25445,25454,21937,25455,21960,21985,21998,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,18888,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,26329,37275,42655,22014,22031,22014,22046,42653,22015,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,22071,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,26891,42516,42516,42516,48069,22092,42516,23653,22130,40293,22116,22186,22191,22191,22207,26888,44587,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,18247,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,35843,22232,22249,22232,22264,35841,22233,22289,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,46363,42516,33841,42516,34304,43899,22305,22071,36154,42516,42516,42516,42516,28243,22657,22322,22657,22657,22341,33347,46316,46316,39789,38147,35514,38147,38147,22359,22382,42516,42516,42516,42516,42516,28815,42516,22405,22426,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,47355,26569,42516,42516,42516,42516,42516,45225,42516,42516,32981,50880,22657,22657,22657,30360,22467,39622,46316,22501,46316,22343,36422,42625,38147,22520,38147,27826,41766,42516,42516,42516,42516,42516,49148,42516,23255,22657,44467,22657,22657,30361,22539,42077,46316,46316,46316,30525,38147,40186,38147,38147,34440,41769,42516,42516,20027,37487,42516,28242,22657,22657,36250,37745,46316,46316,44329,37798,38147,38147,43834,27827,30836,42516,42516,19405,22558,38368,22576,22657,40730,22597,46316,36583,22617,38147,40469,22638,42516,25905,42516,34153,22656,33064,46073,46316,22674,22710,27827,22690,51145,42516,32408,22729,37572,22752,32120,22683,29050,30609,22771,38961,22813,36803,22874,22893,22911,28238,43147,27775,22913,22451,22736,46400,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,50215,25917,42516,42516,42516,42516,42516,45715,23059,23112,42516,42516,42516,27632,42516,42516,37325,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,23128,46363,42516,42516,42516,34304,42516,42516,18360,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,22341,46316,46316,46316,39789,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,28815,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,23154,42516,42516,42516,46371,42516,42516,42516,42516,25917,35960,23175,23206,23195,23229,35959,23179,21040,42516,42516,42516,27632,42516,42516,51474,27227,42516,43023,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,23254,42516,42516,42516,48069,42516,42516,42516,19968,25917,42516,42516,42516,42516,42516,42762,23271,23302,42516,42516,42516,27632,42516,42516,21380,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,23318,46363,42516,42516,42516,34304,42516,42516,23344,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,22341,46316,46316,46316,39789,38147,38147,38147,38147,40896,23370,23409,42516,42516,42516,42516,38331,23429,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,23450,23383,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,50700,22540,46316,46316,46316,46316,47852,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,29796,22539,46316,46316,46316,46316,23533,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,48371,42516,42516,42516,31492,32078,42516,42516,23557,25917,18721,49121,23587,23594,23610,42516,43878,23635,23651,42516,42516,33439,23669,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,25038,24355,23991,25028,23804,18270,40105,18293,23688,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,23724,24084,23749,23789,24317,23827,23849,23904,24015,23917,23946,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,23969,24689,24310,25086,25092,23974,23990,24416,24845,24007,23833,24977,24993,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,24031,23930,24046,24073,24057,24100,24137,24664,24240,24198,24251,24225,24986,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,24267,24283,24299,24348,24333,24371,24167,24428,24402,23773,24444,24474,35639,19379,39467,19401,41728,19421,19500,24458,19544,24500,24558,24572,24588,24604,24182,24745,24620,24636,24767,19696,19712,19728,19753,19773,19830,19435,19514,24680,24514,19528,24705,24152,24757,19947,19984,20043,20080,20119,20157,20667,24542,24528,24731,24830,24209,24939,20235,20264,20301,24783,24799,24815,24715,24861,20381,20397,19814,23733,24877,24893,20503,25039,24968,23864,24927,24955,25015,20652,18443,23763,24386,25055,24651,25071,25108,25159,25175,25191,25243,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,27003,42516,42516,42516,48069,25296,42516,42516,25291,40518,25312,25320,25320,25320,25327,27168,25343,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25399,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,18963,25373,18652,18689,18711,18748,18695,25415,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,19337,25436,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,25471,25509,25525,20579,19301,19596,25541,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,25584,19614,19632,19650,25620,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,21541,28730,28739,28739,28739,28746,47533,25636,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,27653,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25687,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51268,23158,42516,42516,42516,48069,42516,42516,42516,42516,25917,22795,25710,25710,25710,25717,23159,22797,21040,25733,42516,42516,27632,42516,42516,51474,42516,42516,44769,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25752,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,26066,26075,42516,42516,42516,42907,42516,42516,42516,42516,25917,26405,25775,25775,25775,25782,28588,26407,25798,25814,42516,42516,27632,42516,42516,51474,42516,42516,23413,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,25831,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,25857,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,25891,42516,42516,42516,42516,48069,25942,42516,42516,28970,33768,42516,42516,42516,25933,25960,26180,25944,25980,42516,42516,42516,27632,42516,42516,51474,27927,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,25996,26028,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,42516,42516,42516,42516,42516,41865,26051,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,26178,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,23464,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,26196,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,26216,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,31151,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,31154,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,22877,22539,46316,46316,46316,46316,32774,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,22786,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26258,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,48694,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,28605,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,47769,26274,26287,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,26303,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,26324,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,35004,26345,26373,26362,26396,35005,26346,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,37963,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,26423,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,42516,42516,42516,42516,42516,42516,42517,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,47727,42516,26460,26483,26467,42516,47735,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,26499,20264,20301,20317,20346,20333,20349,20365,26535,20397,20422,20606,20438,26551,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,29068,42516,42516,42516,51537,26585,26616,29663,26601,26633,26690,26699,26715,26730,26742,26758,26771,26099,19999,42516,26787,26162,26806,41856,26832,26883,26907,26946,30733,26962,26998,27019,27054,46783,31896,27070,46885,46348,36728,27120,42516,42516,34304,27137,37896,42516,27163,34995,39190,42516,27184,43650,22657,22657,22657,27203,27401,46316,46316,41985,48318,38147,38147,38147,37213,40896,22382,42516,27222,48046,42516,27243,27263,27280,42516,42516,27038,20763,27308,27328,22657,22657,27363,27386,27419,35266,46316,30482,27448,27495,27524,27566,38147,35889,38740,46095,27585,26152,27628,42516,45564,42516,47310,23487,42516,46936,27648,27669,27685,34339,22657,27729,22984,44673,27748,45967,46316,27773,39768,32782,27791,37607,38147,27824,22485,27843,27859,27882,27899,42516,27922,31758,27943,23255,33056,27962,22657,42185,33093,27982,30091,46316,35423,43042,32774,28017,38147,38147,42363,28033,23138,28062,40096,28115,41486,28137,21969,22956,28160,22657,46191,35558,28176,28197,32038,49740,47969,28214,27827,28233,42899,42516,21253,42516,38368,42934,43766,40730,37393,48025,36583,51021,44713,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,28260,28298,33550,28320,28341,28379,28401,28421,26921,40729,36585,44924,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,28445,42516,42516,51537,42516,42516,42516,42516,31409,28464,42516,28489,28496,28512,28528,28541,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,42942,46314,28557,30860,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,28583,23487,28604,45602,42516,42516,38368,22657,22657,22657,44648,28621,22541,46316,46316,46316,40008,44805,38147,38147,38147,38147,41449,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,35762,23510,42516,32305,42516,42516,28652,43395,23255,28671,22657,22657,22657,28690,28706,46316,46316,46316,37589,32774,28762,38147,38147,38147,44356,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,23013,26674,44310,41661,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,28784,42516,42516,51537,42516,28813,42516,28831,36313,28851,28860,28876,28891,28903,28919,28932,26099,42516,42516,33807,29427,42516,42516,28948,42516,28965,42516,42516,42516,25275,42516,28986,44283,46314,29021,22622,37863,32069,42516,29066,42516,34304,29084,49128,42516,45291,29103,36853,42516,39408,30216,37513,22657,22657,22657,29138,29162,46316,46316,48917,29187,29203,38147,38147,40896,22382,23471,42516,42516,37970,42516,41320,23487,39926,29222,42516,42516,38368,29257,38293,22657,29296,38374,29315,31567,38618,38779,46316,44805,42631,29346,29367,48610,38147,32923,26115,26152,42516,42516,35359,42516,36267,23487,42516,42516,42516,38370,22657,22657,38875,29587,30360,22540,46316,46316,49716,48753,22343,30533,38147,38147,47896,47206,27826,35762,29388,42516,42516,42516,29423,42516,29443,23255,22657,22657,22657,43545,22877,22539,46316,46316,49625,46316,32774,38147,38147,38147,29464,34440,41769,42516,42516,19074,42516,46902,29483,22657,45738,22657,46191,46316,28001,46316,32038,38147,48630,38147,27827,29518,29546,42516,39530,20864,38368,29566,29583,46250,46316,29603,36583,29623,29640,40469,42516,42516,42516,29661,38373,22657,29679,46316,51108,36586,38147,50541,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,29702,29722,29738,29754,28244,40729,36585,22448,28385,36584,34366,22755,31692,34720,29778,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,26790,42516,42516,51537,42516,29812,25227,42516,31450,29831,29840,29856,29871,29878,29894,29907,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,31072,31070,42516,32276,32283,40826,29686,35273,29923,34810,28721,42516,35352,29943,34304,42516,29968,36872,42516,42516,29988,30012,34471,30028,22581,34160,30064,24121,30107,48780,30128,30172,30191,29624,22523,47650,28217,40896,22382,42516,42516,42516,42735,42516,30232,23487,42516,42516,42516,27906,38368,22657,22657,22657,26867,38374,22541,46316,46316,46316,37425,44805,38147,38147,38147,38147,30252,50615,30272,30304,42516,42516,42516,30320,30338,23487,42516,42516,27104,21782,30358,30377,22657,22657,30395,30434,30481,30498,46316,46316,30515,51071,30551,30568,38147,38147,30585,35762,23510,42516,42516,42516,42516,42516,30625,23255,30648,22657,22657,30668,22877,30687,46316,46316,34855,46316,32837,38147,38147,43217,38147,34440,41769,45029,42516,30729,42516,21024,28242,29299,22657,30749,46191,50174,46316,30776,32038,38147,30812,48472,27827,22690,23708,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,37071,42516,42516,38373,22657,31523,46316,43307,36586,38147,39352,22690,34920,42516,38372,43148,46316,38137,38147,30829,36804,38368,28385,28404,30535,27085,28354,31634,30852,30600,30074,38197,42103,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,21805,30876,42516,51537,49762,30895,42516,30918,43094,30942,30951,30967,30982,30994,31010,31023,26099,42516,31039,39573,31055,20844,31088,31151,40795,31438,31118,31138,31170,31208,31224,31259,31325,39316,31341,31357,42305,39859,31243,31397,39944,31425,33906,31466,31484,36903,42516,42516,38844,42516,28243,31508,40831,43064,26242,31546,31583,49551,32501,35578,43001,31607,35023,30465,31623,22382,40777,39e3,31658,40711,31716,41838,31747,42230,41234,31783,31813,31829,31873,31912,31936,31952,31988,32019,35868,32054,38034,47598,32094,32110,32136,39813,32152,32186,47170,32233,26152,32263,42516,49503,42516,32299,32321,32337,32365,32386,32406,32424,22657,35078,32463,30760,22540,32487,46316,47681,50971,43200,30533,32517,38147,37625,38481,40265,32560,23510,18666,32576,32596,39698,32624,37664,32645,31965,32706,47478,32693,32731,32762,40433,46316,32798,32825,32774,32853,32872,49013,32893,32919,41769,42516,21429,46706,42516,42516,32939,25143,43551,27695,46191,47568,50517,33128,32038,44391,37914,44027,27827,22690,51501,22158,32960,23571,32997,33045,33080,33109,33144,33160,33196,33225,33259,33289,25257,41794,33305,33321,22943,47433,44826,33342,33363,33392,45913,37247,22690,23238,33434,38372,47456,46316,49977,38147,33455,33478,32944,28385,33515,33536,30206,38372,33571,38971,31372,39304,33587,33611,33627,33643,33674,33720,28385,36584,33273,33742,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,33784,42516,51537,33805,33823,29972,43389,33866,33897,42516,33882,33940,33947,33963,33976,26099,42516,42516,20279,27632,42516,42516,42516,42516,42516,41269,42516,41261,42516,41268,25123,41628,38176,37400,33992,34810,28721,42516,34012,42516,34304,34012,42516,42516,42516,34029,34013,37295,42516,28243,34045,22657,22657,22657,34069,34103,46316,46316,48318,47159,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,23487,42516,42516,45931,42516,38368,22657,22657,22657,44213,38374,22541,46316,46316,46316,42968,44805,38147,38147,38147,38147,34120,32923,26115,26152,42516,42516,42516,42516,42516,23487,42516,46602,42516,38370,22657,22657,30041,22657,30360,22540,46316,46316,42268,46316,22343,30533,38147,38147,44e3,38147,27826,35762,23510,42516,42516,42516,42516,42516,39273,23255,22657,22657,22657,37139,22877,22539,46316,46316,49643,46316,32774,38147,38147,38147,48815,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,46191,46316,46316,46316,32038,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,46733,42516,42516,42516,36647,22657,28384,27995,46316,49984,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,44874,43254,31692,29762,34139,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,38852,42516,42516,51280,34176,34185,34201,34208,34215,34231,34244,26099,42516,42516,42516,27632,42516,42516,34401,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,37878,42057,42516,42516,34304,42516,42516,42516,42516,34260,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,34278,42516,28081,38368,22657,22657,22657,22657,38374,42076,46316,46316,46316,46316,46212,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,47761,42516,34299,19108,42516,42516,19113,34320,22657,22657,34338,22657,30360,22540,46316,34104,46316,46316,22343,30533,38147,42837,38147,38147,27826,34355,42516,42516,42516,34399,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,38663,42516,34417,28242,22657,22657,38760,37745,46316,46316,50996,37798,38147,38147,38147,34438,22690,34456,18364,34487,34538,24114,31309,31274,34559,34565,27432,34581,44559,30458,34604,22076,42516,19757,34657,29792,34679,47804,33555,31559,34736,35451,34758,22690,41150,39051,35676,32439,38610,34776,34795,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,34833,34871,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,18277,42516,42516,34899,42516,42516,42516,36062,42516,36065,42516,42516,34947,34936,36697,22657,34963,27757,38148,48007,34986,42516,42516,29815,34304,21387,19116,42516,38636,42516,42516,42516,42516,28243,22657,22657,43325,22657,27401,46316,46316,30705,48318,38147,38147,38147,35021,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,35376,42516,35039,38368,22657,22657,22657,22657,50945,22541,46316,46316,46316,46316,38717,38147,38147,38147,38147,38147,41757,22444,42516,35059,42516,42516,42516,42516,42516,42516,42516,39196,38370,35077,22657,22657,22657,30360,46821,46316,46316,46316,46316,22343,23541,38147,38147,38147,38147,27826,41766,42516,42516,42516,50318,42516,42516,42516,23255,22657,22657,22657,46040,30361,22539,46316,46316,46316,34080,30525,38147,38147,38147,42204,34440,41769,42516,42516,46608,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,23434,42516,22428,38373,22657,28384,46316,46316,36586,38147,27827,35094,34920,22560,38372,50497,46316,40393,38147,43581,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,44978,42516,51537,30322,33499,42482,50012,50022,18763,18772,35115,35131,35143,35159,35172,26099,42516,42516,42516,36498,41847,42516,42516,42516,31671,41803,35188,36161,35205,35221,43491,35237,35256,29171,35289,37464,35305,42516,42516,42516,35339,42516,28090,35375,42516,42516,28949,35314,39266,28243,48989,48108,22657,35392,47509,37433,35422,34970,35439,27808,35467,38147,35501,35536,22382,42516,35594,39908,48509,34515,35614,42516,18299,18417,42516,35655,35672,48116,22657,43129,29280,37184,22541,48019,46316,38117,35692,47637,38147,35719,38147,35737,27472,35753,22444,42516,42516,42516,42516,35778,48535,35820,42516,42516,42516,23024,36244,22657,22657,29502,38418,35859,41980,46316,46316,48733,41934,49389,35884,38147,38147,40673,49832,35905,42516,36909,35924,35976,35997,18673,36033,34522,36081,47410,36098,36117,36141,36177,46316,36198,32809,43953,30446,38147,43626,42012,36214,36230,23328,20636,45205,36266,36283,36301,35981,36329,26662,46771,36350,36390,48253,35703,36411,36456,40231,38454,41461,37653,42516,42516,37028,36479,40577,43121,45398,22366,37772,48725,38205,36432,50457,40469,42516,25485,42516,36514,38373,22657,28384,46316,46316,36586,38147,27827,36626,36531,42516,28996,31885,36559,36579,36602,36619,36804,36642,28385,28404,30535,42423,49897,44263,36663,36694,43147,27775,22913,28244,40729,36585,22448,36713,36744,34366,22755,31692,28429,36774,36790,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,39935,42516,51537,42516,42516,42516,42516,25917,42516,29952,39942,19158,38671,36820,36833,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,44206,22657,27401,46316,46317,46316,48318,38147,38147,34588,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,19484,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,36849,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,36869,42516,42516,42516,42516,42516,42516,42516,42516,46294,22657,22657,22657,22657,30360,49232,46316,46316,46316,46316,22343,30796,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,46996,42516,51537,42516,23354,42516,42753,36888,36925,36938,36954,36961,36977,36993,37006,26099,42516,37022,42516,27632,42516,41516,26816,42516,42516,37044,42516,37049,18537,37065,37087,37117,44086,37200,37235,39844,33658,37263,42516,42516,35791,42516,42516,34914,28072,42516,37291,22389,37311,18926,37716,37348,43712,48153,37366,37382,46316,37416,40607,40193,49587,35520,37449,27508,37480,37934,42516,42516,42516,42516,41144,42516,42516,42516,42516,42516,38368,37503,36125,22657,37529,39594,37550,37566,48265,46316,37588,30713,29645,37605,37623,38799,38147,37641,22444,42516,42516,37688,42516,42516,49494,24999,42516,42516,42516,38370,22657,22657,29494,37704,37740,22540,46316,46316,40001,37761,37795,30533,38147,38147,37825,37814,37848,41766,42516,37894,42516,42516,51139,42516,42516,23255,22657,41398,22657,22657,30361,22539,42274,46316,46316,46316,30525,38147,37912,38147,38147,34440,41769,37930,36490,42516,34663,37950,28242,37986,22657,22657,46812,38013,46316,46316,45485,49261,38147,38147,48821,22690,49311,42516,42516,38050,38368,41404,22657,40730,47057,46316,36583,48937,38147,40469,42516,21575,42516,42516,38373,22657,38069,46316,45780,36586,38147,40463,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,38089,46273,22694,23034,40134,34366,22755,38105,38164,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,26200,42516,51537,42516,27946,42516,42516,47834,20951,20960,38221,38236,38243,38259,38272,26258,42516,38551,42516,27632,42516,34262,42516,42516,42516,38553,42516,38546,21091,38552,21774,38288,31700,35273,38309,34810,28721,42516,42516,38329,34304,42516,29241,23811,23953,42516,42516,42516,38347,38364,33022,22657,38390,38410,28636,46316,29607,39628,38434,42370,38147,48603,38470,47663,38504,38541,39253,39681,42516,42516,42516,42516,41197,42516,42516,42516,38368,31857,22657,38569,22657,38374,22541,38589,28198,46316,46316,44805,29206,27800,32877,38147,38147,32923,22444,42516,28144,42516,38634,42516,45188,42516,38652,42516,42516,38370,39723,22657,22657,38687,30379,22540,23043,46316,46316,38710,22895,30533,49398,38147,38147,38733,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,33462,42516,42516,42516,42516,38368,38756,22657,40730,38776,46316,36583,38795,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,38815,36586,49663,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,49485,38368,44256,40047,45820,38834,38868,32210,38891,28238,43147,27775,22913,28244,40729,36585,22448,28385,38914,38935,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,27187,42516,30926,42516,34543,38987,37672,39016,39067,39107,39092,39111,39076,39127,39140,26099,42516,25841,23701,20829,39222,20009,42516,39156,41252,39175,39212,32746,21195,39238,26847,39289,45668,39332,39368,34810,28721,32390,42516,42516,26444,30879,36010,28099,40787,39398,38525,26035,39432,39483,44460,39503,41633,22657,32003,22601,46316,49709,48318,47976,47889,30552,38147,33209,39523,39917,39159,42516,39546,42516,42516,40976,42516,42516,42516,39568,39487,37157,22657,39589,22657,38374,39610,45436,46316,39644,46316,44805,27542,39661,38313,38147,38147,32923,22444,42516,42516,42516,42516,30632,42516,42516,21187,39678,39697,39714,22657,22657,50559,22657,39739,39760,46316,46316,38818,46316,39784,39805,38147,38147,32856,38147,39829,41766,46006,39893,48391,49682,42516,39960,34641,39976,38394,40024,37997,33010,30361,22539,40063,40121,43817,40157,30525,40868,40175,40209,40247,34760,44916,20285,40281,34623,40309,51090,50324,48429,40325,40344,40364,39645,40409,40428,40449,38147,40485,49825,39382,22690,40506,42516,42516,22216,40534,39507,48098,30083,50926,38024,33595,45640,28567,40469,40559,42516,40087,26129,45371,31289,28384,40593,41927,40637,40665,40689,34614,41203,40707,27312,43148,48295,28405,40861,22683,50287,38368,40727,40746,40649,40767,40811,22827,40847,33407,49334,48207,33243,28244,40729,36585,22448,28385,36584,41673,40884,31692,28429,22929,40922,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,40951,51537,42516,42744,40972,42516,27292,40992,41001,41017,41032,41039,41055,41068,26099,20248,41084,41102,41129,21286,41166,42516,41182,41219,41286,31731,41302,41336,41352,41368,41384,34883,41420,41436,48349,41477,42516,42240,27121,34422,42516,41511,25267,41532,41575,42516,42516,41594,28243,22657,31843,41613,34053,27401,40159,35568,34847,41649,38147,27550,41689,41744,40896,22382,42516,26380,42516,41578,42516,44762,41785,42516,41828,27866,41270,19255,22657,41881,41897,22657,35406,41916,43971,44095,46316,46316,41950,22851,37219,42001,38147,29467,32923,42028,42044,42516,46644,19385,42516,42516,42516,42516,42516,34632,38370,22657,27339,43920,22657,30360,22540,46316,44514,36395,46316,22343,30533,38147,35478,49592,38147,27826,41766,42516,42516,21305,42516,31235,42516,42516,23255,22657,22657,22657,22657,20064,42074,46316,46316,46316,46316,42093,38147,38147,38147,38147,50734,41769,50664,35952,42516,42516,42516,41113,22657,42177,22657,45759,46316,43945,46316,45799,38147,45843,38147,27827,29041,42127,42516,42516,42516,48412,30671,22657,38073,44692,46316,33520,45533,38147,40469,42146,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,43588,34920,42516,42166,40348,33173,48271,42201,22683,42220,41559,42256,42290,42321,33756,44448,35547,42352,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,32531,22755,42386,28429,22929,42410,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,39045,51537,42516,42516,42439,19363,42461,42498,42516,31468,42533,42547,42563,42576,26099,42516,42516,25867,27632,42516,42516,42516,42592,26617,42516,42516,26436,25867,42516,30236,31920,49620,42612,36440,34810,28721,42516,42647,42516,34304,42516,44608,36046,42516,35598,42516,42516,36057,51481,44194,32471,36334,37148,42671,32033,42687,33121,42706,38488,30256,30569,29372,32199,42722,42778,42516,42799,42516,49524,50043,35835,42516,42516,42516,42516,38368,22657,22657,37175,22657,38374,22541,46316,46316,47563,46316,44805,38147,38147,38147,42836,38147,32923,42853,42888,35656,42516,42516,42516,50763,30902,39460,48700,42516,38370,22657,42923,22657,22657,37350,22540,46316,42958,46316,46316,27403,30533,38147,42991,38147,38147,27826,41766,42516,29233,42516,42516,42516,43017,42516,23255,22657,22657,49093,22657,22325,22539,46316,46316,43039,46316,30788,38147,38147,35485,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,36017,42516,42516,43058,22657,22657,40730,46316,46316,36583,38147,38147,48843,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,46409,43080,43110,32715,30112,30535,40935,43145,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,35061,42516,42516,42516,28279,28282,18254,28275,31684,43164,43182,29146,43216,43233,29330,43270,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,43287,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,43306,46316,46316,46316,46316,50852,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,43323,28384,43789,46316,36586,43341,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,50278,22100,42516,42516,50243,42516,29530,43375,33789,43361,43411,43418,43434,43447,26099,42516,33915,33924,27632,40956,43463,43486,41243,43507,26512,26972,26982,27147,41812,42783,43531,49966,43567,43604,44058,40078,42516,42516,42516,23213,43642,34502,43666,43684,38517,42516,42516,35323,43702,22657,43728,30048,43746,43782,42975,46316,43805,34708,43833,43850,27569,49274,49874,43871,42516,42516,42516,45270,35189,42516,42516,43894,43668,42516,42814,33726,22657,43915,22657,37724,49041,43936,46316,43969,46316,45680,43987,44022,33996,38147,38147,44043,44074,22444,42516,42516,19081,42516,44111,44127,42516,43290,44154,44166,44182,22657,37101,44229,44279,30652,44299,46316,42336,45461,44326,40412,44345,38147,44372,45987,44388,34123,41766,28121,42516,42516,24911,44407,50085,42516,44435,27732,44483,22975,22657,30361,22539,44504,42690,46316,46316,30525,28768,44537,44554,38147,40691,44575,42516,44603,44624,42516,42516,28242,44645,22657,22657,44664,44689,46316,46316,49378,44708,38147,38147,49798,22690,42516,44729,42516,42516,20056,22657,22657,34376,46316,51047,22477,38147,44538,40469,42516,22273,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,44749,26230,34694,49922,44785,36803,38372,46315,38146,47702,44821,44842,44862,21913,40729,36585,22448,28385,36584,40621,44890,44940,42111,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,46959,51537,45028,47264,44964,45002,45045,45083,45015,45108,45123,45139,45155,45168,26099,45184,28448,42516,28797,42516,42516,30342,42516,42516,45204,45221,31185,28655,31192,26648,48147,38948,50978,45241,34810,28721,45262,45286,25875,34304,35804,42516,42516,42516,42516,45307,45333,42516,45362,45387,27370,22657,22657,45422,45457,45477,46316,48318,45501,22713,45531,38147,40896,22382,41086,42516,42516,45549,45580,42516,42516,42516,42516,42516,41312,38368,32670,37166,22657,22657,33029,22541,45618,47052,46316,46316,45690,35721,38147,45637,38147,38147,45656,22444,42516,42516,45593,44733,42516,45600,35835,45706,27030,38348,45731,22657,22657,40543,26861,45754,45775,46316,46316,43191,44800,45796,45815,38147,38147,40256,45836,45859,28046,42867,49429,42516,25220,42516,19477,43271,20461,22657,22657,27347,45890,30361,22539,46316,48577,44521,46316,30525,38147,38147,46850,45910,34440,41769,42516,50831,45929,19737,42516,28242,22657,45947,43759,50887,46316,45965,46065,28181,38147,45983,46857,27827,22690,42516,42516,46003,44138,38368,22657,22657,40730,46316,46316,36583,38147,38147,29031,51383,46022,26136,47337,46039,22657,46056,46316,34383,36586,38147,46089,46111,34920,46149,46173,43148,46207,44846,46228,32903,36804,38368,46247,46266,45515,36803,38372,46315,38146,35099,35240,22504,22913,46289,46310,46333,36758,46387,47879,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,27247,51537,42516,42516,23393,42516,46425,46462,46474,46490,46505,46521,46537,46550,26099,46566,25493,25815,46587,26561,21328,46624,21598,42516,46636,46660,46669,46685,46722,46757,46799,32544,46837,46873,41704,47524,33832,37332,35627,34304,46901,42516,44629,46918,39031,46952,46975,47012,47022,48184,31972,27713,43730,47038,31642,47073,47098,47607,47121,47145,47186,47202,47222,47250,47280,47302,42058,42516,47326,47353,42516,42516,47371,47388,46928,47404,47426,47449,47472,29567,47494,47549,47584,47623,47679,36182,44805,36463,37832,40141,38147,32161,32170,47697,42516,45060,42596,50682,47718,42130,47751,46440,36515,21144,38370,47785,29270,22657,44488,47820,47850,47868,40376,46316,45441,47912,47938,47958,43617,38147,38919,47992,41766,29407,48041,42516,27096,48062,42516,50062,40568,48085,38573,48132,48169,30361,48200,48223,48241,48287,48311,47922,47129,22858,48334,43855,34440,40906,48365,50193,42516,22144,48387,48407,44243,48428,22657,49223,47234,48445,46316,47082,50795,48488,38147,33704,22690,42516,48504,48525,42516,20103,22966,48559,32447,40385,48575,48593,50156,48626,48646,48680,42516,33850,39552,21921,26930,48716,48749,48769,48802,45246,48837,48960,48859,48887,32658,28363,48910,33376,48933,48953,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,45621,46231,48976,39991,49005,49029,40039,49057,44903,22755,31692,28429,49073,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,49109,42516,42516,49144,42516,32608,18328,18337,49164,18337,18344,49180,49193,26099,42516,42516,42516,27632,20863,28835,42516,42516,42516,42516,28834,42516,20857,42516,28241,49209,31530,22841,49248,36678,30143,33493,42516,42516,34304,42516,42516,35043,49290,42516,42516,42516,38053,28243,49327,22657,22657,22658,49350,46316,46316,46316,31591,33687,38147,38147,38147,49366,49414,49451,42516,49474,49519,42516,42516,43686,45346,42516,46571,46157,38368,45949,40328,45406,25137,29005,22541,48786,34087,38601,49540,48459,38147,33697,39345,49573,33236,49608,22444,42516,19180,42516,50588,42516,42516,42516,18791,42516,42516,38370,38694,22657,22657,22657,30360,49641,32217,46316,46316,46316,22343,49659,38898,38147,38147,38147,27826,41766,46990,42516,49679,42516,42516,42516,42516,20094,31303,22657,22657,22657,30361,49698,46316,46316,46316,46316,30525,49732,38147,38147,38147,34440,35908,42516,42516,46023,49756,42516,29706,37130,22657,22657,39744,38128,46316,46316,49778,49814,38147,38147,49848,22690,22055,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,34322,43148,47105,28405,38446,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,49890,49913,49938,22448,28385,36584,34366,34779,33418,49954,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,5e4,50082,50038,50059,42516,32349,42516,20487,50078,34283,44986,50101,50114,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,50130,42394,35273,50148,34810,28721,42516,36285,32580,34304,42516,42516,42516,42516,42516,25759,42516,42516,28243,27704,22657,37534,22657,27401,50172,46316,38188,48318,29351,38147,30813,38147,40896,22382,42516,42516,42516,42516,42516,41597,42516,42516,42516,42476,42516,38368,22657,50132,22657,22657,38374,22541,46316,49557,46316,46316,44805,38147,38147,50449,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,50190,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,50209,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,50231,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,50266,42516,22306,42516,45067,50303,50340,42516,50365,50380,50394,50410,50423,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,45894,46314,50439,28325,41965,36365,42516,42516,42516,34304,42516,42516,42516,42516,25694,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,50473,42516,42516,42516,50491,22657,22657,22657,22657,30360,50513,46316,46316,46316,46316,22343,50533,38147,38147,38147,38147,27826,41766,42516,42516,29399,42516,42516,42516,42516,23255,22657,22657,50557,22657,50575,22539,46316,43245,46316,33180,30525,38147,47942,38147,38147,50611,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,26324,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,48543,50631,50644,26099,42516,42516,42516,27632,50660,42516,50680,42516,42516,42516,29122,42516,21452,29118,32973,50698,44948,35273,50716,34810,28721,42516,42516,42516,50750,27264,27883,43515,42516,42516,42516,42516,42516,28243,22657,43166,22657,49088,27401,46316,30696,30175,48318,38147,38147,50786,27533,40896,50811,50827,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,51530,42516,42516,42516,38370,22657,27966,22657,22657,27206,22540,46316,36563,46316,46316,48225,30533,38147,43345,38147,38147,27826,41766,21110,42516,42516,42516,42516,42516,42516,23255,36082,22657,22657,22657,30361,22539,50847,46316,46316,46316,30525,40490,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,42516,42516,42516,42516,46741,49861,51029,26099,24903,42516,42516,27632,42516,42516,20017,42516,42516,42516,42516,20023,42516,42516,50868,36101,46314,27462,29927,45874,41719,42516,29087,42516,34304,42516,42516,42516,42516,42516,42516,42516,42872,28243,22657,22657,22657,47797,27401,46316,46316,22542,48318,38147,38147,38147,27479,40896,22382,42516,50903,42516,42516,42516,42516,42516,42516,42150,42516,42516,38368,46183,22657,41900,22657,38374,22541,50922,46316,37779,46316,44805,36603,38147,38147,40222,38147,32923,22444,42516,50475,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,50942,22657,22657,30360,50961,30499,50994,46316,46316,22343,49789,39662,51012,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,48664,23255,22657,22657,32677,22657,28304,22539,46316,46316,51045,46316,51063,38147,38147,50725,38147,44006,41769,42516,42516,50906,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,48656,42516,42516,47372,42516,31381,22657,22657,34817,46316,46316,40751,38147,38147,40469,42516,42516,51087,42516,38373,28681,28384,46316,51106,36586,34742,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,51361,42516,42516,42516,42516,51537,42516,42516,42516,42516,25917,19962,42516,42516,42516,46741,49861,51029,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,28721,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,27401,46316,46316,46316,48318,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,46123,30288,30286,49299,30156,51124,22408,22410,49308,30152,46133,51161,51174,21040,42516,42516,42516,27632,42516,42516,31797,42516,42516,42516,42516,42516,42516,42516,32629,20505,20792,18990,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,51190,25598,18486,18508,19308,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,30409,42516,25917,39868,39877,51215,51230,51237,29448,51253,21040,42516,42516,42516,27632,42516,42516,51474,42516,42516,42516,23517,42516,42516,23514,32629,20505,21066,18953,21068,18866,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,18459,25598,18486,18508,51199,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,36374,42516,42516,42516,42516,31102,50349,51296,51323,51307,51330,32370,51346,21040,42516,42516,42516,27632,42516,42516,51474,51382,42516,26083,42516,42516,42516,26079,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,18315,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,51399,25598,18486,18508,21522,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,20235,20264,20301,20317,20346,20333,20349,20365,20381,20397,20422,20606,20438,20477,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,21141,42516,42516,42516,42516,48069,42516,42516,42516,42516,25917,42516,42516,42516,42516,42516,42516,42517,26099,42516,42516,42516,27632,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,28241,22657,46314,35273,38147,34810,46363,42516,42516,42516,34304,42516,42516,42516,42516,42516,42516,42516,42516,28243,22657,22657,22657,22657,22341,46316,46316,46316,39789,38147,38147,38147,38147,40896,22382,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38368,22657,22657,22657,22657,38374,22541,46316,46316,46316,46316,44805,38147,38147,38147,38147,38147,32923,22444,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,38370,22657,22657,22657,22657,30360,22540,46316,46316,46316,46316,22343,30533,38147,38147,38147,38147,27826,41766,42516,42516,42516,42516,42516,42516,42516,23255,22657,22657,22657,22657,30361,22539,46316,46316,46316,46316,30525,38147,38147,38147,38147,34440,41769,42516,42516,42516,42516,42516,28242,22657,22657,22657,37745,46316,46316,46316,37798,38147,38147,38147,27827,22690,42516,42516,42516,42516,38368,22657,22657,40730,46316,46316,36583,38147,38147,40469,42516,42516,42516,42516,38373,22657,28384,46316,46316,36586,38147,27827,22690,34920,42516,38372,43148,46316,28405,38147,22683,36804,38368,28385,28404,30535,36803,38372,46315,38146,28238,43147,27775,22913,28244,40729,36585,22448,28385,36584,34366,22755,31692,28429,22929,23e3,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,23494,42516,42516,45092,51424,51429,51429,51451,23492,51445,51467,42516,42516,42516,42516,42516,42516,51474,42516,42516,42516,42516,42516,42516,42516,32629,20505,21066,18953,21068,19019,18919,18270,40105,18293,51497,42516,42516,18360,42516,49435,42820,18380,18411,18395,18574,19226,18433,20169,51190,25598,18486,18508,19308,18465,25604,18492,18514,20728,18530,42516,30418,42516,42516,42516,50250,25964,50770,42516,18553,39446,18564,20175,20411,20131,20505,23879,18590,26008,18612,18632,18596,18470,18594,26012,18616,18636,20798,20741,20757,42516,18652,18689,18711,18748,18695,18788,42516,41546,48871,18807,18835,19802,18823,19840,25206,18851,18904,18942,18979,19680,19006,18851,18904,18942,18979,19680,19045,20750,46697,19097,19132,20936,31767,19148,19174,19196,20141,20921,19788,19212,19242,19278,25525,20579,19301,19596,19271,25518,20572,19294,19589,19324,19353,35639,19379,39467,19401,41728,19421,19500,24458,19544,19575,19614,19632,19650,19559,19612,19630,19648,19666,19029,19696,19712,19728,19753,19773,19830,19435,19449,19888,19905,19856,19887,19904,19921,19947,19984,20043,20080,20119,20157,20536,20191,20213,20542,20197,20219,19931,51517,20264,20301,20317,20346,20333,20349,20365,51553,20397,20422,20606,20438,20453,20503,21067,21068,20521,20558,20595,20622,20652,23888,18878,20683,20699,20715,20779,20814,20880,20890,20906,19463,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,42516,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,0,94506,90409,94506,94506,94506,94506,94506,94506,94506,94506,94506,365,94506,90409,94506,94506,94506,94506,94506,94506,94506,69632,73728,94506,94506,94506,94506,94506,65536,94506,12290,3,0,0,2183168,0,0,0,90409,94506,299,300,0,2134016,303,304,304,304,304,304,304,304,0,0,0,0,0,304,0,304,1,289,3,0,0,0,295,0,0,0,0,0,0,0,0,0,0,796,0,796,0,0,0,0,0,2424832,2433024,0,0,2457600,0,0,0,0,0,0,0,0,0,0,650,0,0,0,0,0,0,0,0,0,2904064,2908160,0,0,0,0,0,0,0,0,0,0,0,1685,1686,0,1688,0,0,0,0,3117056,0,0,0,0,0,0,0,365,365,0,0,0,0,0,0,448,0,0,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,474,559,582,559,582,559,559,582,0,0,0,2138112,0,0,0,0,0,0,0,0,0,0,0,0,0,2991,0,0,0,2772992,2805760,2830336,0,2863104,2920448,0,0,0,0,0,0,0,2805760,2920448,0,0,0,0,0,0,0,2732032,0,2179072,2179072,2179072,2179072,2424832,2433024,0,0,0,0,0,2920448,0,0,0,0,0,0,0,0,0,0,0,1702,0,1704,0,0,2179072,2830336,2179072,2179072,2863104,2179072,2179072,2179072,2179072,2920448,2179072,2179072,2179072,2179072,2179072,2179072,2126737,2126737,2126737,2126737,2126737,2593681,2126737,2126737,2126737,2126737,0,914,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,2125824,2125824,2125824,2125824,2723840,2125824,2732032,2772992,2125824,2125824,2125824,2805760,2125824,2830336,2125824,2125824,2863104,2125824,2125824,2125824,2125824,2920448,2125824,2125824,2125824,2125824,2125824,2920448,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3117056,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2457600,2125824,2125824,2125824,2125824,2183168,0,0,0,0,0,0,0,0,0,0,661,0,661,0,0,0,2408448,0,0,2584576,0,0,0,0,2838528,0,0,2838528,0,0,0,0,0,2179072,2179072,2179072,2408448,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2625536,2179072,2179072,0,2125824,2125824,2125824,2408448,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3125248,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2662400,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2801664,2813952,2125824,2125824,2801664,2813952,2125824,2838528,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2461696,0,0,0,0,0,0,0,0,0,0,0,0,2600960,0,0,0,0,0,0,2441,0,0,0,0,0,0,0,0,0,0,2493,2494,0,0,2497,0,2768896,2777088,2781184,0,2822144,0,0,2883584,0,0,0,0,0,0,0,0,0,0,0,0,3055616,0,0,0,3080192,3100672,3104768,0,0,0,0,3186688,0,0,0,0,0,0,0,307,204800,0,0,0,0,0,0,0,0,0,111051,111051,111051,111051,111051,111051,111051,111051,1,0,0,0,0,0,2797568,0,0,0,0,0,0,0,2850816,2867200,0,0,0,0,0,441,0,0,332,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,468,0,0,3133440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2131,0,0,0,0,0,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2461696,2465792,2179072,2768896,2777088,2781184,2797568,2822144,2179072,2179072,2179072,2883584,2179072,2912256,2179072,2179072,2179072,2179072,2179072,2179072,2523136,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2600960,0,0,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2461696,2465792,2125824,0,1142784,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2592768,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,24576,988,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2523136,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2600960,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,541,1272,541,541,541,541,2125824,2125824,2125824,2641920,2125824,2125824,2125824,2125824,2125824,2125824,2719744,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,2125824,2125824,2125824,2125824,2125824,2125824,299,0,0,0,299,0,300,0,0,0,2768896,2777088,2781184,2797568,2822144,2125824,2125824,2125824,2883584,2125824,2912256,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,2125824,2126812,2125824,2125824,2125824,2125824,2125824,2125824,3133440,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3207168,2125824,0,0,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,0,0,0,0,0,0,2510848,2514944,0,0,2125824,2125824,3133440,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3207168,2125824,2179072,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,300,0,0,0,0,0,0,2764,0,0,0,0,0,0,0,0,0,0,2059,2060,0,2062,2063,0,0,0,0,2605056,0,0,0,0,2887680,0,2924544,0,0,0,0,0,0,0,2108,0,0,0,0,0,0,0,0,0,0,0,0,0,1177,0,0,0,0,0,0,3162112,3170304,0,0,3219456,3035136,0,0,0,0,0,3072e3,3190784,0,0,0,0,0,0,0,0,2576384,0,0,0,0,0,0,0,334,0,0,334,0,0,334,0,0,0,0,0,0,0,2387968,0,0,0,0,0,0,0,0,0,0,0,2050,0,0,0,0,3121152,3141632,0,0,0,2924544,0,2682880,0,0,0,0,0,0,3112960,2387968,2924544,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3035136,2179072,2179072,3072e3,2179072,2179072,2179072,2179072,2699264,2179072,2715648,2179072,2723840,2179072,2732032,2772992,2179072,2179072,2179072,2805760,3121152,2179072,2179072,3141632,2179072,2179072,2179072,3170304,2179072,2179072,3190784,3194880,2179072,0,0,0,0,0,0,541,1734,541,541,541,541,541,541,1740,541,2125824,3190784,3194880,2125824,0,0,0,0,0,0,2387968,2125824,2125824,2125824,2420736,2125824,2125824,2125824,2125824,2125824,2453504,2125824,2473984,2125824,2736128,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2887680,2125824,2125824,2924544,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,0,2125824,2125824,2125824,2125824,2125824,3141632,2125824,2125824,2125824,3170304,2125824,2125824,3190784,3194880,2125824,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,299,0,300,3112960,3219456,2125824,2125824,3112960,3219456,2125824,2125824,3112960,3219456,0,0,0,0,0,0,0,347,0,405,0,0,0,0,0,405,3022848,0,0,3145728,0,3203072,0,0,0,0,0,0,0,0,0,0,0,2072,0,0,0,0,0,0,0,3067904,0,0,0,0,0,0,0,0,0,0,0,0,0,3003,0,0,0,0,0,2621440,0,3182592,2899968,0,2961408,0,0,2179072,2179072,2416640,2179072,2179072,2179072,2179072,2928640,2179072,2179072,2179072,2998272,2179072,2179072,2179072,2179072,3059712,2179072,2179072,2179072,2179072,3178496,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2494464,2125824,2125824,0,2179072,2125824,2125824,0,2179072,2125824,2125824,2985984,2985984,2985984,2985984,0,0,0,0,0,0,2490,0,0,0,0,0,0,0,0,0,335,0,0,0,0,0,0,2179072,2445312,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2551808,2179072,2179072,2179072,2179072,3178496,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2495377,2126737,2126737,2126737,2126737,2126737,3179409,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2495451,2126811,2895872,2916352,2179072,2179072,2945024,2179072,2179072,2994176,2179072,3002368,2179072,2179072,3022848,2179072,3067904,3084288,2125824,3096576,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3223552,0,0,2125824,2125824,2416640,3096576,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3223552,0,0,2125824,2125824,2416640,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3035136,2125824,2125824,3072e3,2125824,2125824,2125824,3121152,2125824,2125824,3141632,2125824,2125824,2125824,3170304,2125824,2125824,2125824,2125824,2445312,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2551808,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2637824,2125824,2125824,2125824,2125824,2727936,2752512,2125824,2125824,2125824,2125824,2842624,2846720,2842624,2846720,2125824,2895872,2916352,2125824,2125824,2945024,2125824,2125824,2994176,2125824,3002368,2125824,2125824,3022848,2125824,3067904,2125824,3067904,3084288,2125824,3096576,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3223552,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3039232,2125824,3063808,2125824,2125824,2125824,2125824,2125824,3100672,2547712,2596864,0,0,0,0,0,0,0,0,0,0,0,0,0,3178496,2670592,0,2744320,0,0,0,0,0,2928640,0,0,0,3059712,0,2543616,2666496,0,2633728,0,0,0,0,0,0,2494464,0,0,0,0,0,0,0,0,0,2780,0,0,0,0,2785,0,0,0,0,2957312,0,0,0,0,0,0,0,0,0,0,0,0,0,3188,0,0,0,0,3211264,0,0,0,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2494464,2179072,2179072,2179072,2707456,2179072,2736128,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2887680,2179072,2179072,2179072,2179072,2641920,2179072,2179072,2179072,2179072,2179072,2179072,2719744,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3137536,2126737,2126737,2499473,2126737,2126737,2126737,2556817,2565009,2179072,2514944,2179072,2179072,2179072,2543616,2547712,2179072,2179072,2596864,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3039232,2179072,3063808,2179072,2179072,2179072,2179072,3100672,2125824,2125824,2125824,2125824,2125824,3178496,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2494464,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,0,1080,1084,0,0,1088,2125824,2514944,2125824,2125824,2125824,2543616,2547712,2125824,2125824,2596864,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2928640,2125824,2125824,2125824,2998272,2125824,2125824,2125824,2125824,3059712,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3178496,2179072,2125824,2125824,2179072,2179072,2125824,2125824,2125824,2125824,0,2486272,0,0,0,0,0,2678784,2854912,3006464,2441216,0,0,0,0,0,0,0,0,0,2932736,2965504,0,0,3076096,0,0,0,0,0,444,0,0,0,0,0,0,0,0,0,0,407,0,0,0,0,0,0,2695168,3174400,2646016,2613248,2703360,0,0,0,0,2977792,0,0,3047424,3129344,0,0,0,0,0,645,0,0,648,649,0,0,0,0,0,0,0,725,0,0,0,0,0,0,0,0,0,743,0,0,0,0,0,0,0,0,0,0,0,0,2769,0,0,0,2981888,2396160,0,3153920,0,0,0,0,0,0,0,0,2740224,0,0,0,0,0,0,541,3027,541,541,541,541,541,541,541,541,541,2584,541,541,541,0,0,0,0,0,2793472,0,0,0,0,0,2469888,2506752,2756608,0,0,2580480,0,0,0,0,0,0,2517,0,0,0,0,0,0,0,0,541,541,541,3029,541,541,541,541,541,541,0,2396160,2400256,2179072,2179072,2441216,2179072,2469888,2179072,2179072,2179072,2519040,2179072,2179072,2179072,2179072,2179072,2179072,2801664,2813952,2179072,2838528,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2453504,2179072,2473984,2482176,2179072,2179072,2179072,2179072,2588672,2179072,2613248,2646016,2179072,2179072,2695168,2756608,2179072,2179072,2179072,2932736,2179072,2179072,2179072,2179072,2179072,3117056,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2584576,2179072,2179072,2125824,2125824,2125824,2519040,2125824,2125824,2125824,2125824,2588672,2125824,2613248,2646016,2125824,2125824,2695168,2756608,2125824,2125824,2125824,2125824,2932736,2125824,2125824,2125824,2125824,2125824,2932736,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3129344,2125824,2125824,3153920,3166208,3174400,2506752,2506752,2506752,0,3108864,3198976,0,0,3043328,0,3149824,2936832,0,2760704,3180,2437120,0,0,0,0,0,0,646,0,0,0,0,651,652,653,654,655,0,0,0,0,0,2953216,0,0,2826240,3158016,2428928,0,3018752,2764800,2572288,0,0,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,2741,0,0,0,0,0,3051520,2179072,2428928,2437120,2179072,2486272,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2654208,2678784,2760704,2764800,2854912,2969600,2179072,3006464,2179072,3018752,2179072,2179072,2179072,3149824,2125824,2428928,2437120,2969600,2125824,3006464,2125824,3018752,2125824,2125824,2125824,2125824,3149824,2125824,2428928,2437120,2125824,2486272,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2654208,2678784,2760704,2764800,2785280,2854912,2969600,2125824,3006464,2125824,3018752,2125824,2125824,2125824,2125824,3149824,2179072,3051520,2125824,3051520,2125824,3051520,0,2490368,2498560,0,0,0,0,2875392,0,0,0,3180,0,0,0,0,0,0,2834432,0,3227648,2568192,2564096,0,2940928,2179072,2179072,2498560,2179072,2179072,2179072,2555904,2564096,2179072,2179072,2179072,2617344,2179072,2179072,2179072,2179072,2179072,2179072,2662400,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3137536,2125824,2125824,2498560,2125824,2125824,2125824,2555904,2564096,2125824,2555904,2564096,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3137536,2940928,2940928,0,0,0,0,0,2748416,2879488,0,0,0,0,0,0,0,0,0,2519,0,0,0,0,0,541,2940928,0,0,0,0,0,2748416,2879488,0,3180,0,0,0,0,0,0,0,375,0,0,0,0,0,0,0,360,0,0,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2125824,0,2502656,0,0,3010560,0,0,0,0,0,0,0,0,2990080,2179072,2179072,2179072,3129344,2179072,2179072,3153920,3166208,3174400,2396160,2400256,2125824,2125824,2441216,2125824,2469888,2125824,2125824,2125824,2519040,2125824,2125824,2179072,2502656,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3010560,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2605056,2125824,2629632,2125824,2125824,2650112,2125824,2125824,2125824,2707456,2125824,2736128,2125824,2125824,2125824,2125824,2125824,2502656,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3010560,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3137536,2125824,2125824,2498560,2125824,2125824,2502656,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3010560,2125824,2125824,2125824,0,0,0,0,0,0,2739,0,0,0,0,0,0,0,2743,0,0,0,2592768,0,0,0,0,0,0,2179072,2179072,2179072,2179072,2179072,2592768,2179072,2179072,2179072,3129344,2179072,2179072,3153920,3166208,3174400,2397073,2401169,2126737,2126737,2442129,2126737,2470801,2125824,2125824,2449408,0,2535424,3031040,2859008,0,0,0,0,0,2179072,2449408,2179072,2535424,2179072,2609152,2179072,2859008,2179072,2179072,2179072,3031040,2125824,2449408,2125824,2535424,2125824,2609152,2125824,2859008,2125824,2125824,2125824,3031040,2125824,2125824,2449408,2125824,2535424,2125824,2609152,2125824,2859008,2125824,2125824,2125824,0,2179072,2125824,2125824,2457600,2179072,2179072,2179072,2179072,2457600,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,0,1727,0,0,1728,0,3031040,2125824,2527232,0,0,0,0,0,2179072,2527232,2179072,2179072,2179072,2179072,2179072,2125824,2126738,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3125248,2125824,2125824,2125824,2125824,2125824,2527232,2125824,2125824,2125824,2125824,2125824,3092480,2125824,2527232,2125824,2125824,2125824,2125824,2125824,3092480,0,0,0,0,0,693,0,0,0,0,0,0,365,365,365,0,0,0,0,0,707,708,0,0,0,0,0,714,0,0,0,0,0,0,703,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3020,3026944,0,0,0,2404352,2179072,2179072,2179072,2179072,3026944,2404352,2125824,2125824,2125824,2125824,3026944,0,2539520,0,2949120,2179072,2658304,2973696,2179072,2125824,2658304,2973696,2125824,2125824,2658304,2973696,2125824,0,2711552,256e4,2179072,256e4,2125824,256e4,2125824,0,2179072,2179072,2531328,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2605056,2179072,2629632,2179072,2179072,2650112,0,0,2809856,0,0,0,0,0,0,0,0,0,0,3088384,0,0,0,0,0,442,0,0,454,470,470,470,470,470,470,470,470,470,470,480,470,470,470,470,470,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,459,459,111051,459,459,459,459,459,459,459,459,459,111051,111051,111051,111051,111051,111051,111051,111051,111051,111051,459,111051,111051,111051,459,111051,111051,111051,111051,111051,0,0,0,0,0,0,0,0,0,2795,0,0,0,0,0,0,12290,3,0,0,2183168,0,0,0,0,0,299,300,0,2134016,303,304,2125824,1060,0,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,1060,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,662,0,662,0,0,0,0,303,118784,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2434,0,303,303,303,303,303,303,303,0,0,0,0,0,303,0,303,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2155,0,12290,3,0,0,2183168,0,0,0,0,0,33403,300,0,2134016,49791,304,2105632,12290,3,0,0,294,0,0,0,0,294,0,0,0,0,0,0,0,2124,0,0,0,0,0,0,0,0,0,788,814,0,814,809,0,0,0,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,122880,0,0,0,122880,0,122880,122880,122880,0,0,0,0,0,122880,0,0,122880,0,0,0,0,0,0,0,0,122880,0,0,0,0,0,0,0,0,0,0,0,0,3002,0,0,0,0,0,0,0,0,122880,122880,122880,122880,122880,122880,122880,122880,122880,0,0,122880,0,0,0,0,0,0,0,0,0,0,712,0,0,0,716,0,0,0,147456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2459,0,1092,0,2424832,2433024,0,0,2457600,0,0,0,0,0,0,0,0,0,0,728,0,0,0,0,0,1823,2125824,2125824,2125824,2408448,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,1919,2125824,2125824,2125824,0,0,0,131072,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,740,407,0,0,0,0,0,0,0,0,0,0,1158,0,0,0,0,0,0,131072,0,0,131072,131072,0,0,0,0,0,0,0,131072,0,0,131072,0,0,131072,0,0,0,0,135168,135168,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2756,0,0,0,0,135168,0,0,135168,0,0,0,0,0,0,0,0,0,0,735,0,797,0,0,0,0,0,0,0,135168,0,135168,135168,135168,135168,135168,135168,0,135168,135168,135168,135168,135168,135168,135168,0,0,0,0,0,135168,0,135168,1,12290,3,0,0,2183168,0,0,0,0,0,636,637,0,2134016,640,641,0,1361,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,987,2125824,2125824,2125824,2125824,0,304,139264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225709,0,12290,3,0,0,2183168,0,0,0,0,0,299,33406,0,2134016,303,49794,0,61440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3178,0,304,2424832,2433024,0,0,2457600,0,0,0,0,0,0,0,0,0,0,757,0,0,0,0,762,301,301,301,143661,371,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,301,143661,301,301,143661,301,301,301,143731,301,301,301,143731,69632,73728,301,301,143661,301,301,65536,301,301,301,301,301,143661,143661,143661,143661,143661,143661,143661,143661,143661,301,301,143661,301,301,301,301,301,301,301,301,301,366,301,0,143661,301,301,301,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,143661,301,301,301,143661,301,143661,143661,143661,143661,143661,143731,143661,143731,143731,143731,143731,143731,143731,143731,143661,143661,143661,143661,143661,143661,143661,143661,1,301,143661,301,143661,143661,143661,143661,143661,143661,301,0,301,0,301,301,301,301,301,301,301,301,301,143661,301,143661,143661,143661,143661,301,0,0,0,3117056,0,0,0,0,0,0,0,2200252,2200252,0,0,0,0,0,0,662,0,0,0,0,0,541,541,541,541,541,541,541,541,2168,541,541,541,0,0,0,0,0,155648,155648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,325,0,0,0,0,155648,155648,0,155648,155648,155648,155648,155648,155648,155648,155648,155648,0,0,0,0,155648,0,0,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,155648,0,0,0,0,0,155648,0,155648,0,0,0,0,0,155648,0,0,0,0,0,155648,155648,0,155648,155648,0,12290,3,0,0,2183168,126976,0,0,0,0,299,300,0,2134016,303,304,0,0,0,3117056,0,0,0,0,0,0,0,365,0,0,0,0,0,0,0,3563,0,541,541,541,541,541,541,541,541,541,3209,541,541,541,541,541,159744,159744,159744,159744,0,0,159744,0,0,0,0,0,0,0,0,159744,0,0,0,0,0,0,0,159744,159744,159744,163840,159744,159744,159744,159744,159744,0,0,0,0,0,0,0,0,0,2805,0,541,541,541,541,541,0,25162,0,0,0,159744,0,0,0,25162,25162,25162,159744,25162,25162,25162,25162,25162,25162,25162,25162,159744,159744,159744,159744,25162,159744,25162,1,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,167936,1,167936,167936,167936,167936,0,0,167936,0,0,0,0,0,0,0,0,167936,167936,167936,167936,167936,167936,167936,167936,167936,0,0,0,0,0,0,0,0,0,2976,0,0,0,0,0,0,0,0,0,2138112,1183,0,0,0,0,0,0,0,0,0,0,0,0,3168,0,0,0,0,0,0,0,0,172032,0,172032,0,0,0,0,0,0,0,0,0,365,0,293,0,0,0,348,172032,172032,0,0,172032,0,0,172032,172032,0,172032,0,0,0,0,172032,172032,0,0,0,0,0,0,0,0,0,0,172032,0,0,0,0,0,0,2777,0,0,0,0,0,0,2784,0,0,0,0,0,0,2986,2987,0,2988,0,2990,0,0,0,0,0,0,0,69632,73728,0,135168,135168,0,0,65536,135168,172032,0,172032,172032,0,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,172032,0,0,0,0,0,0,0,0,0,3014,0,0,0,0,0,0,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,176128,1,176128,176128,176128,176128,0,0,176128,0,0,0,0,0,0,0,0,176128,176128,176128,176128,176128,176128,176128,176128,176128,0,0,0,0,0,0,0,0,0,3175,0,0,0,0,0,0,0,3,78115,78115,293,0,634,0,0,0,299,300,0,2134016,303,304,1164,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,361,541,541,1308,541,541,541,541,541,541,541,541,541,541,541,541,541,0,0,2242,0,914,563,563,563,563,563,563,563,563,563,563,563,563,563,563,0,0,587,587,587,1203,541,587,563,541,541,541,541,541,563,563,563,563,3070,563,563,563,563,3074,563,563,587,587,587,587,587,1079,0,0,0,0,0,0,0,0,0,0,1102,0,0,0,0,0,0,0,229376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1134592,0,0,0,0,1691,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3201,563,563,587,587,587,587,0,0,0,0,0,0,0,0,0,0,541,541,541,541,3569,541,541,0,0,563,563,563,563,563,563,563,2251,563,563,563,563,563,563,587,3109,587,587,587,587,587,587,587,587,2407,587,587,587,587,587,2412,2413,563,563,2288,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3541,587,587,587,2375,587,587,587,587,587,587,587,587,587,587,587,587,587,1497,587,587,0,0,0,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1439,0,3007,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3317,541,541,541,541,3038,541,541,541,541,541,541,541,541,541,541,541,541,1300,541,541,541,563,563,563,3078,563,563,563,563,563,563,563,563,563,563,563,563,1401,563,563,563,587,587,587,587,3120,587,587,587,587,587,587,587,587,587,587,587,1042,587,587,587,587,0,3159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,155648,3214,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1359,563,563,563,587,3259,587,587,587,3262,587,587,587,587,587,587,587,541,541,563,563,587,587,0,0,0,0,0,0,0,0,0,0,3609,541,541,541,587,587,3270,587,587,587,587,587,587,587,587,587,587,587,587,587,1498,587,587,541,541,541,3330,3331,541,541,541,541,541,541,541,541,563,563,563,563,3581,563,563,563,563,563,3349,563,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,0,541,541,541,3406,541,541,541,541,563,563,563,563,563,563,3415,563,0,587,587,587,587,587,291,1079,0,0,0,0,0,0,0,0,0,249856,249856,249856,249856,249856,249856,249856,249856,1,587,3431,587,587,587,587,587,587,3437,587,587,587,3441,587,541,563,563,3473,563,563,563,563,3478,563,563,563,563,3483,563,563,563,563,977,563,563,563,563,0,587,587,587,587,587,587,1931,587,587,587,587,587,587,587,587,587,2678,587,587,587,2681,587,587,0,0,3456,541,541,541,541,541,541,541,541,541,541,541,541,541,0,2586,0,541,3471,563,563,563,563,563,563,563,563,563,563,563,563,563,563,0,2327,563,3487,587,587,587,587,587,587,587,587,587,587,587,587,587,587,0,0,563,563,587,587,587,587,0,0,541,541,563,563,587,587,0,541,541,541,3205,541,541,541,541,541,541,541,3210,541,541,541,541,541,541,2816,541,541,2820,541,541,541,541,541,541,541,541,3041,541,541,541,541,541,541,541,541,2556,541,541,541,541,541,541,541,541,2233,541,541,541,541,541,0,0,563,587,0,541,563,587,0,541,563,587,0,541,563,587,0,0,0,0,0,0,0,0,0,3510,0,0,0,0,541,541,541,541,541,2165,541,541,541,541,541,541,541,541,3616,563,563,563,563,563,563,563,2265,563,563,563,563,2270,563,563,563,184932,184932,184932,184932,184932,184932,184932,0,0,0,0,0,184932,0,184932,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,0,301,301,0,0,301,301,143661,301,301,301,301,301,301,301,301,301,301,301,143731,301,301,301,301,12290,3,78115,78115,293,0,0,0,0,0,299,300,0,2134016,303,304,587,0,0,188416,541,587,563,541,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,0,2731,0,0,0,0,305,0,0,0,0,0,0,0,0,0,0,0,0,0,249856,0,0,0,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,0,192972,0,1,0,0,0,0,0,192972,192972,192972,192972,192972,192972,192972,192972,192972,192972,0,0,192972,0,0,0,0,0,0,0,0,0,0,1145,365,365,0,0,1148,192972,192972,192972,0,192972,192972,192972,192972,192972,0,0,0,0,0,0,0,0,0,3304,0,3180,0,0,0,0,302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,407,407,407,407,407,407,407,0,0,0,0,0,407,0,407,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,118784,299,12290,3,78115,78115,293,0,0,0,0,0,299,300,0,302,303,304,587,0,0,740,541,587,563,541,541,541,541,541,563,563,563,563,587,587,587,587,0,0,2729,0,0,0,0,0,0,740,1184,0,0,0,0,1188,0,0,0,0,0,0,0,378,0,381,0,0,0,381,0,0,563,587,587,587,587,587,1079,1559,0,0,0,1565,0,0,0,1571,2034,0,0,0,0,1577,2036,0,0,0,0,0,0,0,397,0,0,0,0,0,397,0,0,0,0,0,1577,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,0,0,0,0,1188,1669,0,0,0,0,0,0,0,0,0,0,0,0,3177,0,0,0,563,563,587,587,587,587,1559,2030,0,0,0,0,1565,2032,0,0,0,0,0,0,2997,0,0,0,0,0,0,0,0,0,0,1586,1587,0,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,0,0,0,0,0,106496,0,0,0,0,0,0,2034,0,2036,0,0,0,0,0,0,0,0,0,0,0,0,0,1150976,0,0,0,0,0,563,563,563,563,2325,2652,0,0,0,0,587,587,587,587,587,587,587,587,587,587,587,587,587,2343,0,307,0,307,0,0,0,0,0,0,0,0,0,307,0,0,0,0,0,0,3011,0,0,0,0,3016,3017,0,3019,0,0,0,0,0,204800,204800,0,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,204800,205107,204800,204800,205106,205107,204800,205106,205106,204800,204800,0,0,0,0,0,0,0,0,0,122880,0,122880,122880,122880,122880,122880,12290,3,0,0,2183801,0,0,0,0,0,299,300,151552,2134016,303,304,0,212992,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,172032,0,0,151552,0,0,0,0,0,0,0,0,0,0,0,0,0,303,0,0,0,0,0,3117056,0,0,0,0,0,0,0,0,2200253,0,0,0,0,0,0,678,0,0,0,0,0,0,0,0,0,0,2977,0,0,0,0,0,0,914,2126737,2126737,2126737,2126737,2126737,2425745,2433937,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3138449,2126811,2126811,2499547,2126811,2126811,2126737,2724753,2126737,2732945,2773905,2126737,2126737,2126737,2806673,2126737,2831249,2126737,2126737,2864017,2126737,2126737,2126737,2126737,2126811,2126811,2126811,2126811,2126811,2593755,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3036123,2126811,2126811,3072987,2126811,2126811,2126811,3122139,2126811,2126737,2126737,2921361,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3117969,2126737,0,2126811,2126811,2126811,2126811,2126811,0,0,0,0,0,0,0,0,0,0,1190,0,0,0,0,0,2126811,2425819,2434011,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3126235,2126811,2126811,2126811,2126811,2126811,2626523,2126811,2126811,2126811,2126811,2126811,2126811,2700251,2126811,2716635,2126811,2724827,2126811,2733019,2773979,2126811,0,2502656,0,0,3010560,0,0,0,0,0,0,0,0,2990080,2179072,2179072,3125248,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2592768,2125824,2125824,2125824,2125824,2126811,2126811,2806747,2126811,2831323,2126811,2126811,2864091,2126811,2126811,2126811,2126811,2921435,2126811,2126811,2126811,0,2179072,2126811,2126737,2457600,2179072,2179072,2179072,2179072,2458513,2126737,2126737,2126737,2126737,2126737,2524049,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2601873,2126737,2126737,2458587,2126811,2126811,2126811,2126811,2183168,0,0,0,0,0,0,0,0,0,0,1206,0,1208,0,0,0,0,2126737,2126737,2126737,2409361,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,0,0,2126811,2126811,2126811,2409435,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2839515,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3118043,2126811,2126811,2126811,2126811,2126811,2126811,2126811,0,0,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2462609,2466705,2126737,2126737,2126737,2642833,2126737,2126737,2126737,2126737,2126737,2126737,2720657,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3040145,2126737,3064721,2126737,2126737,2126737,2126737,2126737,3101585,2769809,2778001,2782097,2798481,2823057,2126737,2126737,2126737,2884497,2126737,2913169,2126737,2126737,2126737,2126737,2126737,2126737,2626449,2126737,2126737,2126737,2126737,2126737,2126737,2700177,2126737,2716561,2126737,2126737,3134353,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3208081,2126737,0,0,0,0,0,0,3026,541,541,541,541,541,541,541,541,541,541,1352,541,541,541,541,541,0,0,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2462683,2466779,2126811,2126811,2126811,2126811,2126811,2929627,2126811,2126811,2126811,2999259,2126811,2126811,2126811,2126811,3060699,2126811,2126811,2126811,2126811,2454491,2126811,2474971,2483163,2126811,2126811,2126811,2126811,2126811,2126811,2532315,2126811,2126811,2126811,2446299,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2552795,2769883,2778075,2782171,2798555,2823131,2126811,2126811,2126811,2884571,2126811,2913243,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3130331,2126811,2126811,3154907,3167195,3175387,2506752,2507739,2507665,2126811,2126811,3134427,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3208155,2126811,2179072,2126811,2126811,2126811,2642907,2126811,2126811,2126811,2126811,2126811,2126811,2720731,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3040219,2126811,3064795,2126811,2126811,2126811,2126811,2126811,3101659,0,0,0,2388881,2126737,2126737,2126737,2421649,2126737,2126737,2126737,2126737,2126737,2454417,2126737,2474897,2483089,2126737,2126737,2126737,2126737,2126737,2126737,2532241,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2605969,2126737,2630545,2126737,2126737,2651025,2126737,2126737,2126737,2708369,2126737,2737041,2126737,2126737,2126737,2126737,2126737,2126737,2663313,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,0,0,988,2126811,2126811,2126811,2126811,3036049,2126737,2126737,3072913,2126737,2126737,2126737,3122065,2126737,2126737,3142545,2126737,2126737,2126737,3171217,2126737,2126737,2126737,2888593,2126737,2126737,2925457,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,986,2126811,2126811,2126811,2126811,2126811,2126811,2126737,3191697,3195793,2126737,0,0,0,0,0,0,2388955,2126811,2126811,2126811,2421723,2126811,2126811,2449408,0,2535424,3031040,2859008,0,0,0,0,0,2179072,2449408,2179072,2535424,2126811,2737115,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2888667,2126811,2126811,2925531,2126811,2126811,2126811,2126811,2126811,2585563,2126811,2126811,2126811,2126811,2126811,2618331,2126811,2126811,2126811,2126811,2126811,2126811,2606043,2126811,2630619,2126811,2126811,2651099,2126811,2126811,2126811,2708443,2126811,3142619,2126811,2126811,2126811,3171291,2126811,2126811,3191771,3195867,2126811,2179072,2126811,2126737,2179072,2179072,2179072,2637824,2179072,2179072,2179072,2179072,2727936,2752512,2179072,2179072,2179072,2842624,2846720,2179072,3112960,3219456,2126737,2126737,3113873,3220369,2126811,2126811,3113947,3220443,0,0,0,0,0,0,0,415,415,0,0,0,0,0,415,0,3096576,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3223552,0,0,2126737,2126737,2417553,2126737,2126737,2126737,2126737,2929553,2126737,2126737,2126737,2999185,2126737,2126737,2126737,2126737,3060625,2126737,2126737,2126737,2126737,2933649,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3130257,2126737,2126737,2126737,2519953,2126737,2126737,2126737,2126737,2589585,2126737,2614161,2646929,2126737,2126737,2696081,2757521,2126737,2446225,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2552721,2126737,2126737,2126737,2638737,2126737,2126737,2126737,2126737,2728849,2753425,2126737,2126737,2126737,2126737,2843537,2847633,2126737,2896785,2917265,2126737,2126737,2945937,2126737,2126737,2995089,2126737,3003281,2126737,2126737,3023761,2126737,3068817,3085201,2126737,3097489,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3224465,0,0,2126811,2126811,2417627,2843611,2847707,2126811,2896859,2917339,2126811,2126811,2946011,2126811,2126811,2995163,2126811,3003355,2126811,2126811,3023835,2126811,3068891,3085275,2126811,3097563,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3224539,2179072,2126811,2126737,2126737,2126737,3031953,2126737,2126811,2450395,2126811,2536411,2126811,2610139,2126811,2859995,2126811,2126811,2126811,2126811,2126811,2524123,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2601947,2126811,2515857,2126737,2126737,2126737,2544529,2548625,2126737,2126737,2597777,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2585489,2126737,2126737,2126737,2126737,2126737,2618257,2126811,2515931,2126811,2126811,2126811,2544603,2548699,2126811,2126811,2597851,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2655195,2679771,2761691,2765787,2786267,2855899,2970587,2126811,3007451,3154833,3167121,3175313,2397147,2401243,2126811,2126811,2442203,2126811,2470875,2126811,2126811,2126811,2520027,2126811,2126811,2126811,2126811,2126811,2638811,2126811,2126811,2126811,2126811,2728923,2753499,2126811,2126811,2126811,2126811,2126811,2126811,3179483,2179072,2126811,2126737,2179072,2179072,2126737,2126737,2126811,2126811,0,0,0,0,0,0,2510848,2514944,0,0,2678784,2760704,2764800,2854912,2969600,2179072,3006464,2179072,3018752,2179072,2179072,2179072,3149824,2126737,2429841,2438033,2126737,2487185,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2655121,2679697,2761617,2765713,2786193,2855825,2970513,2126737,3007377,2126737,3019665,2126737,2126737,2126737,2126737,3150737,2126811,2429915,2438107,2126811,2487259,2126811,2126811,2589659,2126811,2614235,2647003,2126811,2126811,2696155,2757595,2126811,2126811,2126811,2126811,2933723,2126811,2126811,2663387,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2802651,2814939,2126811,3019739,2126811,2126811,2126811,2126811,3150811,2179072,3051520,2126737,3052433,2126811,3052507,0,2490368,2498560,2126811,2556891,2565083,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3138523,2940928,2941841,2941915,0,0,0,0,0,2748416,2879488,0,3180,0,0,0,0,0,0,0,647,0,0,0,0,0,0,0,0,0,2467,0,0,2470,0,0,0,2179072,2502656,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3010560,2179072,2179072,2126737,2126737,2126811,2126811,0,2486272,0,0,0,0,0,2678784,2854912,3006464,2503569,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3011473,2126737,2126737,2126737,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2179072,2126811,2126737,2179072,2179072,2179072,2179072,2126737,2126737,2126737,2126737,2126811,2126811,2126811,2126811,0,0,0,0,0,0,0,0,0,0,0,2112,0,0,0,0,2503643,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,2126811,3011547,2126811,2126811,2126811,0,0,0,2179072,2126811,2126737,2179072,2179072,2179072,2179072,2179072,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2179072,2609152,2179072,2859008,2179072,2179072,2179072,3031040,2126737,2450321,2126737,2536337,2126737,2610065,2126737,2859921,3032027,2126811,2527232,0,0,0,0,0,2179072,2527232,2179072,2179072,2179072,2179072,2179072,2126737,2126737,2802577,2814865,2126737,2839441,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,2126737,3126161,2126737,2528145,2126737,2126737,2126737,2126737,2126737,3093393,2126811,2528219,2126811,2126811,2126811,2126811,2126811,3093467,0,0,0,0,0,782,0,0,0,0,0,0,541,843,541,541,541,541,541,1796,541,541,541,541,541,541,541,541,541,541,541,2822,541,541,541,541,3026944,0,0,0,2404352,2179072,2179072,2179072,2179072,3026944,2405265,2126737,2126737,2126737,2126737,3027857,2405339,2126811,2126811,2126811,2126811,3027931,0,2539520,0,2949120,2179072,2658304,2973696,2179072,2126737,2659217,2974609,2126737,2126811,2659291,2974683,2126811,0,2711552,256e4,2179072,2560913,2126737,2560987,2126811,0,2179072,2179072,3133440,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3207168,2179072,0,0,0,0,0,0,2464,0,0,0,0,0,0,0,0,0,324,398,0,0,0,324,0,2126737,2126811,0,2179072,2126737,2126811,0,2179072,2126737,2126811,2985984,2985984,2986897,2986971,0,0,0,0,0,0,3164,0,0,3167,0,0,0,0,0,0,0,1135,0,0,0,0,0,0,0,0,0,824,0,0,0,0,0,0,0,221184,221184,0,0,0,0,0,0,0,0,0,221184,221184,0,0,221184,221184,221184,0,0,0,0,0,0,0,221184,0,0,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,0,0,0,0,0,0,0,0,0,0,221184,0,221184,221184,221184,221184,221184,221184,221184,221184,221184,221184,1,12290,3,0,0,0,0,0,0,0,0,0,0,0,139264,300,0,303,0,0,0,303,0,304,0,0,0,304,0,0,0,304,69632,139682,0,0,0,0,0,65536,0,0,0,0,98304,0,0,0,53248,0,0,0,0,0,2662400,0,2813952,0,0,3133440,0,98304,0,0,0,0,0,0,0,0,0,0,0,0,111051,0,0,0,0,303,0,304,0,0,0,2473984,2478080,0,0,0,0,0,0,0,0,0,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,159744,163840,3121152,2179072,2179072,3141632,2179072,2179072,2179072,3170304,2179072,2179072,3190784,3194880,2179072,914,0,0,0,0,0,0,3172,3173,0,0,0,0,0,0,0,0,0,665,0,0,668,0,0,0,0,914,0,2387968,2125824,2125824,2125824,2420736,2125824,2125824,2125824,2125824,2125824,2453504,2125824,2473984,2482176,2125824,2125824,2125824,2125824,2125824,2125824,2531328,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2605056,2125824,3190784,3194880,2125824,988,0,0,0,988,0,2387968,2125824,2125824,2125824,2420736,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,0,299,0,0,0,303,0,0,0,303,119198,73728,0,0,0,0,0,65536,0,3096576,2179072,2179072,2179072,2179072,2179072,2179072,2179072,3223552,914,0,2125824,2125824,2416640,2125824,2125824,2125824,2125824,2125824,2125824,2625536,2125824,2125824,2125824,2125824,2125824,2125824,2699264,2125824,2715648,2125824,2723840,2125824,2732032,2772992,2125824,3084288,2125824,3096576,2125824,2125824,2125824,2125824,2125824,2125824,2125824,3223552,988,0,2125824,2125824,2416640,225890,225890,225890,225890,225890,225890,225890,225741,225741,225741,225741,225741,225906,225741,225906,1,12290,3,0,0,0,0,0,0,0,90409,90409,90409,90409,0,94506,94506,90409,90409,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,94506,1,2125824,237568,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,1222,0,0,0,0,0,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,249856,0,0,0,0,0,0,0,0,0,217088,0,0,0,0,0,0,0,0,0,0,0,0,0,304,0,0,2125824,241664,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,1236,0,0,0,0,0,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,254414,0,0,0,0,0,0,0,12290,0,0,0,2183168,0,0,270336,0,0,299,300,0,2134016,303,304,200704,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,687,2125824,0,2125824,2125824,2125824,2125824,2125824,0,0,180224,0,0,0,0,0,0,0,663,0,0,666,667,0,0,0,0,2940928,0,0,0,0,0,2748416,2879488,0,20480,0,0,0,0,0,0,0,679,0,0,0,0,0,0,0,0,0,1129,0,0,0,0,0,0,1,12290,2113826,0,0,0,0,0,0,296,0,0,0,296,0,0,0,0,0,0,3182,0,0,0,0,3187,0,0,0,0,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,266240,0,0,0,0,0,0,0,0,0,0,0,266240,0,0,0,0,0,0,0,0,0,0,1,0,0,0,266240,0,0,0,0,0,0,0,0,0,0,0,0,0,2662400,0,2813952,12290,2113826,0,0,2183168,0,0,0,0,0,299,300,0,2134016,303,304,2125824,245760,0,0,2179072,2125824,2125824,2179072,2179072,2179072,2179072,2179072,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2584576,2125824,2125824,2125824,2125824,2125824,2617344,2125824,2125824,2125824,2125824,2125824,245760,2125824,2125824,2125824,2125824,2125824,0,0,0,0,0,0,0,0,0,0,1245,0,0,0,0,0,274432,274432,274432,274432,274432,274432,274432,0,0,0,0,0,274432,0,274432,1,12290,3,0,0,0,0,0,253952,0,0,0,253952,0,0,0,0,0,0,0,0,0,0,0,0,0,1155072,0,0,0,0,0,0,12290,3,78115,78115,293,0,0,0,0,0,299,300,0,0,303,304,563,563,587,587,587,587,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,3196,0,0,0,0,0,0,0,0,0,0,3186,0,0,0,3189,0,0,0,0,2034,0,0,0,0,0,2036,0,0,0,0,0,0,0,695,0,0,0,0,365,365,365,0,0,2485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,266240,0,0,0,1678,0,0,0,0,0,0,0,0,0,0,0,0,338,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,0,2114,0,0,0,0,0,0,3395,541,541,541,541,3399,541,541,541,541,541,541,1346,541,541,541,541,541,541,1356,541,541,12290,3,78115,78456,293,0,0,0,0,0,299,300,0,0,303,304,541,588,564,564,564,564,564,564,564,588,588,588,541,588,588,588,588,588,588,588,588,564,564,541,564,588,564,588,1,0,0,0,0,2775,0,0,0,0,0,0,0,0,0,0,0,0,163840,0,0,0,1,12290,3,78116,293,0,0,0,0,0,0,0,0,0,0,0,0,167936,0,0,0,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,1,0,0,0,0,0,282624,282624,282624,282624,282624,282624,282624,282624,282624,282624,0,0,282624,0,0,0,0,0,0,0,0,0,0,1600,1601,0,0,0,0,282624,282624,282624,0,282624,282624,282624,282624,282624,0,0,0,0,0,0,0,0,0,254414,254414,254414,254414,254414,254414,254414,254414,1,2981888,2396160,0,3153920,3180,0,0,0,0,0,0,0,2740224,0,0,0,0,0,0,679,751,0,0,0,0,0,0,0,0,0,1144,0,365,365,0,1147,0,0,0,0,0,286720,286720,0,286720,286720,286720,286720,286720,286720,286720,286720,286720,0,0,0,0,0,0,0,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,286720,0,3108864,3198976,0,0,3043328,0,3149824,2936832,0,2760704,3305,2437120,0,0,0,0,0,0,680,0,0,0,0,0,0,0,0,0,300,0,0,0,0,0,0,0,0,0,0,2875392,0,0,0,3386,0,0,0,0,0,0,2834432,2940928,0,0,0,0,0,2748416,2879488,0,3386,0,0,0,0,0,0,0,709,0,0,0,0,0,0,0,0,0,2048,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,308,0,308,309,0,308,308,0,0,0,308,308,309,309,0,0,0,0,0,0,308,408,309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,781,0,0,0,309,413,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,783,0,802,0,0,0,0,541,847,541,541,541,541,541,2830,2831,541,541,541,541,2834,541,541,541,541,541,541,541,3521,541,3523,541,541,3525,541,563,563,0,0,432,0,0,0,0,308,449,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,463,489,489,463,489,489,489,489,489,489,489,514,489,489,489,489,489,489,489,489,489,489,489,489,489,489,489,534,489,489,489,489,489,542,565,542,565,542,542,565,542,589,565,565,565,565,565,565,565,589,589,589,542,589,589,589,589,589,589,589,589,565,565,542,565,589,565,589,1,0,0,674,0,0,0,0,0,0,0,0,0,0,0,0,0,323,324,0,0,704,0,0,0,0,0,0,0,711,0,0,0,0,0,0,0,742,0,0,0,0,742,0,748,0,0,0,736,0,0,0,0,0,0,0,0,0,0,0,747,0,0,0,0,0,792,663,841,0,0,0,0,541,845,541,541,541,541,541,2217,541,541,541,541,541,541,541,541,541,541,541,1802,541,541,541,541,0,0,0,0,645,0,0,0,0,0,0,0,0,0,0,0,0,172032,0,0,0,0,0,0,0,0,765,0,0,768,0,0,0,0,774,0,0,778,0,0,0,0,0,0,3562,0,3564,541,541,541,541,541,541,541,541,541,3219,541,541,541,541,541,3224,0,0,785,0,0,0,0,789,0,0,0,0,0,0,0,793,0,0,736,0,793,0,0,0,0,648,0,0,0,0,0,0,0,807,808,0,0,0,0,808,0,0,807,0,0,0,0,0,755,0,0,816,817,0,0,0,793,0,0,0,0,0,0,0,0,0,0,0,0,221184,0,0,0,0,0,0,648,0,0,0,0,0,834,789,0,0,0,0,0,0,0,2139,0,0,0,0,0,0,0,0,0,1712,0,0,0,0,0,0,838,839,789,789,0,0,0,0,789,736,789,0,541,541,849,853,563,964,563,967,563,563,981,563,563,0,587,587,587,996,1e3,587,0,0,0,0,0,0,0,0,3180,3448,0,0,0,0,0,0,0,2465,0,0,0,0,0,0,0,0,0,2152,0,0,0,0,0,0,1093,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1135,0,0,0,0,1152,0,0,0,0,1157,0,0,0,0,0,0,0,822,0,816,0,664,0,0,0,0,0,0,0,0,1201,0,0,0,0,0,0,0,0,0,0,0,0,221184,0,221184,0,0,0,1253,0,0,0,0,0,0,0,0,0,0,0,0,0,339,340,341,541,541,1342,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2239,0,0,0,0,0,1596,0,0,0,0,0,0,0,0,0,0,0,0,233472,0,0,0,0,0,0,1640,0,0,0,0,0,0,0,0,0,0,0,0,354,355,356,357,1653,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1163,0,0,0,0,1669,0,0,0,0,0,0,1673,0,0,0,0,0,0,0,69632,73728,0,0,0,346,345,65536,344,0,1729,0,0,0,0,541,541,541,541,541,541,541,541,541,541,541,3327,541,541,1742,541,541,541,541,541,541,541,541,541,1755,541,541,541,541,541,541,541,2193,541,541,541,541,541,541,541,541,541,2557,541,541,541,541,541,541,541,541,541,1794,541,541,1797,541,541,541,541,541,541,541,541,541,541,1314,541,541,541,1318,541,541,1809,541,541,541,541,541,1814,541,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,563,563,0,2328,1824,563,563,563,563,563,1831,563,563,563,563,563,1837,563,563,563,563,563,3093,563,563,563,563,563,563,563,563,563,3102,563,563,1892,563,563,563,563,563,563,563,563,563,563,1905,563,563,563,563,978,563,563,563,563,0,587,587,587,587,587,587,1997,587,587,587,587,587,587,587,587,587,1531,587,587,587,587,587,587,563,563,563,1910,563,563,563,563,563,563,563,26028,1920,587,587,587,0,1285,1469,1377,541,541,1339,541,541,563,563,1431,563,587,587,1927,587,587,587,587,587,1933,587,587,587,587,587,587,587,1529,587,587,587,587,587,587,587,587,1932,587,587,587,587,587,587,587,587,1494,587,587,587,587,587,587,587,587,587,1946,587,587,587,587,587,587,587,587,587,587,587,587,587,1513,587,587,563,563,2026,587,587,587,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,131072,0,131072,131072,131072,131072,0,131072,131072,131072,131072,131072,131072,131072,0,0,0,0,0,131072,0,131072,1,0,0,0,2042,0,0,0,0,0,0,0,0,0,0,0,0,365,365,365,0,0,2141,0,0,2148,0,0,0,0,0,0,0,0,0,0,0,0,237568,0,0,0,0,0,0,2140,541,541,541,541,541,541,541,541,541,541,541,2170,541,541,2173,541,541,541,541,541,541,2181,541,541,541,541,541,541,541,541,2841,541,541,541,541,541,541,541,541,1294,541,541,541,541,541,541,541,541,1327,541,541,541,1334,1336,541,541,541,541,2214,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2535,541,563,2258,563,563,563,563,563,563,2266,563,563,563,563,563,563,563,983,563,0,587,587,587,587,1001,587,563,2300,563,563,563,563,563,563,563,563,563,563,563,563,563,563,587,587,587,2345,587,587,587,587,587,587,2353,587,587,587,587,587,587,587,1950,587,587,587,587,587,587,587,587,1468,587,587,587,587,587,587,587,587,2387,587,587,587,587,587,587,587,587,587,587,587,587,587,587,541,587,563,2414,541,541,541,541,563,563,563,563,587,587,587,587,2030,0,2032,0,2034,0,2036,0,0,2428,0,0,0,0,0,0,0,0,0,0,1713,0,0,0,0,0,2436,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1179,2449,0,0,0,0,0,2453,0,0,0,0,0,0,0,0,0,0,1726,0,0,0,0,0,0,0,0,0,2477,0,0,0,0,0,0,0,0,0,0,0,0,245760,0,0,0,0,0,2501,0,0,0,0,0,0,0,0,0,0,0,0,0,386,338,0,541,541,541,2539,541,541,541,541,541,541,541,541,541,541,541,541,541,2198,541,541,0,0,0,563,563,563,563,563,563,563,563,563,2595,563,563,563,563,563,3238,563,563,563,563,563,563,563,563,563,563,2880,563,563,563,563,563,587,587,587,2661,587,587,587,587,587,587,587,587,587,587,587,2669,587,587,587,587,2714,587,587,587,587,587,587,541,587,563,541,541,2417,2418,563,563,2421,2422,587,587,2425,2426,0,1563,0,0,0,2735,0,0,0,0,0,0,2740,0,0,0,0,0,0,0,1102,1101,0,0,0,0,0,0,0,0,1724,0,0,0,0,0,0,0,0,1172,0,0,0,0,0,0,0,0,1187,0,0,0,0,0,0,1104,0,0,0,0,0,2763,0,0,0,0,0,0,0,0,0,0,0,2431,2432,0,0,0,0,0,0,0,0,2792,2793,0,0,0,0,0,0,0,0,0,0,2049,0,0,0,0,0,541,541,541,541,2829,541,541,541,541,541,541,541,541,541,541,2836,563,563,563,563,2876,563,563,563,563,563,563,563,563,563,563,563,0,2329,587,587,587,2884,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1874,587,587,2933,587,587,587,587,587,587,587,587,587,587,587,587,587,1536,587,587,2955,541,2957,563,2959,587,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,587,3442,0,3444,0,0,0,0,0,3180,0,0,0,0,3452,0,0,0,0,0,796,0,0,0,0,0,0,0,0,0,0,0,0,796,0,0,0,0,3454,0,541,3457,541,3459,541,541,541,541,541,541,541,541,541,541,541,541,2585,0,0,0,563,587,3488,587,3490,587,587,587,587,587,587,587,587,587,587,587,1047,587,587,587,587,587,0,0,0,3505,0,0,0,0,0,0,0,3512,0,0,541,541,541,541,541,541,3462,541,541,541,541,541,541,541,541,541,3334,541,541,541,563,563,563,541,541,541,3517,541,541,541,541,541,541,541,541,541,541,563,563,563,563,563,563,563,563,563,563,3530,563,563,563,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,3544,587,587,587,587,587,587,587,587,587,587,587,0,0,0,0,541,541,541,541,563,563,310,311,312,0,0,0,0,0,0,0,0,0,0,0,0,0,669,0,0,0,0,0,421,0,0,0,0,450,0,0,0,0,0,0,0,0,304,304,304,304,0,304,304,304,0,0,0,0,450,450,421,450,450,450,450,450,450,450,450,450,450,450,450,450,450,533,450,533,533,533,450,533,533,533,533,450,543,566,543,566,543,543,566,543,590,566,566,566,566,566,566,566,590,590,590,543,590,590,590,590,590,590,590,590,566,566,616,621,590,621,627,1,960,563,563,563,563,563,563,563,563,0,587,587,587,587,587,587,587,3136,587,587,3138,587,587,587,587,587,0,0,0,0,1657,0,0,0,0,0,0,0,0,0,0,0,0,254414,0,0,0,1676,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1211,541,541,541,1810,541,541,541,541,541,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,563,1378,0,0,2486,0,0,0,0,0,0,0,0,0,0,0,0,0,694,0,0,541,541,541,541,2528,541,541,541,541,2532,541,541,541,541,541,541,541,541,3218,541,541,541,541,541,541,541,541,2583,541,541,541,541,0,2586,0,0,0,0,563,563,563,563,563,563,2592,563,563,563,563,2596,563,0,587,587,587,587,587,78115,1079,0,0,0,0,0,0,0,0,0,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,225741,0,0,0,0,0,0,0,2658,587,587,587,587,2662,587,587,587,587,587,587,587,587,587,587,2665,587,587,587,587,587,0,0,0,313,314,315,316,317,318,319,320,321,322,0,0,0,0,0,0,694,0,0,0,0,0,365,365,365,0,0,313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2142208,0,0,316,0,0,0,0,0,0,0,0,0,0,0,0,0,730,0,0,0,423,431,433,422,431,0,313,431,451,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,464,485,490,490,501,490,490,490,490,490,490,490,490,516,516,529,529,530,530,530,530,530,530,530,530,530,530,530,516,530,530,530,530,530,544,567,544,567,544,544,567,544,591,567,567,567,567,567,567,567,591,591,591,613,591,591,591,591,591,591,591,614,615,615,613,615,614,615,614,1,734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1238,0,0,0,0,767,0,0,0,0,0,0,0,0,0,0,0,0,266240,0,0,0,0,0,702,0,0,0,0,0,702,0,0,0,541,541,541,541,541,541,3322,541,541,541,541,541,541,541,541,1816,541,541,541,541,541,541,1360,563,563,563,968,563,563,563,563,563,0,587,587,587,587,587,587,587,3150,3151,3152,541,541,563,563,587,587,0,0,2963,0,0,0,0,0,0,0,0,3180,0,0,3389,0,0,0,0,0,1108,0,0,0,0,0,0,0,0,0,0,0,0,0,0,308,309,0,1150,1108,0,0,0,0,0,0,0,0,0,0,0,0,0,1119,0,0,1212,0,0,0,0,0,0,0,0,0,0,0,0,0,1225,0,0,0,0,0,797,0,0,0,0,0,0,0,0,0,0,0,0,797,0,1360,914,563,563,1364,563,563,1368,563,563,563,563,563,563,563,563,985,0,587,587,587,587,587,587,1382,563,1387,563,563,1391,563,563,1394,563,563,563,563,563,563,563,984,563,0,587,587,587,587,587,1004,587,1460,587,587,587,587,587,587,587,587,1474,587,1479,587,587,1483,587,587,1486,587,587,587,587,587,587,587,587,587,587,587,587,587,1939,587,587,0,1692,0,1694,0,0,0,0,0,0,1701,0,0,0,0,0,0,0,2442,0,0,0,0,0,0,0,0,0,1173,0,0,0,0,0,0,541,541,1745,541,541,541,541,541,541,541,541,541,1757,541,541,541,541,541,541,2192,541,541,2195,541,541,541,541,541,541,541,1798,541,541,541,541,541,541,1806,541,541,1792,1793,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2824,541,0,563,563,563,563,563,563,563,563,563,563,563,563,563,1840,563,0,587,587,587,587,587,78115,1079,0,0,1083,1087,0,0,1091,587,587,587,587,1948,587,587,587,587,587,587,587,587,587,587,587,1478,587,587,587,587,587,587,587,587,1961,587,587,587,587,587,587,587,587,587,587,587,1533,587,587,587,587,0,2034,0,2036,0,0,0,0,0,0,2430,0,0,0,0,0,0,0,2454,0,0,0,0,0,0,0,0,0,2429,0,0,0,0,0,0,0,0,0,2476,0,0,0,0,0,0,0,0,0,0,0,0,365,365,365,702,0,0,0,2502,2503,0,0,0,0,0,0,0,0,0,0,0,0,1147355,0,0,0,587,587,2700,587,587,587,587,587,587,587,587,587,587,587,587,587,2004,587,587,0,0,2802,0,0,0,0,0,0,0,2806,541,541,541,541,541,541,541,2204,541,541,541,541,541,541,541,541,541,2220,541,541,541,541,541,541,541,2956,563,2958,587,2960,0,0,0,0,0,2966,0,0,0,0,0,0,0,69632,73728,0,0,0,350,348,65536,0,0,0,0,2970,0,0,0,0,0,0,0,0,0,0,0,0,365,365,208896,0,3035,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1807,541,541,3050,3051,541,541,541,541,541,541,541,541,541,541,541,541,541,2223,2224,541,563,3090,563,3092,563,563,563,563,563,563,563,563,563,563,563,563,1415,563,563,563,3117,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1484,587,587,3132,587,3134,587,587,587,587,587,587,587,587,587,587,587,1937,1938,587,587,587,0,3192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,308,541,541,541,541,3228,541,541,541,541,563,563,563,563,563,563,563,563,563,945,563,563,563,563,587,3503,0,3504,0,0,0,0,0,0,0,0,0,0,0,541,541,541,541,2810,3515,541,3516,541,541,541,3520,541,541,541,541,541,541,541,563,3528,563,3529,563,563,563,3533,563,563,563,563,563,563,563,563,587,3542,587,3543,587,587,587,3547,587,587,587,587,587,587,587,587,0,0,0,0,3673,541,541,541,3675,563,563,3676,587,587,587,3678,0,0,541,541,563,563,587,587,0,541,541,3204,541,541,541,541,541,541,541,541,541,541,541,541,541,2238,2586,0,324,324,374,0,0,0,0,0,0,0,0,0,0,0,0,0,1133,0,0,0,0,434,374,0,439,445,0,452,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,465,491,491,502,491,491,491,491,491,491,491,491,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,517,545,568,545,568,545,545,568,545,592,568,568,568,568,568,568,568,592,592,592,545,592,592,592,592,592,592,592,592,568,568,545,568,592,568,592,1,587,587,587,1019,587,587,587,587,587,587,587,587,587,587,587,587,1052,587,587,587,1122,0,1124,1125,0,0,0,1127,1128,0,0,0,0,0,0,0,0,334,0,0,0,0,0,334,0,0,0,1166,1167,0,0,0,0,0,0,0,0,0,0,0,0,400,0,0,0,0,0,1228,0,0,0,0,1233,0,0,0,0,0,0,0,0,0,365,300,0,0,0,0,0,0,0,0,0,1241,0,0,0,0,1244,0,1194,0,1113,0,1250,1127,0,0,0,0,0,0,0,0,0,541,541,1274,541,541,541,541,541,541,2203,541,541,541,541,541,541,541,541,541,541,1329,541,541,541,541,541,541,541,1322,541,541,1324,541,541,541,1328,541,541,541,541,541,541,541,541,3522,541,541,541,541,541,563,563,3068,563,563,563,563,563,563,563,563,2603,563,563,563,563,563,563,563,1360,914,563,563,1365,563,563,563,563,563,563,563,563,563,563,563,587,3427,587,587,3429,563,563,563,1405,563,563,563,563,563,563,563,1414,563,563,1416,563,0,587,587,587,1051,587,78115,1079,0,0,0,0,0,0,0,0,1134592,0,0,0,0,0,0,1134592,0,0,0,0,563,563,1420,563,563,563,563,563,563,563,563,563,563,563,563,563,1437,563,563,563,563,563,1444,563,563,563,563,563,26028,1360,988,587,587,1457,587,0,0,0,0,0,0,0,3447,3180,0,0,0,0,0,0,0,1237,0,0,541,541,1273,541,1276,541,0,0,0,1656,0,0,0,0,0,0,0,0,0,0,0,0,541,846,541,541,587,587,587,1993,587,587,587,587,587,587,587,587,587,587,587,587,1496,587,587,587,563,2025,587,587,587,2029,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,1134592,0,0,0,0,0,0,0,0,0,0,1134592,0,0,0,2034,0,0,0,0,0,2036,0,0,0,0,0,2039,0,2078,0,0,0,0,0,0,0,0,0,0,0,0,0,0,331,0,0,0,0,2092,0,0,0,0,0,0,0,0,0,0,0,0,643,0,0,0,541,2172,541,541,541,541,541,541,541,541,541,541,541,541,541,541,0,0,0,541,2188,541,541,541,541,541,541,541,541,541,541,541,541,541,541,0,2240,541,541,541,541,2229,541,2231,541,541,541,541,541,541,541,0,0,0,0,0,0,1146880,0,1146880,0,0,0,0,0,0,0,0,2617344,0,0,0,0,0,2789376,0,0,0,563,563,563,563,563,563,563,563,563,2253,563,563,563,563,0,0,0,0,0,0,587,2654,587,587,587,587,587,587,3135,587,587,587,587,587,587,587,587,587,1530,587,587,587,587,587,587,2257,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1889,2273,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2272,563,563,563,563,2316,563,2318,563,563,563,563,563,563,563,0,0,0,0,0,0,587,587,587,587,587,587,587,587,587,587,587,587,587,587,541,563,2344,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1516,2360,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1517,587,587,587,587,2403,587,2405,587,587,587,587,587,587,587,541,587,0,0,0,0,0,0,0,3508,0,0,0,0,0,0,541,541,541,541,541,541,3400,541,541,541,2499,0,0,0,0,0,2504,0,0,0,0,0,0,0,0,0,0,2086,2087,0,0,0,0,541,541,2526,2527,541,541,541,541,541,541,541,541,541,541,541,541,541,2237,0,0,541,541,2566,541,541,541,541,541,541,541,541,541,541,541,541,541,541,3046,541,0,0,0,563,563,563,2590,563,2591,563,563,563,563,563,563,563,1411,563,563,563,563,563,563,563,563,1429,563,563,563,563,563,563,563,563,1916,563,563,26028,1921,587,587,587,0,0,0,2761,0,0,0,0,0,0,0,0,0,0,0,0,674,0,0,0,541,541,2837,541,541,541,541,541,541,541,2843,541,541,541,541,541,541,541,2232,541,541,2235,2236,541,541,0,0,563,563,563,2885,563,563,563,563,563,563,563,2891,563,563,563,563,0,0,2329,0,0,0,587,587,587,587,587,587,587,587,587,587,2341,587,587,587,2920,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1519,587,587,587,587,3373,587,587,541,541,563,563,587,587,0,0,0,0,0,0,0,0,0,2968,563,587,587,587,587,587,587,3493,587,587,587,587,587,587,587,587,1034,587,587,587,587,587,587,587,326,327,328,0,0,0,0,0,0,0,0,0,0,0,0,0,1161,0,0,0,0,0,325,373,328,372,0,0,0,0,0,0,0,0,0,0,2111,0,0,0,0,0,325,0,0,372,372,402,0,328,0,0,0,0,0,0,0,0,0,365,339,293,0,0,0,0,0,0,325,0,327,0,0,0,453,466,466,466,466,466,466,466,479,466,466,466,466,466,466,466,466,466,466,466,466,492,492,466,492,492,507,509,492,492,507,492,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,535,518,518,518,518,518,546,569,546,569,546,546,569,546,593,569,569,569,569,569,569,569,593,593,593,546,593,593,593,593,593,593,593,593,569,569,546,569,593,569,593,1,0,0,658,659,0,0,0,0,0,0,0,0,0,0,670,671,0,689,0,0,0,0,0,0,0,0,0,0,365,365,365,0,0,0,0,0,800,0,0,0,0,0,0,0,0,0,0,0,0,718,0,720,0,0,0,0,0,0,727,0,0,0,731,0,0,0,0,0,0,1159168,417,417,0,0,0,0,0,417,0,0,784,0,786,0,0,0,0,0,0,0,0,0,0,0,0,759,0,0,0,0,0,798,0,803,0,806,0,0,0,0,803,806,0,0,0,0,0,0,741,0,0,0,0,0,0,0,0,0,0,0,0,806,806,803,0,0,0,0,0,0,0,786,0,798,0,815,0,0,0,0,0,802,0,0,783,0,0,0,0,802,0,0,0,0,0,0,0,802,0,0,0,0,806,0,707,0,0,823,0,0,0,0,0,823,823,826,0,0,0,786,0,0,0,0,0,835,0,0,0,0,0,0,0,2480,0,0,0,0,0,0,0,0,0,1100,0,0,0,0,0,0,0,0,0,0,784,0,0,0,835,815,835,0,541,541,850,541,541,541,541,541,3052,541,541,541,541,541,541,541,541,3060,541,541,541,541,541,3217,541,541,541,541,541,541,541,3222,541,541,541,541,541,2529,541,541,541,541,541,541,541,541,541,541,541,3043,541,541,541,541,856,541,541,869,541,541,880,541,885,541,541,893,896,901,541,909,563,563,966,969,974,563,982,563,563,0,587,587,587,997,587,1003,587,587,1016,587,587,1027,587,1032,587,587,1040,1043,1048,587,1056,587,0,0,0,0,0,0,3507,0,0,0,0,0,0,0,541,541,541,541,541,3031,541,541,541,541,0,0,0,1110,0,0,0,0,0,0,0,1117,0,0,0,0,0,0,0,69632,73728,0,0,0,421,0,65536,0,0,1137,1138,0,0,0,0,1142,0,0,0,365,365,0,0,0,0,0,0,769,0,0,0,775,776,0,0,0,0,0,0,0,69632,73728,0,0,0,374,0,65536,0,0,1165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,515,522,0,0,1182,741,0,0,0,1134,0,0,0,0,0,0,0,0,0,367,0,0,0,0,0,0,541,541,541,1281,541,541,541,541,541,541,1296,541,541,541,1301,541,541,541,541,541,3229,541,541,541,563,563,563,563,563,563,563,941,563,563,563,563,563,563,1360,914,563,563,563,563,563,563,563,563,563,563,1373,563,563,563,563,563,3249,563,3251,563,563,563,563,563,563,563,563,1852,563,563,563,563,563,563,563,563,563,563,1388,563,563,563,1393,563,563,563,563,563,563,563,563,1451,26028,1360,988,587,587,587,587,587,1485,587,587,587,587,587,587,587,587,587,587,587,587,587,1500,1540,587,587,0,541,587,563,541,541,541,541,541,563,563,563,563,563,563,3477,563,563,563,563,563,563,563,563,1396,563,563,563,563,563,563,563,0,0,1607,1608,1609,0,1611,1612,0,0,0,0,1617,0,0,0,0,0,0,770,0,0,773,0,0,777,0,0,0,0,0,0,796,0,0,0,0,0,541,541,541,541,541,541,563,563,563,563,563,563,933,563,563,947,563,563,563,563,0,0,1639,0,0,1642,0,1644,0,0,0,0,0,1650,1651,0,0,0,0,0,805,0,0,692,0,0,672,0,692,0,810,0,1667,0,0,1669,0,0,0,0,1671,1672,0,0,0,0,0,0,0,2491,2492,0,0,0,0,0,0,0,0,0,2686976,2736128,0,0,2531328,2707456,0,0,0,0,0,1708,0,0,1711,0,0,0,0,0,1715,0,0,0,0,0,0,2134016,0,0,0,0,0,0,0,0,1138688,0,1719,1720,0,0,0,0,0,0,0,0,0,0,0,0,1711,0,0,0,1731,1585,1585,1733,541,1735,541,1736,1737,541,1739,541,541,541,541,541,1310,541,541,541,541,541,541,541,1317,541,541,541,541,541,1748,541,541,541,541,541,541,541,541,541,1759,541,1743,541,541,541,541,541,541,541,541,541,1756,541,541,541,541,541,541,541,3333,541,541,541,541,541,563,563,563,922,926,563,563,563,563,563,563,952,563,957,1760,541,541,541,541,1764,541,1766,541,541,541,541,541,541,541,541,541,889,541,541,541,541,907,541,1774,1775,1777,541,541,541,541,541,541,541,1785,1786,1787,541,541,1790,1791,541,541,541,541,541,541,541,1799,541,541,541,1803,541,541,541,541,541,541,2530,541,541,541,541,541,541,541,541,541,541,1315,541,541,541,541,1320,541,541,541,541,1811,541,541,541,541,541,541,541,541,541,1822,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,563,1379,0,1827,563,1829,563,1830,563,1832,563,1834,563,563,563,1838,563,563,563,563,1390,563,563,563,563,563,563,563,563,563,563,563,2652,0,587,587,587,563,1859,563,1861,563,563,563,563,563,563,563,563,1869,1870,1872,563,0,587,587,1042,587,587,78115,1079,0,0,0,0,0,0,0,0,307,307,307,0,0,0,0,0,1907,563,563,563,563,563,563,563,563,563,1918,26028,0,1923,587,1925,587,1926,587,1928,587,1930,587,587,587,1934,587,587,587,587,587,587,587,3366,587,587,587,587,3367,3368,587,587,587,587,587,1947,587,587,587,587,1951,587,587,587,587,1955,587,1957,587,587,1976,1977,1978,587,587,1981,1982,587,587,587,587,587,587,587,1999,2e3,587,587,587,587,587,587,587,2015,2016,2017,541,2019,541,541,563,2023,1990,587,587,587,1994,587,587,587,587,587,587,587,2003,587,587,587,0,1288,1472,1380,541,541,541,541,541,563,563,563,563,3475,563,563,563,563,563,563,563,563,563,563,2267,563,563,563,563,563,563,2024,563,1982,587,2028,587,0,2030,0,0,0,0,0,2032,0,0,0,0,0,0,2134016,0,0,0,0,0,0,0,746,0,0,0,0,0,2043,0,0,2046,2047,0,0,0,2051,0,0,0,0,0,0,800,0,0,0,0,0,0,0,800,0,0,0,0,541,541,541,541,2090,0,0,0,0,2094,0,0,0,0,0,0,0,0,0,0,0,2456,0,0,0,0,0,0,0,0,1669,0,0,0,0,0,0,0,2113,0,0,2116,0,0,2119,0,0,0,0,0,0,2126,0,2128,0,0,0,0,0,0,0,69632,73728,0,370,370,0,0,65536,370,0,0,0,0,2137,0,0,0,0,0,0,0,0,0,0,0,0,1159168,0,0,0,0,2047,0,2147,0,0,0,0,0,0,0,0,0,0,0,0,1103,1104,1105,1106,0,2158,0,0,541,541,541,541,541,541,541,541,541,541,541,541,541,3329,541,541,541,2174,541,2176,541,541,541,541,541,541,2184,541,2186,541,541,541,541,541,3332,541,541,541,541,541,541,541,563,563,563,3069,563,563,563,563,563,563,563,2212,541,541,541,541,541,541,2219,541,541,541,541,541,541,541,541,541,1312,541,541,541,541,541,541,563,563,2259,563,2261,563,563,563,563,563,563,2269,563,2271,563,563,563,563,1422,563,563,563,563,563,563,563,563,563,563,1438,587,587,2346,587,2348,587,587,587,587,587,587,2356,587,2358,587,587,0,0,0,3634,0,3636,541,541,541,541,541,541,541,563,563,921,563,563,563,563,940,944,950,563,955,563,563,2261,541,2416,541,541,563,2420,563,563,587,2424,587,587,2030,0,2032,0,0,0,2452,0,0,0,0,0,0,0,0,0,0,0,0,1132,0,0,0,0,0,2461,0,0,0,0,0,2466,0,2468,2469,0,0,0,0,0,0,0,69632,73728,0,420,420,0,0,65536,420,0,0,0,0,2488,0,0,0,0,0,0,0,0,0,0,0,0,2179072,2179072,2179072,2179072,0,0,0,0,2516,2468,0,0,0,0,0,2521,0,0,0,541,541,541,541,541,3321,541,541,541,3325,541,541,541,541,541,541,1749,541,541,541,541,541,541,541,541,541,541,2558,541,541,541,541,541,2563,541,541,541,2568,541,541,541,541,541,541,541,2575,541,541,541,541,541,541,2542,541,2544,541,541,541,541,541,541,541,541,563,3411,563,563,3413,563,563,563,541,541,541,541,2580,541,541,541,541,541,541,541,541,0,2586,0,0,0,0,0,812,0,809,792,0,0,814,0,667,0,788,0,0,0,563,563,563,563,563,563,563,563,2594,563,563,563,563,0,2652,0,0,0,0,587,587,587,587,587,587,587,587,587,587,587,587,2342,587,563,2624,563,563,563,563,2628,563,563,563,2633,563,563,563,563,563,563,2629,563,563,563,563,563,563,2636,563,563,563,563,2640,563,563,563,563,563,563,563,563,2646,563,563,563,563,0,2652,0,0,0,0,587,587,587,2656,587,2657,587,587,2660,587,587,587,587,587,587,587,587,587,587,587,587,587,2383,587,587,587,587,2672,587,2674,587,587,587,587,587,587,587,587,587,587,587,1970,587,587,587,587,587,2699,587,587,587,587,587,587,587,2706,587,587,587,587,587,587,587,3375,541,3376,563,3377,587,0,0,0,587,587,2712,587,587,587,587,587,587,587,587,541,587,563,541,541,541,541,563,563,2800,2801,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,3402,2992,0,0,0,0,0,0,0,0,0,0,0,2992,0,0,0,0,0,0,840,0,0,0,0,0,541,541,541,541,541,541,2166,541,541,541,541,541,0,3022,0,0,0,3025,541,541,541,541,541,541,3032,541,541,541,541,541,541,2570,541,541,541,541,2574,541,541,541,541,541,541,1286,541,541,541,541,541,541,541,541,541,541,1818,541,541,541,541,1360,541,541,3036,541,541,541,541,541,541,541,3042,541,541,541,541,541,541,541,2531,541,541,541,541,541,541,541,541,541,563,3230,563,563,563,3233,563,3048,541,541,541,541,541,541,541,541,541,541,3057,3059,541,541,541,541,541,541,2582,541,541,541,541,541,541,0,2586,0,3062,541,3064,3065,541,563,563,563,563,563,563,3072,563,563,563,563,563,1425,563,563,563,563,563,563,563,563,563,563,2889,563,563,563,563,563,563,563,3076,563,563,563,563,563,563,563,3082,563,563,563,563,563,3088,563,563,3091,563,563,563,563,563,563,563,563,3098,3100,563,563,563,563,563,3342,563,563,563,563,563,563,563,563,563,563,2645,563,563,563,563,563,563,563,3104,563,3106,3107,563,587,587,587,587,587,587,3114,587,587,587,0,1544,1545,1546,541,541,1548,541,541,563,563,1552,563,587,587,3118,587,587,587,587,587,587,587,3124,587,587,587,587,587,587,1998,587,587,587,587,587,587,587,587,587,3551,587,587,3553,587,0,0,3130,587,587,3133,587,587,587,587,587,587,587,587,3140,3142,587,587,0,0,3633,0,0,0,541,541,3638,541,541,541,3642,563,587,587,3146,587,3148,3149,587,541,587,563,541,3154,563,3156,587,3158,0,0,0,0,0,3181,0,3183,0,0,0,0,0,0,0,3190,0,0,0,3193,3194,0,0,0,0,0,0,0,0,0,0,0,0,2200252,2200252,2200252,0,563,563,563,563,3237,563,563,563,563,563,563,563,563,563,563,563,1400,563,563,563,563,563,563,563,3248,563,563,563,563,563,563,563,563,3256,563,563,563,563,563,3352,563,563,563,563,587,587,587,587,587,3358,563,563,563,587,587,587,3261,587,587,587,587,587,587,587,3266,587,0,0,0,0,0,3506,0,0,3509,0,0,0,0,0,541,541,541,541,3662,541,563,563,563,563,3666,563,0,3310,0,0,3313,0,0,0,0,0,0,0,0,0,0,0,0,2200253,151552,2200253,0,587,587,587,3372,587,587,587,541,541,563,563,587,587,0,0,0,0,0,0,0,0,2967,0,0,0,0,0,0,3383,3384,0,3180,0,0,0,0,0,3392,0,0,0,0,0,1097,0,0,0,0,0,0,0,0,0,0,331,382,384,0,0,0,563,3417,563,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,3115,587,587,587,587,587,587,3433,587,587,587,587,587,587,587,587,587,541,563,3472,563,3474,563,563,563,563,563,563,563,563,563,563,563,563,3243,563,563,563,3470,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3485,563,563,563,563,3532,563,563,563,563,563,563,563,563,563,587,587,3110,587,587,587,587,587,587,587,587,587,587,587,3546,587,587,587,587,587,587,587,587,587,3555,3556,0,0,0,3559,0,0,0,0,0,3565,3566,3567,541,541,541,3570,541,3572,541,541,541,541,3577,3578,3579,563,563,563,3582,563,3584,563,0,587,587,1044,587,587,291,1079,0,0,1082,1086,0,0,1090,563,563,563,3589,3590,3591,3592,587,587,587,3595,587,3597,587,587,587,587,587,1464,587,587,587,1473,587,587,587,587,587,587,1949,587,587,587,587,587,587,587,587,587,2949,587,587,587,541,587,563,587,3602,0,0,0,0,0,0,0,0,0,0,541,541,541,541,541,541,1738,541,541,541,563,3644,563,563,563,3648,563,587,587,3650,587,587,587,3654,587,0,0,0,0,0,0,0,0,3180,0,3449,0,0,0,0,0,0,0,69632,73728,266240,0,0,0,0,65536,0,0,0,0,329,330,0,0,0,0,0,0,0,0,0,0,0,349,0,0,0,0,0,369,0,0,0,0,0,0,0,0,0,0,0,0,0,0,686,0,0,0,0,369,0,0,0,377,379,0,0,0,0,0,0,0,0,1099,0,0,0,0,0,0,0,0,1115,0,0,0,0,0,0,0,0,0,3185,0,0,0,0,0,0,0,0,412,0,0,0,412,69632,73728,0,369,369,0,424,65536,369,0,0,0,369,424,499,503,499,499,508,499,499,499,508,499,424,424,0,330,424,0,0,424,424,0,0,0,0,0,0,0,0,1156,0,0,0,0,0,0,0,0,664,0,0,0,0,0,0,0,0,680,681,0,0,0,0,0,0,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424,547,570,547,570,547,547,570,547,594,570,570,570,570,570,570,570,594,594,594,547,594,594,594,594,594,594,594,594,570,570,547,570,594,570,594,1,587,587,587,1020,587,587,587,587,587,587,587,587,587,587,587,587,1954,587,587,587,0,0,1109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1215,0,0,0,0,0,0,0,0,0,0,0,1226,541,1279,541,541,541,541,541,1291,541,541,541,541,541,541,541,541,541,1351,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,1371,563,563,563,563,563,563,2643,563,563,563,563,563,563,563,563,563,1866,563,563,563,563,563,563,1383,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2286,587,587,1992,587,587,587,587,587,587,587,587,587,587,587,587,587,2411,541,587,563,563,3677,587,587,587,0,0,541,541,563,563,587,587,0,541,3203,541,541,541,3206,541,541,541,541,541,541,541,541,541,541,1313,541,541,541,541,541,425,425,0,0,425,440,0,425,425,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,467,493,493,467,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,548,571,548,571,548,548,571,548,595,571,571,571,571,571,571,571,595,595,595,548,595,595,595,595,595,595,595,595,571,571,548,571,595,571,595,1,0,1213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,732,0,0,0,0,0,1695,0,0,0,0,0,0,0,0,0,0,0,360,0,0,0,0,0,0,0,0,2093,0,0,0,0,0,0,0,0,0,0,0,365,365,0,0,0,2157,0,0,0,541,541,541,541,541,541,541,541,541,541,541,541,3328,541,2201,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2200,563,2415,541,541,541,2419,563,563,563,2423,587,587,587,0,0,0,0,0,0,541,541,541,541,541,541,541,563,3067,563,563,563,563,563,563,563,563,563,3253,563,563,563,563,563,563,0,2460,0,0,0,0,0,0,0,0,0,0,0,0,0,0,748,0,0,0,0,0,2791,0,0,0,0,0,0,0,0,0,0,0,365,365,1146,0,0,2943,587,587,587,587,587,587,587,587,587,587,587,587,541,587,563,541,541,0,0,0,0,2971,0,0,0,2975,0,0,0,0,0,2981,0,0,0,0,0,1128,0,0,0,0,0,1233,0,0,0,1265,0,0,0,2994,0,2996,0,0,0,0,0,0,0,0,3004,0,0,0,0,0,1169,0,1171,0,0,0,0,1176,0,0,0,0,0,0,1643,0,0,0,0,0,0,0,0,0,0,2520,0,0,0,0,541,0,0,0,0,3009,0,0,0,0,0,0,0,0,0,0,0,383,0,0,0,387,541,3063,541,541,541,3066,563,563,563,563,563,563,563,563,563,563,3083,563,563,563,563,563,563,563,3105,563,563,563,3108,587,587,587,587,587,587,587,587,587,1509,587,587,587,587,587,587,3144,587,587,3147,587,587,587,541,587,563,541,541,563,563,587,587,0,0,3295,0,0,0,0,0,0,0,0,2766,0,0,0,0,0,0,0,0,2151,0,0,0,0,0,0,0,0,2506,0,0,0,0,0,2512,0,0,0,0,0,0,3195,0,0,0,0,0,0,0,0,0,0,0,2782,0,0,0,0,541,541,541,541,3216,541,541,541,541,541,541,541,3221,541,3223,541,541,541,541,541,3408,541,541,3410,563,563,563,563,3414,563,563,563,563,1446,1447,563,563,563,26028,1360,988,587,587,587,587,587,587,3671,0,0,0,541,541,541,3674,563,563,563,563,563,587,587,3260,587,587,587,587,587,587,587,587,587,587,3274,587,587,587,587,587,587,3280,587,587,587,587,587,587,587,587,587,587,587,541,587,563,541,2722,563,3350,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,3655,587,587,587,587,3363,587,587,587,587,587,587,587,587,587,3369,587,0,0,0,541,587,563,541,541,541,541,541,563,563,563,563,563,3071,563,563,563,563,563,0,0,0,0,541,541,3660,3661,541,541,563,563,3664,3665,563,563,563,563,1423,563,563,1430,563,563,563,563,563,563,563,563,2631,563,563,563,563,563,563,563,587,587,3668,3669,587,587,0,0,0,0,541,541,541,541,563,563,563,924,928,931,563,939,563,563,563,954,956,959,0,0,690,691,0,0,0,0,696,0,0,0,365,365,365,0,0,0,0,0,1185,0,0,0,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,829,0,0,0,0,0,0,0,0,0,758,0,0,0,0,0,0,758,0,0,0,0,0,758,758,910,541,563,563,563,563,927,563,563,563,563,563,563,563,563,563,1432,563,563,1436,563,563,563,983,0,587,587,587,587,1057,78115,1079,0,0,0,0,0,0,0,0,1220,0,0,0,0,0,0,0,0,0,282624,282624,282624,282624,282624,282624,282624,282624,587,1521,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1514,587,0,0,0,1721,0,0,0,0,0,0,0,0,0,0,0,0,1193,0,0,0,0,2040,0,0,0,0,0,0,0,0,0,0,0,0,0,0,749,0,2171,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2211,3288,541,3290,563,3292,587,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3514,468,468,468,486,494,494,486,494,494,494,494,494,494,494,494,519,527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,536,527,527,527,527,527,549,572,549,572,549,549,572,549,596,572,572,572,572,572,572,572,596,596,596,549,596,596,596,596,596,596,596,596,572,572,549,572,596,572,596,1,795,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1652,0,818,0,0,0,795,0,0,818,0,0,0,0,0,818,818,0,0,0,0,795,0,0,0,0,0,0,836,791,0,0,836,857,541,865,541,541,541,541,541,541,541,541,541,541,541,541,541,541,3527,563,911,541,563,563,563,563,563,930,563,938,563,563,563,563,563,563,1850,563,563,563,563,563,563,563,563,563,0,587,587,587,587,587,587,587,1012,587,587,587,587,587,587,587,587,587,587,587,587,587,1058,984,0,587,587,587,1077,1058,78115,1079,0,0,0,0,0,0,0,0,1243,0,0,0,0,0,0,0,0,1259,0,0,0,1263,0,0,0,0,0,0,0,1139,1140,0,0,0,0,0,365,365,0,0,0,0,0,0,1113,0,0,0,0,0,0,0,0,0,0,2071,0,0,0,0,0,1180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1705,1340,541,541,1344,541,541,541,541,541,1350,541,541,541,1357,541,541,541,541,541,1812,541,541,541,541,541,541,541,541,541,1360,1403,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2638,563,563,1442,563,563,563,1449,563,563,26028,1360,988,587,587,587,587,587,587,3272,587,587,587,587,587,587,587,587,3278,587,587,1487,587,587,587,587,587,587,587,1495,587,587,587,587,587,587,2365,587,587,587,587,587,587,587,587,587,2691,587,587,587,587,587,587,587,587,587,1524,587,587,1528,587,587,587,587,587,1534,587,587,587,587,587,1492,587,587,587,587,587,587,587,587,587,587,1510,587,587,587,587,587,1541,587,587,0,541,587,563,541,541,541,541,541,563,563,563,563,563,3476,563,563,563,3480,563,563,563,563,563,563,2863,563,563,2867,563,563,563,563,563,563,1409,563,563,1413,563,563,563,563,563,563,1448,563,563,26028,1360,988,587,587,587,587,0,0,0,1595,0,0,0,0,0,0,0,0,0,0,0,0,1223,0,0,0,0,0,1655,0,0,0,0,0,0,0,0,0,1664,0,0,0,0,0,0,1126,0,0,0,1130,1131,0,0,0,0,0,0,0,2818048,2846720,0,2916352,0,0,3002368,0,0,1718,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2053,1702,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,3326,541,541,541,563,563,563,1893,563,563,563,563,563,563,1901,563,563,563,563,563,563,2887,563,563,563,2890,563,2892,563,563,563,587,1944,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1940,587,587,1974,587,587,587,587,1980,587,587,587,587,587,587,587,587,1989,2007,2009,587,587,587,587,587,541,587,563,541,541,541,541,563,563,563,563,587,587,587,587,2030,0,2032,0,0,2079,0,0,0,2082,0,0,0,0,0,2088,0,0,0,0,0,0,1141,0,1143,0,0,365,365,0,0,0,0,0,0,1154,0,0,0,0,0,1160,0,1162,0,2104,0,0,0,0,0,0,0,0,0,0,0,0,0,2115,0,0,0,0,0,1192,0,0,0,0,0,0,0,0,0,0,0,176128,176128,176128,176128,176128,176128,176128,0,0,563,563,563,563,563,563,2250,563,563,563,563,563,563,563,1851,563,563,563,563,1855,563,563,563,587,587,587,587,2349,587,587,587,587,587,587,587,587,587,587,587,1985,587,587,1988,587,2262,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,0,0,2732,0,2450,0,0,0,0,0,0,0,0,2455,0,0,2458,0,0,0,0,0,0,2134016,0,0,0,0,0,0,57344,0,0,0,0,0,0,2748,0,0,0,0,0,0,0,0,0,0,192972,192972,192972,192972,192972,192972,192972,0,0,0,0,2462,0,0,0,0,0,0,0,0,0,0,0,541,541,541,2809,541,2473,0,0,0,0,0,0,0,2481,0,0,0,2483,0,0,0,0,0,0,1170,0,0,0,0,0,0,0,0,0,0,2989,0,0,0,0,0,0,2500,0,0,0,0,0,0,0,0,0,0,2510,0,0,0,0,0,0,1186,0,0,0,1191,0,0,0,0,1107,0,0,0,0,0,0,0,0,0,0,0,758,0,0,0,0,0,0,0,2524,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2536,541,541,2552,541,541,541,541,541,541,541,541,541,541,541,541,541,905,541,541,2564,541,541,541,541,541,541,2571,541,541,541,541,541,541,541,541,541,1768,541,541,541,541,541,541,541,2578,541,541,541,2581,541,541,541,541,541,541,541,0,0,0,0,0,0,1203,0,0,0,0,0,0,0,0,0,0,813,0,0,0,0,0,0,0,0,563,2588,563,563,563,563,563,563,563,563,563,563,563,1903,1904,563,563,563,2611,563,563,563,563,563,563,2616,563,563,563,563,563,563,563,2622,587,587,587,587,2702,587,587,587,587,587,587,587,587,587,587,2710,587,587,587,2713,587,587,587,587,587,587,587,2718,2719,2720,541,541,541,541,541,2177,541,541,541,541,541,541,541,541,541,541,541,541,2845,541,541,541,2758,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2103,0,2773,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1120,0,0,0,2789,0,0,0,0,2794,0,0,0,2796,0,0,0,0,0,0,0,69632,73728,316,317,317,422,423,65536,430,541,541,541,541,2814,541,541,541,541,541,541,541,541,541,541,541,541,1333,541,541,541,541,541,2848,541,541,541,541,541,541,0,0,563,563,563,2856,563,0,587,587,1047,587,587,78115,1079,0,0,0,0,0,0,0,0,1159168,365,0,0,0,0,0,0,563,563,563,563,2861,563,563,563,563,563,563,563,563,563,563,563,2294,563,563,563,563,563,563,563,563,2897,563,563,563,563,563,563,0,0,587,587,587,587,587,587,587,2338,587,587,587,587,587,587,587,3122,587,587,587,587,587,587,587,587,1036,587,587,587,587,1054,587,587,2905,587,587,587,587,587,2910,587,587,587,587,587,587,587,587,587,1935,587,587,587,587,1941,587,3006,0,0,0,0,3010,0,0,0,0,3015,0,0,0,0,0,0,0,2749,0,0,0,0,0,0,0,0,0,697,698,0,365,365,365,0,3191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2145,3300,0,0,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,69632,73728,163840,0,0,0,0,65536,0,563,563,563,3340,563,563,563,563,563,563,563,563,563,563,563,563,2283,563,563,563,563,563,563,3351,563,563,563,563,563,563,587,587,587,587,587,587,587,587,587,587,587,587,587,3359,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1942,3370,587,587,587,587,587,587,541,541,563,563,587,587,0,0,0,0,3297,0,0,0,0,0,0,0,0,0,3394,0,541,541,541,541,541,541,541,541,541,541,541,541,3211,541,541,3486,587,587,587,587,587,587,587,587,3495,587,3497,3498,587,3500,587,0,0,0,541,587,563,541,541,541,904,541,563,563,563,977,3502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,541,541,541,854,541,541,3612,541,3613,541,541,541,563,563,563,563,563,563,3619,563,0,996,1075,1041,587,587,78115,1079,0,0,1081,1085,0,0,1089,3620,563,563,563,563,587,587,587,587,587,587,3627,587,3628,587,587,0,3603,0,0,0,0,0,0,0,0,541,541,3610,541,563,563,587,587,587,587,0,0,541,541,563,563,587,587,3683,3684,3685,3686,0,541,563,587,0,541,563,587,0,541,563,587,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,550,597,573,573,573,573,573,573,573,597,597,597,550,597,597,597,597,597,597,597,597,573,573,550,573,597,573,597,1,0,0,0,737,0,0,0,0,0,0,0,0,0,0,0,0,1237,0,0,0,0,0,2041,0,0,0,0,0,0,0,0,0,0,0,0,0,1194,1196,0,403,0,0,0,0,381,0,69632,73728,0,0,0,0,426,65536,0,0,0,0,0,1202,0,0,0,0,0,0,0,0,0,0,0,2444,2445,0,0,2448,426,426,0,0,426,0,446,426,426,469,469,469,476,469,469,469,469,469,469,469,469,469,476,469,469,469,469,469,469,469,469,483,469,495,495,469,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,495,538,551,574,551,574,551,551,574,551,598,574,574,574,574,574,574,574,598,598,598,551,598,598,598,598,598,598,598,598,574,574,551,574,598,574,598,1,0,0,0,0,660,661,0,0,0,0,0,0,0,0,0,0,0,3001,0,0,0,0,0,0,0,0,661,0,0,0,0,0,0,0,0,0,0,0,661,0,0,0,0,0,827,0,0,0,661,0,0,0,0,0,0,0,0,0,0,0,3176,0,0,0,0,0,0,0,729,0,742,661,0,0,0,0,0,541,844,541,541,541,541,541,2191,541,541,541,541,541,541,2197,541,2199,541,541,859,541,541,541,541,541,541,541,541,541,541,897,541,541,541,541,541,541,2817,541,2819,541,541,541,541,541,541,541,541,2572,541,541,541,541,541,541,541,541,1349,541,541,541,541,541,541,541,541,1752,541,541,541,541,541,541,541,541,1767,541,541,541,541,541,541,541,541,1782,541,541,541,541,541,541,541,541,1815,1817,541,541,541,541,541,1360,563,563,563,970,563,563,563,563,563,0,587,587,990,587,587,587,587,587,1526,587,587,587,587,587,587,587,587,587,587,1953,587,587,587,587,587,1006,587,587,587,587,587,587,587,587,587,587,1044,587,587,587,587,587,587,3285,587,587,587,587,587,587,541,587,563,1094,0,0,0,0,0,0,0,0,0,1101,1102,0,0,0,0,0,0,0,69632,73728,167936,0,0,0,0,65536,0,0,0,0,1229,0,0,0,0,0,0,0,0,0,0,0,0,1247,0,0,0,0,0,0,0,1102,0,0,0,0,1260,1261,0,0,1101,0,0,0,0,0,0,2134756,0,0,0,0,0,0,0,0,0,0,1116,0,0,0,0,0,541,1306,541,541,541,541,541,541,541,541,541,541,541,541,541,541,0,2241,1360,914,563,1363,563,563,563,563,563,563,563,563,563,563,563,1377,1384,563,563,563,563,563,563,563,563,563,1398,563,563,563,563,563,563,3079,563,563,563,563,563,563,563,563,563,0,587,587,989,587,587,587,1418,563,563,563,563,563,563,563,1431,563,563,563,563,563,563,563,1897,563,563,563,563,563,563,563,563,1395,563,563,563,563,563,563,563,587,587,1523,587,587,587,587,587,587,587,587,587,587,587,1537,587,0,0,0,541,587,563,541,541,541,1067,911,563,563,563,1072,563,587,587,1523,587,587,1079,0,0,0,0,0,0,0,0,0,0,2781,0,0,0,0,0,541,541,541,1746,1747,541,541,541,541,1754,541,541,541,541,541,541,541,1290,541,1295,541,541,1299,541,541,1302,541,541,541,541,1795,541,541,541,541,541,541,541,541,541,541,541,541,1335,541,541,541,1825,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1841,1842,563,563,563,563,1849,563,563,563,563,563,563,563,563,563,563,3347,563,563,563,563,3348,1890,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2649,587,1945,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2372,587,587,1959,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2384,2385,587,587,587,587,2012,587,587,541,587,563,541,541,541,541,563,563,587,587,2961,0,0,2964,2965,0,0,0,0,0,0,0,2505,0,0,0,0,0,0,0,0,0,387,0,0,0,0,0,387,0,0,0,2054,0,2055,0,0,0,0,0,0,0,0,0,2064,541,541,541,541,2216,541,541,541,541,541,541,2221,541,541,541,541,541,541,1285,1292,541,541,541,541,541,541,541,541,541,1800,541,541,541,1805,541,541,541,2226,541,541,541,541,541,541,541,541,541,541,541,541,0,0,563,563,563,563,563,563,563,563,2302,563,563,563,563,563,563,2307,563,563,563,563,563,563,3080,563,563,563,563,563,563,563,563,563,1883,563,563,563,563,563,563,563,2313,563,563,563,563,563,563,563,563,563,563,563,563,0,0,587,587,587,587,587,587,2389,587,587,587,587,587,587,2394,587,587,587,587,587,587,2377,587,587,587,587,587,587,587,587,587,1952,587,587,587,587,1956,587,587,2400,587,587,587,587,587,587,587,587,587,587,587,587,541,587,0,0,0,541,587,563,541,541,895,541,541,563,563,968,563,0,587,587,587,587,587,78115,1079,0,0,1082,1086,0,0,1090,0,2437,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1178,0,587,2671,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2931,587,0,0,0,2736,0,0,0,0,0,0,0,0,0,0,0,0,1588,1589,0,0,2787,0,0,0,0,0,0,0,0,0,0,0,2797,0,0,0,0,0,0,1204,0,0,0,0,0,0,0,0,0,0,1631,0,0,0,0,0,541,541,541,2813,541,541,541,541,541,541,2821,541,541,541,541,541,541,541,2555,541,541,541,541,541,541,541,2562,563,563,563,2860,563,563,563,563,563,563,2868,563,563,563,563,563,563,3094,563,563,3096,563,563,563,563,563,563,1880,1881,1882,563,563,1885,1886,563,563,563,0,0,3008,0,0,0,0,0,0,0,0,0,0,0,0,0,1197,0,0,541,541,3227,541,541,541,541,541,541,563,563,563,563,563,563,563,3073,563,563,563,3571,541,3573,541,541,541,563,563,563,563,563,563,563,3583,563,3585,0,0,0,0,541,3659,541,541,541,541,563,3663,563,563,563,563,563,1878,563,563,563,563,1884,563,563,563,563,563,563,2864,563,2866,563,563,563,563,563,563,563,3354,563,563,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,1057,587,3667,587,587,587,587,0,0,0,0,541,541,541,541,563,563,915,563,563,563,563,563,563,946,563,563,563,563,563,1427,563,563,563,563,563,563,563,563,563,563,3535,563,563,563,563,563,563,587,587,587,587,3112,587,587,587,587,3116,470,470,470,470,454,454,470,454,454,454,454,454,454,454,454,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,520,552,575,552,575,552,552,575,552,599,575,575,575,575,575,575,575,599,599,599,552,599,599,599,599,599,599,599,599,575,575,552,575,599,575,599,1,541,860,541,541,874,541,541,541,541,541,541,541,541,541,541,541,541,1770,541,541,541,1007,587,587,1021,587,587,587,587,587,587,587,587,587,587,587,587,1971,587,587,587,0,1123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1184,1184,1251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2156,0,0,0,1268,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1360,541,541,541,1323,541,541,541,541,541,541,541,541,541,541,541,541,541,2534,541,541,541,1341,541,541,541,541,541,1348,541,541,541,541,541,541,541,541,541,2234,541,541,541,541,0,0,1440,563,563,563,563,563,563,563,563,26028,1360,988,587,587,587,587,587,587,3365,587,587,587,587,587,587,587,587,587,2936,587,587,587,2939,587,2941,587,587,587,587,587,1525,587,587,587,587,587,1532,587,587,587,587,587,587,2392,587,587,587,587,587,587,587,587,587,1472,587,587,587,587,1482,587,563,587,587,587,1557,587,1079,0,1561,0,0,0,1567,0,0,0,0,0,0,1218,1219,0,0,0,0,0,0,0,0,0,1235,0,0,0,0,0,0,1573,0,0,0,1579,0,0,0,0,0,0,0,0,0,0,0,662,0,0,0,0,0,0,0,0,0,0,0,541,541,541,1779,541,541,541,541,541,541,541,541,541,541,541,541,541,2548,541,541,563,1843,563,563,563,563,563,563,563,563,563,1854,563,563,563,563,563,1879,563,563,563,563,563,563,563,563,563,563,3344,563,563,563,563,563,563,563,563,1865,563,563,563,563,563,563,563,2065,2066,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1210,0,2117,0,0,2120,2121,0,0,0,0,0,2127,0,0,0,0,0,0,0,2765,0,0,0,0,0,0,0,0,0,550,573,550,573,550,550,573,541,2213,541,541,541,541,2218,541,541,541,541,541,541,541,541,541,541,2182,541,541,541,541,541,2299,563,563,563,563,2304,563,563,563,563,563,563,563,563,563,563,1917,563,26028,0,587,587,587,2386,587,587,587,587,2391,587,587,587,587,587,587,587,587,587,587,2001,587,587,587,587,587,2006,541,541,541,3037,541,541,541,541,541,541,541,541,541,541,541,541,541,2846,541,541,563,563,3077,563,563,563,563,563,563,563,563,563,563,563,563,563,1887,1888,563,587,587,587,3119,587,587,587,587,587,587,587,587,587,587,587,587,1986,587,587,587,563,563,3247,563,563,563,563,563,563,563,563,563,563,563,563,563,2296,563,563,587,0,0,0,3445,0,0,0,0,3180,0,0,0,0,0,0,0,1242,0,0,0,0,0,0,0,0,0,380,0,0,0,0,0,0,0,0,541,541,541,541,3460,541,541,541,541,541,541,541,541,541,541,2207,541,541,541,541,541,563,587,587,587,587,3491,587,587,587,587,587,587,587,587,587,587,2354,587,587,587,587,587,587,563,563,563,563,3623,587,587,587,587,587,587,587,587,587,587,587,2395,587,587,587,587,587,3631,0,0,0,0,0,0,541,541,541,541,541,541,541,563,563,920,563,563,563,563,563,563,949,951,563,563,563,563,563,3421,563,563,563,3425,563,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3501,388,390,340,0,0,0,0,0,0,339,0,0,340,0,0,0,0,0,0,1598,0,0,0,0,0,0,0,0,1604,0,0,0,387,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,1217,0,0,0,0,0,0,0,1224,0,0,0,0,0,347,0,0,0,0,0,0,0,0,0,0,0,3316,0,0,0,0,0,0,435,339,0,0,447,0,0,471,471,471,471,471,471,471,471,471,553,576,553,576,553,553,576,471,482,471,471,471,500,477,500,500,500,500,500,500,500,500,471,471,477,471,471,471,471,471,471,471,471,471,471,471,481,481,471,482,471,471,553,600,576,576,576,576,576,576,576,600,600,600,553,600,600,600,600,600,600,600,600,576,576,553,576,600,576,600,1,0,0,750,0,0,0,0,0,0,0,0,0,0,0,0,0,1603,0,0,0,0,0,0,663,0,788,0,0,0,0,0,0,0,792,0,0,0,0,0,1231,0,0,0,0,0,0,0,0,0,0,0,2153,0,0,0,0,0,0,0,801,0,0,0,0,0,809,0,0,0,0,706,0,0,0,0,0,0,0,0,715,0,717,0,828,0,0,0,663,831,0,788,0,0,0,0,0,837,0,0,0,0,0,1597,0,0,0,577536,0,0,1602,0,0,0,0,0,0,1257,0,0,0,0,0,0,0,0,0,0,2508,0,0,0,0,0,541,861,541,541,875,541,541,541,541,888,541,541,541,541,906,541,541,541,541,541,3519,541,541,541,541,541,541,541,541,563,563,563,923,563,929,563,563,942,563,563,953,563,958,961,563,563,563,563,979,563,563,563,0,587,587,991,587,587,587,587,587,1962,587,587,587,587,587,587,587,587,587,587,3287,587,587,587,541,587,563,1008,587,587,1022,587,587,587,587,1035,587,587,587,587,1053,587,587,587,587,587,2945,587,587,2948,587,587,2951,587,2952,2953,2954,0,0,0,0,1216,0,0,0,0,1221,0,0,0,0,0,0,0,1258,0,0,0,0,0,0,0,0,0,365,299,0,0,0,0,0,0,1144,0,0,1256,0,0,0,0,0,0,0,0,1235,0,0,0,0,0,0,2891776,0,0,0,0,0,2392064,2412544,0,0,0,0,0,0,2123,0,0,0,0,0,0,0,0,0,0,2727936,0,0,0,3084288,0,0,0,1267,0,0,0,0,0,0,0,541,541,541,541,541,541,541,541,541,1741,541,541,541,1309,541,541,541,541,541,541,541,541,541,541,541,541,541,3045,541,3047,563,587,587,1556,587,587,1079,0,0,0,0,0,0,0,0,0,0,3e3,0,0,0,0,0,1621,0,0,1624,0,1626,0,0,0,0,0,0,0,0,0,0,0,3198,3199,0,0,0,0,0,0,0,1722,0,0,0,0,0,0,0,0,0,0,0,683,684,685,0,0,541,541,541,541,1780,541,541,541,541,541,541,541,541,541,541,541,541,1820,541,541,1360,0,563,563,563,563,563,563,563,563,563,563,1836,563,563,563,563,563,2263,563,563,563,563,563,563,563,563,563,563,1433,563,563,563,563,563,1875,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2872,1943,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2359,0,0,2135,0,0,0,0,0,0,0,0,0,0,0,0,0,1618,0,0,2146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2484,0,0,0,0,541,541,541,2163,2164,541,541,541,541,541,541,541,541,2180,541,541,541,541,2185,541,541,541,541,541,2228,541,541,541,541,541,541,541,541,541,541,0,0,563,563,563,563,2857,0,0,563,563,563,2247,563,2249,563,563,563,563,563,563,563,563,2320,563,563,563,563,563,0,0,563,563,563,2315,563,563,563,563,563,563,563,563,563,563,0,0,988,587,587,587,587,0,0,587,587,587,2334,587,2336,587,587,587,587,587,587,587,587,1965,1966,1968,587,587,587,587,587,587,587,587,2402,587,587,587,587,587,587,587,587,587,587,541,587,0,0,0,541,587,563,541,541,897,541,541,563,563,970,563,0,997,587,1076,1048,587,78115,1079,0,0,0,0,0,0,0,0,458,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,1147355,0,0,2438,0,0,0,0,0,0,2443,0,0,0,2446,2447,0,0,0,0,0,1610,0,0,1613,0,0,0,0,0,0,0,0,1584,0,0,0,0,0,0,0,0,1683,0,0,0,0,0,0,0,0,334,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1134,0,0,0,0,2487,0,0,0,0,0,0,0,0,0,0,0,2498,0,0,0,2515,0,0,0,0,0,0,0,0,0,2523,0,541,541,541,541,541,3576,563,563,563,3580,563,563,563,563,563,563,2290,563,563,563,563,563,563,563,563,563,1899,563,563,563,563,563,1906,2537,2538,541,541,541,541,541,2543,541,2545,541,541,541,541,2549,541,541,541,541,541,3614,3615,541,563,563,563,563,563,563,563,563,3424,563,563,587,587,587,587,587,563,563,2598,563,563,2601,2602,563,563,563,563,563,2607,563,2609,563,0,999,1039,587,1050,587,78115,1079,0,0,0,0,0,0,0,0,3184,0,0,0,0,0,0,0,0,2750,0,0,0,0,0,0,0,0,0,2732032,0,0,0,0,0,0,563,563,563,2613,563,563,563,563,563,563,563,563,2619,563,563,563,563,563,3624,587,587,587,587,587,587,587,587,587,587,1967,587,587,587,1972,587,587,563,2639,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1402,563,587,587,587,2673,587,2675,587,587,587,587,2679,587,587,587,587,587,587,2676,587,587,587,587,587,587,587,587,587,1469,1476,587,587,587,587,587,587,587,587,2685,587,587,587,587,587,587,587,587,2693,587,587,587,587,587,1979,587,587,587,587,587,587,587,587,587,587,2926,2927,587,587,587,587,2930,587,587,587,587,587,2701,587,587,587,587,2705,587,587,587,587,587,587,587,2378,2379,587,587,587,587,587,587,587,2406,587,587,2409,2410,587,587,2176,2348,0,2745,0,0,0,0,0,0,0,2751,2752,2753,0,0,0,0,0,0,0,69632,73728,172032,0,0,0,0,65536,0,2772,0,2774,0,0,0,0,2778,0,0,0,0,2783,0,0,2786,541,541,2828,541,541,541,541,541,541,541,541,541,541,541,541,541,1771,541,541,541,541,541,2838,541,541,541,541,541,541,541,541,541,541,541,541,541,3337,563,563,541,2847,541,541,2850,541,541,2853,541,0,0,2854,563,563,563,563,563,2277,563,563,2280,563,563,563,563,563,563,563,3081,563,563,563,563,563,563,563,563,3355,563,587,587,587,587,587,587,563,563,2875,563,563,563,563,563,563,563,563,563,563,563,563,563,2324,0,0,563,563,563,563,2886,563,563,563,563,563,563,563,563,563,563,563,2606,563,2608,563,563,563,563,563,2896,563,563,2899,563,563,2902,563,0,0,2903,587,587,587,587,587,3284,587,587,587,587,587,587,587,541,587,563,541,541,563,563,587,587,587,2921,587,587,2924,587,587,587,587,587,587,587,587,587,587,587,2666,587,587,587,587,0,0,0,0,0,2972,2973,0,0,0,0,2978,0,0,0,0,0,0,0,69632,73728,221184,0,0,0,0,65536,0,3021,0,0,3023,0,0,541,541,3028,541,541,541,541,541,541,541,541,2205,2206,541,541,541,541,541,541,0,0,3160,0,3162,0,0,0,3166,0,0,0,0,0,0,0,0,2518,0,0,0,0,0,0,541,541,541,541,3030,541,541,541,541,3034,3234,3235,563,563,563,563,3239,3240,563,563,563,563,563,3244,563,563,563,563,1445,563,563,563,563,26028,1360,988,587,1455,587,587,0,3632,0,0,0,0,541,541,541,541,541,3641,541,563,563,563,563,587,587,587,587,587,587,587,3263,3264,587,587,587,587,587,587,3435,587,587,587,587,587,587,587,541,563,3268,3269,587,587,587,587,587,3273,587,587,587,587,587,587,587,587,2393,587,587,587,587,587,587,587,3279,587,587,587,587,587,587,587,587,587,587,587,587,541,587,563,2721,541,0,0,0,3312,0,0,0,0,0,0,0,0,0,0,0,0,1633,0,0,0,541,3404,541,541,541,541,541,541,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3419,563,563,563,563,563,563,563,587,587,587,587,587,3113,587,587,587,587,587,0,3443,0,0,3446,0,0,0,3180,0,0,0,0,0,0,0,1583,0,1585,0,0,0,0,0,0,0,1106,0,0,0,0,0,0,0,0,0,756,0,0,0,0,0,0,0,0,541,541,3458,541,541,541,541,3463,541,541,541,541,3468,541,541,541,541,872,541,541,541,541,541,541,541,541,541,541,541,541,1316,541,541,541,563,587,587,3489,587,587,587,587,3494,587,587,587,587,3499,587,587,587,587,587,3364,587,587,587,587,587,587,587,587,587,587,2664,587,587,2667,2668,587,587,563,563,3645,3646,563,563,563,587,587,587,3651,3652,587,587,587,0,541,587,563,541,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,2730,0,0,563,587,0,541,563,587,3691,3692,3693,3694,0,541,563,587,0,0,0,0,0,0,0,0,3180,0,0,0,0,0,3453,342,343,344,345,346,0,0,0,0,0,0,0,0,0,0,0,713,0,0,0,0,0,0,0,391,0,0,0,0,0,0,0,0,0,0,0,0,1674,0,0,0,345,345,0,346,345,0,344,345,455,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,472,487,496,496,504,496,506,496,496,506,506,496,506,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,521,554,577,554,577,554,554,577,554,601,577,577,577,577,577,577,577,601,601,601,554,601,601,601,601,601,601,601,601,577,577,554,577,601,577,601,1,656,657,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1590,1591,672,673,0,675,676,0,0,0,0,0,682,0,0,0,0,0,0,0,2804,0,0,0,541,2808,541,541,541,0,0,0,0,692,0,0,0,0,0,0,699,365,365,365,0,0,0,0,0,1658,0,0,0,0,0,0,0,0,0,0,0,3180,0,0,0,3308,0,719,0,721,0,723,0,0,0,0,0,0,0,0,0,733,0,0,0,0,646,752,753,754,0,0,0,0,0,760,761,0,0,0,0,0,1680,0,0,0,0,0,0,0,0,0,0,0,3180,0,3306,0,0,763,764,675,0,0,0,0,0,0,0,0,0,0,779,780,0,0,0,0,0,1696,1697,1698,1699,0,0,0,0,0,0,0,0,755,0,0,0,0,0,0,0,0,772,0,0,0,0,0,0,0,0,782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1601,0,0,761,0,0,787,0,0,0,0,0,0,0,0,0,794,675,723,0,692,811,0,0,0,0,761,0,0,0,0,0,0,0,1591,0,0,0,0,0,0,0,0,0,1662,0,0,0,0,0,0,0,0,754,820,821,0,0,0,0,0,0,754,0,0,825,699,0,0,0,830,0,0,0,832,0,0,0,692,699,0,0,692,830,830,0,0,0,0,0,0,0,0,0,692,541,541,851,855,858,541,866,541,541,541,881,883,886,541,541,541,898,902,541,541,541,541,541,2541,541,541,541,541,541,541,541,541,541,541,541,541,3044,541,541,541,563,563,563,971,975,563,563,563,563,0,587,587,587,998,1002,1005,587,1013,587,587,587,1028,1030,1033,587,587,587,1045,1049,587,587,587,587,587,1995,587,587,587,587,587,2002,587,587,587,587,587,587,2946,587,587,587,587,587,587,541,587,563,1073,0,998,587,1045,1049,1078,78115,1079,0,0,0,0,0,0,0,0,2779,0,0,0,0,0,0,0,0,303,303,303,303,0,303,303,303,0,0,0,0,1168,0,0,0,0,0,0,0,0,0,0,0,729,0,0,0,0,0,0,1199,0,0,0,0,0,0,0,0,0,0,1209,0,0,0,0,0,0,2912256,0,3207168,2465792,0,0,2719744,0,0,0,0,0,0,541,541,541,3397,541,541,541,541,3401,541,0,0,1214,0,0,0,0,0,0,0,0,0,0,0,0,0,1634,0,0,0,0,1254,0,0,0,0,0,0,0,0,0,0,0,0,0,1665,0,0,1321,541,541,541,541,541,541,541,541,541,541,1331,541,541,1338,541,541,541,541,873,541,541,541,541,541,541,541,541,541,541,541,541,1332,541,541,541,563,563,1443,563,563,563,563,563,563,26028,1360,988,587,587,587,587,587,587,3548,587,3550,587,587,3552,587,587,0,0,0,0,0,0,541,541,541,3639,3640,541,541,563,1501,587,587,1505,587,587,587,587,587,587,587,587,587,587,1515,587,0,0,0,541,587,563,541,541,899,541,541,563,563,972,563,0,1074,587,587,1052,587,78115,1079,0,0,0,0,0,0,0,0,2445312,0,2842624,0,0,0,2637824,0,587,1522,587,587,587,587,587,587,587,587,587,587,1535,587,587,587,587,587,2013,587,541,587,563,541,541,541,541,563,563,563,563,587,587,587,587,0,0,0,0,0,0,1666,0,1668,0,0,0,1670,0,748,0,0,0,0,0,0,0,0,3174,0,0,0,0,0,0,0,0,791,0,0,0,0,0,0,0,0,833,0,0,0,0,0,0,808,0,0,1693,0,0,0,0,0,0,1700,0,0,0,0,0,0,0,1660,1661,0,0,0,0,0,0,0,0,710,0,0,0,0,0,0,0,0,726,0,0,0,0,0,0,0,0,0,274432,274432,274432,0,274432,274432,274432,541,541,1762,541,541,541,541,541,541,541,541,1769,541,541,541,1773,541,541,1778,541,541,541,541,541,541,541,541,541,541,541,541,541,1788,541,541,0,563,1828,563,563,563,563,563,563,563,1835,563,563,563,563,563,563,3250,563,563,563,563,563,563,563,563,563,2321,563,563,563,563,0,0,563,1908,563,563,563,563,563,563,563,563,563,26028,0,587,1924,587,0,0,0,541,587,563,541,541,900,541,541,563,563,973,563,563,563,563,2262,563,563,563,563,563,563,563,563,563,563,563,1434,563,563,563,563,587,587,587,1960,587,587,587,1964,587,587,1969,587,587,587,587,587,587,2688,587,587,587,587,587,587,2695,587,587,563,563,587,587,587,587,0,0,0,2031,0,1082,0,0,0,2033,0,1086,0,0,0,2035,0,1090,0,0,0,2037,0,1094,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1620,2587,0,1825,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2610,2650,563,563,563,0,0,0,2653,0,1921,587,587,587,587,587,587,587,3549,587,587,587,587,587,587,0,0,3672,0,541,541,541,541,563,563,0,0,2969,0,0,0,0,0,0,0,0,0,0,0,0,0,2102,0,0,0,0,0,3161,0,0,0,0,0,0,0,0,0,0,0,0,1703,0,0,0,0,0,3319,541,541,541,541,541,541,541,3324,541,541,541,541,541,541,541,2832,541,541,541,541,541,541,541,541,541,2573,541,541,541,541,541,541,587,587,3361,587,587,587,587,587,587,587,587,587,587,587,587,587,2709,587,587,3379,0,0,3382,0,0,0,0,3180,3387,0,0,0,0,0,0,0,1682,0,1684,0,0,0,0,0,0,0,1114,0,0,0,0,1118,0,0,1121,541,541,541,541,3407,541,541,541,563,563,563,3412,563,563,563,563,563,2289,563,563,563,563,563,563,563,563,563,563,2605,563,563,563,563,563,3416,563,563,563,563,563,3422,563,563,563,563,587,587,587,3428,587,0,0,0,541,587,563,850,541,1066,901,541,923,563,1071,974,587,587,587,3432,587,587,587,587,587,3438,587,587,587,587,541,563,563,563,563,2276,563,563,563,563,563,563,2282,563,2284,563,2287,563,587,587,587,587,587,3492,587,587,587,3496,587,587,587,587,587,587,2704,587,587,587,587,587,587,587,587,587,1470,587,587,587,587,587,587,0,0,3657,0,541,541,541,541,541,541,563,563,563,563,563,563,936,563,563,563,563,563,563,563,563,587,3687,3688,3689,3690,0,541,563,587,0,541,563,587,0,0,0,0,0,0,0,0,3180,0,0,3450,3451,0,0,389,0,0,0,393,389,0,0,0,0,0,0,0,0,0,0,0,122880,0,0,0,0,0,0,0,405,0,347,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,1709,0,0,0,0,0,0,0,0,0,0,399,0,0,0,0,0,0,0,436,0,0,443,0,0,0,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,522,522,522,522,522,0,0,0,0,0,0,0,0,0,522,522,522,522,522,522,522,522,522,555,578,555,578,555,555,578,555,602,578,578,578,578,578,578,578,602,602,602,555,602,602,602,602,602,602,602,602,578,578,617,622,602,622,628,1,0,0,0,751,0,0,0,0,0,0,0,0,0,0,0,0,2061,0,0,0,962,563,563,563,563,980,563,563,563,0,587,587,992,587,587,587,587,587,2350,587,587,587,587,587,587,587,587,587,587,1936,587,587,587,587,587,1107,0,0,0,0,1112,0,0,0,0,0,0,0,0,0,0,0,167936,167936,167936,167936,167936,167936,167936,1360,914,563,563,563,1366,563,563,563,563,563,563,563,563,563,1380,563,563,1404,563,563,563,563,563,563,563,563,563,563,563,563,563,2620,563,563,563,1441,563,563,563,563,563,563,563,26028,1360,988,587,587,587,1458,563,587,587,587,587,587,1079,0,1562,0,0,0,1568,0,0,0,0,0,0,1627,1628,1629,0,0,0,0,0,0,0,0,343,0,0,0,0,0,0,0,0,403,0,0,0,0,0,0,0,0,407,407,407,407,0,407,407,407,1574,0,0,0,1580,0,0,0,0,0,0,0,0,0,0,0,808,541,541,852,541,1605,0,0,0,0,0,0,0,0,0,0,0,0,0,1619,0,0,0,0,0,1723,0,0,0,0,0,0,0,0,0,0,0,2625536,0,2699264,2715648,0,1973,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2373,563,563,587,587,587,587,0,0,1563,0,0,0,0,0,1569,0,1575,0,1581,0,0,0,0,0,0,0,0,0,0,0,1262,0,0,0,0,0,0,0,0,1575,0,0,0,0,0,1581,0,0,0,0,0,0,0,2974,0,0,0,0,0,0,0,0,0,365,0,253952,0,0,0,0,541,541,541,2190,541,541,541,541,2194,541,2196,541,541,541,541,541,541,541,3039,541,541,541,541,541,541,541,541,541,887,541,541,541,541,541,541,563,563,2275,563,563,563,563,2279,563,2281,563,563,563,563,563,563,1896,563,563,563,563,563,563,563,563,563,1397,1399,563,563,563,563,563,587,587,2362,587,587,587,587,2366,587,2368,587,587,587,587,587,587,1465,587,587,587,587,587,587,1480,587,587,0,0,0,0,0,2489,0,0,0,0,0,0,0,0,0,0,0,196608,0,0,0,0,563,563,2625,563,563,563,563,563,563,563,563,563,563,563,563,563,2648,563,563,0,0,0,0,3024,0,541,541,541,541,541,541,541,541,541,541,541,1330,541,541,541,541,0,3380,0,0,0,0,0,0,3180,0,0,0,0,3391,0,0,0,0,0,328,0,69632,73728,0,0,0,0,0,65536,0,3393,0,0,0,0,0,541,3396,541,541,3398,541,541,541,541,541,541,541,3040,541,541,541,541,541,541,541,541,541,1783,541,541,541,541,1789,541,0,3455,541,541,541,541,541,541,541,541,541,541,541,541,541,541,563,563,563,541,862,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1319,541,541,912,563,563,563,563,563,563,935,563,563,563,563,563,563,563,2291,2292,563,563,563,563,563,563,563,2319,563,563,2322,2323,563,563,0,0,1009,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2697,1059,0,0,0,541,587,563,541,541,541,541,541,563,563,563,563,563,2614,563,563,563,563,563,563,563,563,563,563,3649,587,587,587,587,587,587,587,0,1095,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2513,0,0,1623,0,0,0,0,0,0,0,0,0,0,0,0,0,2130,0,2132,1826,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3258,541,3215,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1337,541,587,587,587,3271,587,587,587,587,587,587,587,587,587,587,587,587,2370,587,587,587,0,0,0,0,348,348,350,348,348,348,348,348,348,513,348,348,0,350,348,0,0,348,348,0,0,0,0,349,0,0,0,0,0,329,0,0,0,0,0,0,0,0,0,0,0,2509,0,0,0,0,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,556,579,556,579,556,556,579,556,603,579,579,579,579,579,579,579,603,603,603,556,603,603,603,603,603,603,603,603,579,579,556,579,603,579,603,1,0,0,0,0,722,0,724,0,0,0,0,0,0,0,0,0,299,0,0,0,0,0,0,0,0,0,0,739,0,0,0,0,0,0,0,0,0,0,0,836,541,541,541,541,0,0,0,766,0,0,0,771,0,0,0,0,0,0,0,0,0,1189,0,0,0,0,0,0,541,541,541,870,541,541,541,541,541,890,892,541,541,903,541,541,541,541,541,2569,541,541,541,541,541,541,541,541,541,541,541,541,2835,541,541,541,963,965,563,563,976,563,563,563,563,0,587,587,993,999,587,587,587,587,587,3374,587,541,541,563,563,587,587,0,0,0,0,0,0,3299,0,0,0,587,587,1017,587,587,587,587,587,1037,1039,587,587,1050,587,587,587,587,587,2364,587,587,2367,587,587,587,587,587,587,587,2677,587,587,587,587,587,587,2682,587,0,0,0,1151,0,1153,0,1155,0,0,0,0,0,0,0,0,0,1231,541,541,541,541,541,541,0,1181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1636,0,0,1198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1675,0,0,1266,0,0,0,0,0,0,0,1181,541,541,541,541,541,541,541,1326,541,541,541,541,541,541,541,1339,1305,1307,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1358,541,541,541,1343,541,541,541,541,541,541,541,541,1354,1355,541,541,541,541,541,541,2840,541,541,541,541,541,541,541,541,541,541,3056,541,3058,541,541,541,1360,914,563,563,563,563,1367,563,563,563,563,563,563,563,563,563,3242,563,563,563,563,563,563,563,563,563,1421,563,563,563,563,563,563,563,1435,563,563,563,563,563,2627,563,563,563,563,563,563,2635,563,563,563,1459,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2942,587,587,587,1489,1491,587,587,587,587,587,587,587,587,587,587,587,2707,2708,587,587,587,1554,587,1555,587,587,1558,1079,0,0,0,0,0,0,0,0,0,306,204800,204800,0,205106,204800,1,0,1677,0,0,1679,0,0,0,0,0,0,0,0,0,0,0,1159,0,0,0,0,541,541,541,541,1763,541,541,541,541,541,541,541,541,541,541,541,541,2208,541,541,541,0,563,563,563,563,563,563,563,1833,563,563,563,563,563,563,563,2879,563,563,563,563,563,563,563,563,2644,563,563,563,2647,563,563,563,1858,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1857,563,563,563,1909,563,563,563,563,1915,563,563,563,26028,0,587,587,587,587,587,2376,587,587,587,587,587,587,587,587,587,587,2717,541,587,563,541,541,587,587,587,587,1929,587,587,587,587,587,587,587,587,587,587,587,2938,587,587,587,587,587,1991,587,587,587,1996,587,587,587,587,587,587,587,587,2005,587,0,0,0,541,587,563,852,892,541,903,541,925,965,563,976,587,587,587,2011,587,587,587,541,587,563,541,541,541,541,563,563,916,563,563,563,932,563,563,563,563,563,563,563,1864,563,563,563,1868,563,563,1873,563,2077,0,0,0,0,0,0,0,0,2085,0,0,0,0,0,2089,0,0,2091,0,0,0,0,0,0,0,2099,0,0,0,0,0,0,0,3012,3013,0,0,0,0,3018,0,0,2133,2134,0,2136,0,0,0,0,0,0,0,0,0,0,2144,0,0,2149,2150,0,0,0,0,0,2154,0,0,0,0,0,0,0,2160,541,541,541,541,541,541,2167,541,541,541,541,541,541,1288,541,541,541,541,1298,541,541,541,541,541,541,1325,541,541,541,541,541,541,541,541,541,541,1801,541,541,541,541,541,2202,541,541,541,541,541,541,541,541,541,541,541,541,2209,541,541,541,541,541,2815,541,2818,541,541,541,541,2823,541,541,541,541,541,541,3409,541,563,563,563,563,563,563,563,563,3479,563,3481,3482,563,3484,563,541,541,541,2215,541,541,541,541,541,541,541,541,541,541,541,541,895,541,541,541,0,0,2244,563,563,563,563,563,563,563,2252,563,563,563,563,563,563,3534,563,3536,563,563,3538,563,563,587,587,563,563,2301,563,563,563,563,563,563,563,563,563,563,563,563,563,2893,563,563,0,0,2331,587,587,587,587,587,587,587,2339,587,587,587,587,587,587,2715,587,587,587,587,541,587,563,541,541,587,587,587,587,2363,587,587,587,587,587,587,2369,587,2371,587,2374,587,587,2388,587,587,587,587,587,587,587,587,587,587,587,587,587,2918,587,587,0,2474,0,0,0,0,0,0,0,0,0,2482,0,0,0,0,0,0,0,122880,122880,122880,122880,122880,0,122880,0,2105632,0,0,2514,0,0,0,0,0,0,0,0,0,2522,0,0,541,541,541,541,541,3461,541,541,541,3465,541,541,541,541,541,541,1287,541,541,541,541,541,541,541,541,541,541,2546,541,541,541,541,541,541,541,541,541,2540,541,541,541,541,541,541,541,541,541,541,541,541,2222,541,541,541,563,563,563,2599,563,563,563,563,563,2604,563,563,563,563,563,563,2278,563,563,563,563,563,563,563,563,563,2632,563,563,563,563,563,563,2670,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3143,587,587,587,587,2686,587,587,587,587,587,587,587,587,587,587,587,3125,587,587,587,587,541,541,2723,563,563,563,2725,587,587,587,2727,2728,0,0,0,0,0,0,0,172032,172032,172032,172032,172032,172032,172032,172032,1,0,0,2746,0,2747,0,0,0,0,0,0,0,0,0,0,0,1175,0,0,0,0,0,0,0,0,2762,0,0,0,0,0,0,0,0,0,0,0,1192,0,1195,0,0,2811,541,2812,541,541,541,541,541,541,541,541,541,541,541,541,541,1804,541,541,541,541,541,2849,541,541,541,541,541,0,0,563,563,563,563,563,563,563,563,563,563,563,563,2255,563,2858,563,2859,563,563,563,563,563,563,563,563,563,563,563,563,563,3086,563,563,587,587,2907,587,2908,587,587,587,587,587,587,587,587,587,587,587,3139,587,3141,587,587,0,0,0,2983,0,0,0,0,0,0,0,0,0,0,0,0,2073,0,0,0,0,0,3381,0,0,0,0,0,3180,0,0,0,3390,0,0,0,0,0,0,1659,0,0,0,0,0,0,0,0,0,0,114688,0,241664,258048,0,0,3430,587,587,587,587,587,587,587,587,587,3439,587,587,587,541,563,563,563,563,2303,563,563,563,563,563,563,563,563,563,563,563,26028,0,587,587,587,541,541,541,541,3518,541,541,541,541,541,541,541,541,541,563,563,563,3232,563,563,563,563,563,563,3531,563,563,563,563,563,563,563,563,563,563,587,587,587,3357,587,587,587,587,587,3545,587,587,587,587,587,587,587,587,587,587,0,0,0,0,0,0,3637,541,541,541,541,541,541,3643,563,563,563,563,3647,563,563,587,587,587,587,587,3653,587,587,0,0,0,0,3635,0,541,541,541,541,541,541,541,563,2724,563,563,587,2726,587,587,0,0,0,0,0,0,0,0,3607,0,541,541,541,541,0,3656,0,3658,541,541,541,541,541,541,563,563,563,563,563,563,937,563,563,563,563,563,563,563,0,0,0,0,394,395,0,396,0,0,0,0,0,396,0,0,0,0,0,331,332,333,0,0,0,0,0,0,0,0,0,560,583,560,583,560,560,583,401,0,0,0,0,0,368,376,404,0,0,0,0,0,368,0,0,396,0,0,0,0,0,351,0,0,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2744,409,411,0,0,368,376,0,69632,73728,0,0,0,0,427,65536,0,0,0,0,0,2044,2045,0,0,0,0,0,0,0,0,0,361,0,0,0,0,0,361,427,427,437,0,427,0,411,427,456,0,0,0,0,0,0,0,0,106496,0,106496,0,0,0,0,106496,396,0,409,0,497,497,0,497,497,497,497,497,497,497,497,523,523,523,523,523,456,456,456,456,531,456,456,532,456,523,537,523,523,523,537,523,523,523,523,539,557,580,557,580,557,557,580,557,604,580,580,580,580,580,580,580,604,604,604,557,604,604,604,604,604,604,604,604,580,580,618,623,604,623,629,1,0,0,0,643,0,0,0,0,0,0,0,0,0,0,0,0,2101,0,0,0,783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2757,0,0,0,802,0,0,0,0,0,0,0,0,0,0,0,0,2129,0,0,0,587,587,587,1023,1025,587,587,587,587,587,587,587,587,587,587,587,3275,587,587,587,587,0,0,0,0,1096,0,0,1098,0,0,0,0,0,0,0,0,0,1630,0,0,0,0,0,1636,0,0,0,0,1111,0,0,0,0,0,0,0,0,0,0,0,1207,0,0,0,0,1098,1227,0,0,0,0,0,0,1234,0,0,0,0,0,0,0,0,155648,0,0,0,0,0,0,0,0,1239,0,0,0,0,0,0,0,0,0,0,1239,1248,0,0,0,0,0,0,1681,0,0,0,0,0,0,1687,0,1689,0,0,0,0,1239,1269,1270,0,1239,0,541,541,541,541,541,541,541,3207,3208,541,541,541,541,3212,3213,1278,541,541,541,1282,541,541,1293,541,541,1297,541,541,541,541,541,541,541,3054,541,541,541,541,541,541,541,541,541,1784,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,1370,563,563,563,1374,563,563,563,563,1847,563,563,563,563,563,563,563,563,563,563,563,2308,563,563,563,563,1385,563,563,1389,563,563,563,563,563,563,563,563,563,563,563,563,2295,563,563,563,563,563,563,1406,563,563,563,1410,563,563,563,563,563,563,563,563,2901,563,563,0,0,587,587,587,587,587,587,1462,587,587,587,1466,587,587,1477,587,587,1481,587,587,587,587,587,3434,587,3436,587,587,587,587,587,587,541,563,587,1502,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3128,587,0,1622,0,0,0,0,0,0,0,0,0,0,0,0,1635,0,0,0,0,0,2067,0,0,0,0,0,0,0,0,0,2076,1637,0,0,0,1641,0,0,0,1645,0,0,0,1649,0,0,0,0,0,0,2056,0,2057,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1676,0,563,563,1844,563,563,563,563,563,563,563,563,563,563,563,563,563,3540,587,587,1958,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3127,587,3129,587,587,2010,587,587,587,587,1749,1940,1844,541,541,541,541,563,563,917,563,563,563,934,563,563,948,563,563,563,563,563,1895,563,563,563,1900,563,563,563,563,563,563,1914,563,563,563,563,26028,0,587,587,587,0,2118,0,0,0,0,0,0,2125,0,0,0,0,0,0,0,0,184726,184932,184932,184932,0,184932,184932,184932,0,0,2159,0,541,541,2162,541,541,541,541,541,541,541,541,541,541,2833,541,541,541,541,541,541,541,2227,541,541,541,541,541,541,541,541,541,541,541,0,0,563,2855,563,563,563,0,0,563,563,2246,563,563,563,563,563,563,563,563,563,563,563,3255,563,563,563,563,563,563,2314,563,563,563,563,563,563,563,563,563,563,563,0,0,587,2904,587,0,0,587,587,2333,587,587,587,587,587,587,587,587,587,587,587,3440,587,587,541,563,587,587,587,587,2390,587,587,587,587,587,587,587,587,587,587,587,2928,587,587,587,587,587,587,587,587,2401,587,587,587,587,587,587,587,587,587,587,587,541,587,0,0,0,541,587,563,1064,541,541,905,541,1069,563,563,978,541,541,541,2567,541,541,541,541,541,541,541,541,541,541,541,541,900,541,541,541,2698,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3277,587,587,0,2759,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1716,0,541,2827,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1758,541,563,2874,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2285,563,587,587,587,2923,587,587,587,587,587,587,587,587,587,587,587,587,2382,587,587,587,0,0,2993,0,0,0,0,0,0,0,0,0,0,0,0,0,2433,0,2435,3171,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2771,3202,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2577,3225,541,541,541,541,541,541,541,541,563,563,563,563,563,563,563,2888,563,563,563,563,563,563,563,563,3241,563,563,563,563,563,563,563,587,587,587,3282,587,587,587,587,587,587,587,587,587,541,587,563,2018,541,541,541,2022,563,541,3289,563,3291,587,3293,3294,0,0,0,0,3298,0,0,0,0,0,0,0,1134592,0,365,0,0,0,1134592,0,0,0,1134592,1134592,0,0,1134592,0,0,1134592,0,0,0,3311,0,0,0,0,3315,0,0,0,0,0,0,0,0,0,1725,0,0,0,0,0,0,3318,0,541,541,541,3320,541,541,541,3323,541,541,541,541,541,541,541,1751,541,541,541,541,541,541,541,541,541,2586,0,563,563,563,563,563,3338,563,563,563,3341,563,563,563,563,563,563,563,563,563,563,563,26028,1921,587,587,587,587,3360,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3554,0,0,3403,541,3405,541,541,541,541,541,563,563,563,563,563,563,563,563,563,563,3075,563,563,3418,563,3420,563,563,563,563,563,563,587,587,587,587,587,587,587,3596,587,3598,587,587,0,0,0,0,3560,0,0,0,0,541,541,541,541,541,541,541,541,541,2169,541,541,541,541,541,3574,541,541,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,1417,3586,563,563,563,587,587,587,587,587,587,587,587,587,587,3599,587,0,0,0,853,1e3,926,849,1065,894,541,541,922,1070,967,563,0,587,587,587,587,587,78115,0,0,0,0,0,0,0,0,0,365,0,305,0,0,0,0,3611,541,541,541,541,541,541,541,563,563,3617,563,3618,563,563,563,563,587,587,587,587,3594,587,587,587,587,587,587,587,541,541,563,563,587,587,3378,0,0,410,356,0,0,0,0,0,69632,73728,0,0,0,0,0,65536,0,0,0,0,0,2122,0,0,0,0,0,0,0,0,0,0,304,304,0,0,0,0,0,0,354,0,0,0,356,0,0,473,473,473,473,473,473,473,478,473,473,473,473,473,473,473,473,473,473,473,478,473,484,473,0,0,473,0,0,0,0,0,0,0,0,524,528,528,528,528,473,473,473,473,473,473,473,478,473,528,524,528,528,528,524,528,528,528,528,540,558,581,558,581,558,558,581,558,605,581,581,581,581,581,581,581,605,605,605,558,605,605,605,605,605,605,605,605,581,581,619,624,605,624,630,1,0,0,0,0,644,0,0,0,0,0,0,0,0,0,0,0,1606,0,0,0,0,688,0,0,0,0,0,0,0,0,0,0,0,365,365,365,0,0,0,0,0,2138,0,0,0,0,0,0,0,0,0,0,0,2768,0,0,0,0,0,0,0,738,0,0,0,644,738,0,744,745,644,0,0,0,0,0,0,790,0,0,0,0,0,0,0,0,0,2058,0,0,0,0,0,0,0,0,799,0,804,0,0,0,0,0,0,804,0,0,0,0,0,644,0,0,0,799,0,804,0,790,0,819,0,0,0,665,0,0,0,0,819,0,0,0,0,0,0,0,2473984,2478080,0,0,0,0,0,0,0,0,0,2767,0,0,0,0,0,0,0,644,0,0,0,0,0,0,0,0,790,0,0,0,0,0,0,0,3165,0,0,0,0,0,0,0,0,0,541,563,541,563,541,541,563,0,0,790,790,0,644,0,0,790,804,842,0,541,848,541,541,541,541,541,2839,541,541,541,2842,541,2844,541,541,541,541,541,541,879,541,884,541,891,541,894,541,541,908,541,541,867,871,877,541,882,541,541,541,541,541,899,541,541,541,541,541,541,2852,541,541,0,0,563,563,563,563,563,563,563,563,563,563,563,563,563,2256,563,563,563,972,563,563,563,563,563,0,587,587,995,587,587,587,587,587,2687,587,587,587,587,587,587,587,587,587,587,2937,587,587,587,587,587,587,587,1014,1018,1024,587,1029,587,587,587,587,587,1046,587,587,587,587,587,1026,587,1031,587,1038,587,1041,587,587,1055,587,1149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2799,0,0,0,1200,0,0,0,0,0,1205,0,0,0,0,0,0,0,1714,0,0,0,0,0,0,0,0,0,2140,2141,0,0,2143,0,0,1099,0,0,0,1230,0,1232,0,0,0,0,0,0,0,0,0,351,352,353,0,0,0,0,1240,0,0,0,0,0,0,0,0,0,0,1246,0,1249,1200,0,0,0,0,0,2427,0,0,0,0,0,0,0,0,0,0,336,337,0,0,0,0,1230,1252,0,1255,0,0,0,0,0,1130,0,0,0,0,1264,0,0,1149,1264,0,1271,541,541,541,541,1277,1360,914,1362,563,563,563,563,563,1369,563,563,563,563,1375,563,563,563,563,1862,563,563,563,563,563,563,563,563,563,563,563,3084,563,563,563,563,563,563,563,1407,563,563,563,563,1412,563,563,563,563,563,563,563,2900,563,563,563,0,0,587,587,587,563,1419,563,563,563,1426,1428,563,563,563,563,563,563,563,563,563,3346,563,563,563,563,563,563,587,587,1461,587,587,587,587,1467,587,587,587,587,587,587,587,587,2663,587,587,587,587,587,587,587,587,587,1488,587,587,587,587,587,587,587,587,587,587,1499,587,587,587,587,1463,587,587,587,587,587,1475,587,587,587,587,587,587,2014,541,587,563,1791,541,2020,541,1886,563,587,587,1504,587,587,587,587,587,587,587,587,1511,587,587,587,1518,1520,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2396,2397,2398,587,587,1542,587,0,541,587,563,541,541,541,541,541,563,563,563,563,563,2862,563,2865,563,563,563,563,2870,563,563,563,563,587,587,587,587,587,1079,0,0,1563,0,0,0,1569,0,0,0,0,0,376,0,0,0,0,368,0,385,0,351,0,0,1575,0,0,0,1581,0,0,0,0,0,0,0,0,0,0,303,303,0,0,0,0,1592,1593,0,0,0,0,0,1599,0,0,0,0,0,0,0,0,0,2098,0,2100,0,0,0,0,0,1638,0,0,0,0,0,0,0,1646,1647,0,0,0,0,0,0,0,3197,0,0,0,0,0,0,3200,0,0,1654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2038,0,1690,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3005,0,1706,1707,0,0,0,1710,0,0,0,0,0,1714,0,0,1717,0,0,1730,0,1732,1706,541,541,541,541,541,541,541,541,541,541,541,2547,541,541,541,541,541,1744,541,541,541,541,1750,541,541,541,541,541,541,541,541,541,541,3220,541,541,541,541,541,541,1761,541,541,541,541,1765,541,541,541,541,541,541,541,541,541,541,3335,541,541,563,563,563,541,1776,541,541,541,1781,541,541,541,541,541,541,541,541,541,541,541,2559,541,541,541,541,1808,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1360,914,563,563,563,563,563,563,563,563,563,563,563,563,1376,563,0,587,587,1046,587,587,78115,1079,0,0,0,0,0,0,0,0,225890,225890,225890,225890,225741,225890,225890,225890,0,563,563,563,563,563,563,563,563,563,563,563,563,1839,563,563,563,563,1877,563,563,563,563,563,563,563,563,563,563,563,2869,563,563,563,563,563,563,1845,563,563,563,563,563,563,563,563,563,563,1856,563,563,563,563,1894,563,563,563,1898,563,563,563,563,563,563,563,1450,563,26028,1360,988,1454,587,587,587,563,563,1860,563,563,563,563,563,563,563,563,563,563,1871,563,563,563,563,1911,1913,563,563,563,563,563,26028,0,587,587,587,587,587,1506,587,587,1508,587,587,587,1512,587,587,587,0,1286,1470,1378,541,541,541,1549,541,563,563,563,1553,563,1876,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2297,2298,563,563,587,2027,587,587,0,0,0,0,0,0,0,0,0,0,3511,0,3513,0,541,0,0,0,2080,2081,0,0,2083,2084,0,0,0,0,0,0,0,0,286720,0,0,0,0,0,0,0,0,0,286720,286720,0,286720,286720,1,0,0,0,2106,0,0,0,0,2109,2110,0,0,0,0,0,0,0,2069,0,0,0,0,0,0,0,0,0,541,564,541,564,541,541,564,541,541,541,541,2175,541,541,2179,541,541,541,2183,541,541,541,541,541,541,1347,541,541,541,541,541,541,541,541,541,563,563,3231,563,563,563,563,2225,541,541,541,541,2230,541,541,541,541,541,541,541,541,0,0,0,0,0,386,0,69632,73728,0,0,0,0,0,65536,0,2242,0,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2325,0,563,563,563,2260,563,563,2264,563,563,563,2268,563,563,563,563,563,587,587,3625,587,3626,587,587,587,587,587,587,1493,587,587,587,587,587,587,587,587,587,2380,587,587,587,587,587,587,2312,563,563,563,563,2317,563,563,563,563,563,563,563,563,0,0,0,0,0,0,587,587,2655,587,587,587,2329,0,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2680,587,587,587,587,587,587,2347,587,587,2351,587,587,587,2355,587,587,587,587,587,587,2925,587,587,587,587,587,587,587,587,587,1471,587,587,587,587,587,587,2399,587,587,587,587,2404,587,587,587,587,587,587,587,587,541,587,0,0,0,854,1001,927,541,541,541,541,910,563,563,563,563,563,1848,563,563,563,563,563,563,563,563,563,563,3097,563,3099,563,563,563,0,0,0,0,2439,0,0,0,0,0,0,0,0,0,0,0,1616,0,0,0,0,0,0,2475,0,0,0,2479,0,0,0,0,0,0,0,0,0,365,0,0,0,0,0,0,541,2525,541,541,541,541,541,541,541,541,541,541,2533,541,541,541,541,541,541,3053,541,541,3055,541,541,541,541,541,541,541,1311,541,541,541,541,541,541,541,541,541,1753,541,541,541,541,541,541,541,2551,541,541,2553,541,2554,541,541,541,541,541,541,541,2561,541,541,541,541,876,878,541,541,541,541,541,541,541,541,541,541,541,1353,541,541,541,541,541,2565,541,541,541,541,541,541,541,541,541,541,541,541,2576,541,541,541,541,1283,541,541,541,541,541,541,541,541,541,541,1304,0,0,0,563,563,2589,563,563,563,563,563,563,563,563,563,563,3537,563,563,3539,563,587,587,563,2597,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2326,0,563,563,2612,563,563,563,2615,563,563,2617,563,2618,563,563,563,563,563,2877,2878,563,563,563,563,2881,563,563,563,563,563,1863,563,563,563,563,563,563,563,563,563,563,3356,587,587,587,587,587,563,563,563,563,2626,563,563,2630,563,563,563,563,563,563,563,563,3345,563,563,563,563,563,563,563,563,563,563,563,2641,2642,563,563,563,563,563,563,563,563,563,563,26028,1360,988,587,587,587,587,2683,587,2684,587,587,587,587,587,587,587,587,2692,587,587,2696,587,0,0,0,1061,1062,1063,851,541,898,902,1068,924,563,971,975,2733,2734,0,0,2737,2738,0,0,0,0,0,0,0,0,0,0,306,307,0,0,0,0,0,2788,0,2790,0,0,0,0,0,0,0,0,0,0,0,0,2457,0,0,0,0,0,0,0,2803,0,0,0,0,0,0,541,541,541,541,541,541,541,3033,541,541,2826,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2825,2873,563,563,563,563,563,563,563,563,563,563,563,563,2883,563,563,563,563,1912,563,563,563,563,563,563,26028,0,587,587,587,587,587,2934,587,587,587,587,587,587,587,2940,587,587,587,587,2922,587,587,587,587,587,587,587,587,587,587,587,587,2932,0,2982,0,0,2984,0,0,0,0,0,0,0,0,0,0,0,1632,0,0,0,0,0,0,0,0,2995,0,0,2998,0,2999,0,0,0,0,0,0,0,2096,0,0,0,0,0,0,0,0,0,562,585,562,585,562,562,585,541,3049,541,541,541,541,541,541,541,541,541,541,541,541,541,3061,3089,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2621,563,3103,563,563,563,563,563,587,587,587,3111,587,587,587,587,587,587,1507,587,587,587,587,587,587,587,587,587,1983,1984,587,587,587,587,587,587,3131,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2929,587,587,587,587,3145,587,587,587,587,587,541,587,563,541,541,563,563,587,587,0,2962,0,0,0,0,0,0,0,0,0,2507,0,0,0,0,0,0,0,0,0,0,0,3163,0,0,0,0,0,0,0,3169,0,0,0,0,0,438,0,0,0,0,0,0,0,0,0,0,0,2142,0,0,0,0,541,3226,541,541,541,541,541,541,541,563,563,563,563,563,563,563,3095,563,563,563,563,563,563,563,563,2306,563,563,563,563,563,563,563,563,563,3236,563,563,563,563,563,563,563,563,563,563,563,563,563,2309,2310,2311,563,563,3246,563,563,563,563,563,563,3252,563,3254,563,563,563,563,563,1392,563,563,563,563,563,563,563,563,563,563,1853,563,563,563,563,563,563,563,563,587,587,587,587,587,587,587,587,587,3265,587,587,587,587,587,2703,587,587,587,587,587,587,587,587,587,587,2950,587,587,541,587,563,587,587,3281,587,3283,587,587,587,587,587,587,587,587,541,587,563,3153,541,3155,563,3157,587,0,0,0,3301,0,0,0,0,0,0,0,3180,0,0,0,0,0,0,0,3014656,3207168,0,2691072,0,0,3215360,0,0,3309,0,0,0,0,0,3314,0,0,0,0,0,0,0,0,0,365,0,0,0,0,131072,131072,563,563,3339,563,563,563,3343,563,563,563,563,563,563,563,563,563,26028,1360,988,587,587,1456,587,587,587,587,3362,587,587,587,587,587,587,587,587,587,587,587,587,3126,587,587,587,587,587,3371,587,587,587,587,541,541,563,563,587,587,0,0,0,3296,0,0,0,0,0,0,3557,3558,0,0,0,0,0,0,0,541,541,541,3568,541,541,541,541,541,1284,541,541,541,541,541,541,541,541,541,1303,563,563,3588,563,587,587,587,3593,587,587,587,587,587,587,587,587,2690,587,587,587,587,2694,587,587,3601,587,0,0,0,0,0,3604,3605,3606,0,3608,541,541,541,541,541,541,1813,541,541,541,541,1819,541,541,541,1360,563,3621,3622,563,563,587,587,587,587,587,587,587,587,587,3629,3630,563,563,587,587,587,587,3679,0,541,3680,563,3681,587,3682,0,541,541,541,541,1345,541,541,541,541,541,541,541,541,541,541,541,541,2560,541,541,541,358,359,0,0,0,0,0,0,0,365,0,293,0,0,0,0,0,0,306,0,0,0,0,0,0,0,0,0,0,1174,0,0,0,0,0,0,0,0,392,0,0,0,0,0,0,0,0,0,0,0,0,2495,0,0,0,474,474,474,488,0,0,488,359,359,359,510,359,359,359,359,474,559,606,582,582,582,582,582,582,582,606,606,606,559,606,606,606,606,606,606,606,606,582,582,559,582,606,582,606,1,541,541,868,541,541,541,541,541,541,541,541,541,541,904,541,541,541,541,541,2851,541,541,541,0,0,563,563,563,563,563,563,563,563,563,563,2254,563,563,563,587,1015,587,587,587,587,587,587,587,587,587,587,1051,587,587,587,587,587,2909,587,587,587,587,587,587,2917,587,587,587,587,587,1527,587,587,587,587,587,587,587,587,1538,1539,1197,0,0,0,0,0,0,0,1197,0,0,0,0,0,0,0,0,1134592,0,0,1134592,0,0,0,0,0,0,0,0,0,0,0,0,0,2980,0,0,541,541,1280,541,541,541,1289,541,541,541,541,541,541,541,541,541,541,3524,541,541,3526,563,563,1360,914,563,563,563,563,563,563,563,563,563,1372,563,563,563,1381,587,587,1543,0,1289,1473,1381,541,541,541,541,541,563,563,563,563,563,2898,563,563,563,563,563,0,0,587,587,587,587,587,587,2337,587,587,587,587,587,587,587,2352,587,587,587,587,2357,587,587,587,563,587,587,587,587,587,1079,0,0,0,1564,0,0,0,1570,0,0,0,0,0,2440,0,0,0,0,0,0,0,0,0,0,0,2871296,0,0,2424832,0,0,0,1576,0,0,0,1582,0,0,0,0,0,0,0,0,0,365,0,0,0,0,155648,0,0,1606,0,0,0,0,0,0,0,1614,1615,0,0,0,0,0,0,0,3385,3180,0,0,0,0,0,0,0,0,2097,0,0,0,0,0,0,0,0,2070,0,0,0,0,2074,0,0,0,0,0,0,1625,0,0,0,0,0,0,0,0,0,0,0,1648,0,0,0,0,563,1891,563,563,563,563,563,563,563,563,1902,563,563,563,563,563,1408,563,563,563,563,563,563,563,563,563,563,1867,563,563,563,563,563,587,1975,587,587,587,587,587,587,587,587,587,587,587,1987,587,587,587,587,1490,587,587,587,587,587,587,587,587,587,587,587,2381,587,587,587,587,2008,587,587,587,587,587,587,541,587,563,541,541,541,541,563,563,918,563,563,563,563,563,563,563,563,563,563,563,2634,563,563,563,563,0,2243,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2637,563,0,2330,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3276,587,587,587,0,0,2451,0,0,0,0,0,0,0,0,0,0,0,0,0,2471,0,2472,0,0,0,563,563,563,563,563,563,563,2593,563,563,563,563,563,1424,563,563,563,563,563,563,563,563,563,563,2293,563,563,563,563,563,563,587,2659,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2912,587,587,2916,587,587,587,587,0,0,0,0,0,2776,0,0,0,0,0,0,0,0,0,0,372,0,0,373,0,0,563,2895,563,563,563,563,563,563,563,563,563,0,0,587,587,587,587,2335,587,587,587,587,587,587,587,587,587,2947,587,587,587,587,587,541,587,563,587,2906,587,587,587,587,587,587,2913,587,2915,587,587,587,587,587,587,2935,587,587,587,587,587,587,587,587,587,2408,587,587,587,587,2177,2349,587,587,587,2944,587,587,587,587,587,587,587,587,587,541,587,563,563,563,563,563,563,563,587,587,587,541,587,587,587,0,541,587,563,541,1547,541,541,1550,563,1551,563,563,0,0,0,0,0,3561,0,0,0,541,541,541,541,541,541,541,541,3464,541,3466,3467,541,3469,541,541,541,541,3575,541,563,563,563,563,563,563,563,563,563,563,3423,563,563,563,3426,587,587,587,587,563,3587,563,563,587,587,587,587,587,587,587,587,587,587,587,3600,587,587,587,587,3670,587,0,0,0,0,541,541,541,541,563,563,919,925,563,563,563,563,943,563,563,563,563,563,563,3353,563,563,563,587,587,587,587,587,587,587,587,587,587,587,587,3267,0,0,360,0,0,0,0,0,0,365,0,293,0,0,0,0,0,0,331,0,0,0,0,0,0,0,331,0,0,69632,73728,0,419,419,0,0,65536,419,0,0,0,0,375,0,0,0,0,0,0,0,0,0,0,0,1663,0,0,0,0,0,0,360,0,0,0,0,0,0,0,0,0,0,0,0,0,2511,0,0,0,0,0,370,0,0,370,0,0,0,0,0,0,0,0,0,0,0,0,0,2496,0,0,560,607,583,583,583,583,583,583,583,607,607,607,560,607,607,607,607,607,607,607,607,583,583,560,583,607,583,607,1,541,863,541,541,541,541,541,541,541,541,541,541,541,541,541,541,1772,541,1010,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3123,587,587,587,587,587,587,587,563,1386,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2871,563,0,0,2760,0,0,0,0,0,0,0,0,0,0,0,0,0,2755,0,0,0,0,0,0,0,2985,0,0,0,0,0,0,0,0,0,0,406,0,0,0,0,0,0,0,0,0,3302,0,3303,0,0,0,0,3180,0,0,0,0,0,0,348,0,0,0,0,0,0,0,0,0,0,2801664,0,0,0,0,2142208,0,0,0,361,362,363,364,0,0,365,0,293,0,0,0,0,0,0,348,349,350,0,0,0,0,0,0,0,0,3180,0,3388,0,0,0,0,0,0,362,0,361,0,0,0,69632,73728,0,0,0,0,428,65536,0,0,0,0,0,2463,0,0,0,0,0,0,0,0,0,0,0,2807,541,541,541,541,428,428,0,0,428,0,362,428,457,0,0,0,0,0,0,0,0,1159168,0,1159168,0,0,0,0,1159168,0,0,0,0,498,498,0,505,505,505,505,511,512,505,505,525,525,525,525,525,457,457,457,457,457,457,457,457,457,525,525,525,525,525,525,525,525,525,561,584,561,584,561,561,584,561,608,584,584,584,584,584,584,584,608,608,608,561,608,608,608,608,608,608,608,608,584,584,620,625,608,625,631,1,563,563,563,973,563,563,563,563,563,0,587,587,587,587,587,587,1963,587,587,587,587,587,587,587,587,587,3137,587,587,587,587,587,587,587,0,2105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2052,0,0,0,0,0,541,2161,541,541,541,541,541,541,541,541,541,541,541,3336,541,563,563,563,0,0,563,2245,563,563,563,563,563,563,563,563,563,563,563,563,2882,563,563,563,0,0,587,2332,587,587,587,587,587,587,587,587,587,587,587,587,3286,587,587,587,587,541,587,563,2550,541,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2210,541,541,541,2579,541,541,541,541,541,541,541,541,541,541,0,0,0,0,0,0,2068,0,0,0,0,0,0,0,0,0,365,0,0,122880,122880,0,0,2711,587,587,587,587,587,587,587,587,587,587,541,587,563,541,541,541,2021,563,563,562,609,585,585,585,585,585,585,585,609,609,609,562,609,609,609,609,609,609,609,609,585,585,562,585,609,585,609,1,0,0,0,705,0,0,0,0,0,0,0,0,0,0,0,0,2742,0,0,0,0,735,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2075,0,541,864,541,541,541,541,541,541,541,541,541,541,541,541,541,541,2238,0,1011,587,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2689,587,587,587,587,587,587,587,587,2716,587,587,587,541,587,563,541,541,1136,0,0,0,0,0,0,0,0,0,0,365,365,0,0,0,0,0,0,2095,0,0,0,0,0,0,0,0,0,0,2375680,0,0,0,0,0,587,1503,587,587,587,587,587,587,587,587,587,587,587,587,587,587,2911,587,2914,587,587,587,587,2919,587,563,587,587,587,587,587,1079,1560,0,0,0,1566,0,0,0,1572,0,0,0,1578,0,0,0,0,0,0,0,0,0,0,0,0,2754,0,0,0,563,563,563,563,2600,563,563,563,563,563,563,563,563,563,563,563,26028,1922,587,587,587,0,0,0,0,647,0,0,0,0,0,0,743,541,541,541,541,541,541,2178,541,541,541,541,541,541,541,541,541,0,2242,563,563,563,563,563,0,0,1594,0,0,0,0,0,0,0,0,0,0,0,0,0,2770,0,0,563,563,563,1846,563,563,563,563,563,563,563,563,563,563,563,563,3085,563,3087,563,2187,541,2189,541,541,541,541,541,541,541,541,541,541,541,541,541,1821,541,1360,0,0,563,563,563,563,2248,563,563,563,563,563,563,563,563,563,2305,563,563,563,563,563,563,563,563,563,0,587,587,994,587,587,587,563,2274,563,563,563,563,563,563,563,563,563,563,563,563,563,563,2894,563,587,2361,587,587,587,587,587,587,587,587,587,587,587,587,587,587,3121,587,587,587,587,587,587,587,587,563,563,541,563,587,563,587,1,2623,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3101,563,563,563,563,2651,0,0,0,0,0,0,587,587,587,587,587,587,587,587,587,2340,587,587,587,587,0,0,3179,0,0,0,0,0,0,0,0,0,0,0,0,0,2798,0,0,3245,563,563,563,563,563,563,563,563,563,563,563,563,563,563,563,3257,563,1134592,0,1134592,0,0,0,1134592,1135008,1135008,0,0,0,0,0,1135008,0,0,0,0,0,2478,0,0,0,0,0,0,0,0,0,0,0,3180,0,0,3307,0,1134592,0,1134592,1134592,0,0,0,0,1135203,1135203,1135203,1135203,1134592,1135203,1135203,1135203,1135203,1135203,1135203,1135203,0,1134592,1134592,1134592,1134592,1135203,1134592,1135203,1,0,0,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,988,2125824,2125824,2125824,2125824,1147355,1147355,1147355,1147355,458,458,1147355,458,458,458,458,458,458,458,458,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,1147406,0,0,0,0,0,0,0,0,458,0,0,0,0,0,1147355,1147355,1147355,1147406,1147406,1147355,1147406,1147406,1,12290,3,0,0,0,0,249856,0,0,0,249856,0,0,0,0,0,0,0,69632,73728,0,0,0,0,425,65536,0,1159168,0,0,1159168,0,1159168,1159168,0,1159168,1159168,0,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,0,1159168,1159168,0,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,0,0,0,0,0,0,0,0,0,1159168,0,0,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1159168,1,12290,3,78115,293,0,0,0,0,0,0,0,0,0,0,0,0,131072,131072,0,0,1163264,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3170,0,913,2125824,2125824,2125824,2125824,2125824,2424832,2433024,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,2125824,0,0,1453,2125824,2125824,2125824,2125824,106496,0,106496,106496,0,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,106496,0,0,0,106496,0,0,106496,106496,106496,106496,106496,106496,106496,106496,106496,0,0,0,0,0,0,0,0,0,0,0,2183168,0,0,0,0,0,0,0,0,2134016,0,0,0,0,0,0,0,0,0,0,541,541,541,1275,541,541,0,0,0,3117056,0,0,0,0,0,0,0,0,0,0,0,0,2979,0,0,0,0,3108864,3198976,0,0,3043328,0,3149824,2936832,0,2760704,0,2437120,0,0,0,0,0,0,2107,0,0,0,0,0,0,0,0,0,365,0,293,0,0,0,0,0,0,0,0,2875392,0,0,0,0,0,0,0,0,0,0,2834432],r.EXPECTED=[1039,1047,1048,1046,1042,1052,1056,1060,1064,1068,1446,1074,2948,2053,1092,1446,2490,1670,1213,1080,1084,1085,1446,1089,1446,1446,2818,1098,1103,1108,1187,1181,1181,1114,1118,1446,1933,1123,1446,1136,1098,1098,1204,1108,1108,1171,1181,1181,1130,1134,1446,1446,1140,1446,1147,1098,1152,1108,1108,1109,1181,1181,1182,1158,1446,1446,1238,1668,1098,1148,1108,1108,1206,1181,1181,1165,1446,3130,2162,1098,1099,1108,1177,1181,1215,1219,2143,1136,1098,1186,1110,1181,1191,3130,2153,1099,1108,1180,1217,2659,2819,1197,1173,1201,1104,1235,1210,1224,1154,1228,1232,1168,1243,1247,1251,1255,1259,1261,1266,1262,1270,1274,1278,1282,1286,1290,1220,1295,1890,1296,1446,1446,1446,1446,1375,2489,1446,1446,1446,2385,1446,1446,1446,1446,1446,1446,1446,1446,1076,1446,1446,1446,1446,2986,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1300,1304,1305,1309,1405,1315,1318,1322,1326,1330,1446,1446,1804,1334,2315,1338,2350,1142,1143,1342,1346,1446,1446,2834,1352,1362,1369,1446,1126,1446,2386,1379,1446,1384,1390,1446,2987,2588,1396,2688,1457,1446,1518,1446,1446,2269,1446,1446,1446,1402,1446,1441,1897,1409,1413,1446,1447,1419,1446,1447,1419,1446,1446,1193,1446,2988,3136,2482,1446,2617,1425,1446,1448,1431,1446,1918,1446,2648,1436,1457,1348,1457,1380,1440,1446,1445,3050,1452,1446,1456,1311,1446,1916,2325,1463,2125,1347,1472,2317,1909,1478,3010,2343,2076,2746,2758,1482,2765,2077,1799,1486,2744,1493,1358,1446,1446,2131,1446,2559,1386,1365,1497,1501,1505,1509,1515,2369,1569,2450,1522,2538,1526,1530,1536,2479,2088,1457,1971,1540,1544,1548,1552,1557,1446,2103,1446,1532,1446,2479,2082,1563,1568,2137,1573,1577,3026,1446,1446,2116,1446,1446,3027,1446,1586,1938,1584,2123,1647,1590,1432,1594,1446,2517,1600,1446,2517,1600,1446,2872,1606,1612,1616,1620,1626,1446,1239,1633,1446,1596,1640,3118,2782,1645,1651,1863,1446,1863,1446,1602,1446,2675,2173,1655,2685,1559,1866,2685,3124,1659,1665,2904,2903,3055,2673,1674,1678,3047,2266,2239,1682,1686,1690,1694,1698,2892,1702,1715,1719,1723,1727,1731,1446,2332,1773,1737,1744,1748,1751,1755,1758,1446,1772,2979,1777,1781,2506,1788,1792,1635,1636,1446,2668,2874,1796,1808,2784,1815,1819,1823,2304,1828,1446,2430,1446,1446,2334,1853,2583,1834,1843,1446,2069,1446,1446,1954,1446,1446,2070,1446,1446,1622,1608,1847,1851,1857,1641,1871,1446,2225,1956,1446,2225,1956,1446,2374,1885,1876,1811,1446,1883,1446,1947,1889,1446,1511,1446,1291,2287,1894,1901,1906,1446,1906,1446,1913,1446,1740,1922,1446,1932,1733,1446,1932,1830,1094,1732,1446,1937,2066,2439,2671,1945,1942,2455,1489,2323,1951,1709,1711,1629,1161,1962,1968,1977,1980,1984,1446,1119,1994,1999,2003,2007,2011,2015,2019,2023,1986,1872,2093,1928,2028,2032,2036,1802,2040,1446,1446,2044,1580,2050,2059,2063,2074,2046,1446,2024,2081,1446,2086,1446,1446,1988,2092,2097,2109,2113,1446,2120,1446,1446,2129,1446,1558,2135,1446,1446,2141,2535,2866,2147,1446,1990,1446,1446,3096,1446,1446,3096,1446,1446,1466,2151,2157,2204,1458,2161,1446,2914,1446,1446,1764,1446,3053,2166,2170,1446,2182,1446,2187,1446,2916,1957,2192,2202,2305,1446,2210,2496,1824,3112,2217,1761,1459,1558,2224,2229,2841,2969,2682,2815,2233,2248,2236,2243,1837,1839,2247,2252,2100,1446,1446,1446,1446,2918,1766,2256,2260,2273,2277,2281,2284,1446,2889,1902,2985,2524,2433,2299,2576,2212,2213,2303,1415,1457,2309,1958,2321,2329,1446,2976,1446,1398,1446,1553,2338,2342,2751,1446,2347,2503,2354,2358,1558,2363,1446,1995,2368,1446,1421,2364,2373,2733,2378,2383,2390,3044,1446,2715,1446,1446,1860,1446,1446,1860,2719,2733,2397,2176,2401,1946,2461,1446,1446,2405,1446,1473,2717,2413,2417,2427,2437,3061,1446,2105,1446,1973,2407,2443,2447,2454,2459,2379,1446,2465,2472,2476,2486,2511,2494,2701,2409,2500,2510,2516,2521,2528,2220,2532,2542,2546,2198,2312,2550,2554,2563,2567,2571,2575,1446,2580,2592,2596,2600,2604,2608,2612,2616,1446,2621,2393,1372,2628,2632,2636,2640,2652,3103,1446,2708,2468,2656,2665,2679,2692,1558,2699,1446,2705,1446,2998,2712,1446,2723,2624,1768,1879,3159,1446,2205,2727,1446,1468,2732,1446,2206,2982,1446,3004,2737,2741,3109,2750,1446,2755,1446,1446,2762,1446,1446,2762,2769,3037,2775,2420,2779,1446,2788,1446,1446,2795,1446,1427,2801,3020,2805,2646,1446,2812,1446,2809,1446,3067,2853,2823,2643,2183,2827,2863,2512,2832,2838,1707,1070,2359,2845,2851,2857,1964,1474,3084,2557,2878,2955,3090,2882,2293,2295,2886,2896,2900,2908,2912,1446,1446,1446,2922,2926,2930,2934,2938,2942,2946,1446,2055,2952,1355,2791,2178,2959,1867,2963,1784,2967,1446,2973,2423,2992,2996,3002,1446,2728,1446,1446,3008,1446,3014,3018,1446,3024,2188,3031,3147,1446,1446,2694,1446,1446,2847,1446,1446,2695,3035,1446,3041,3078,3141,3059,1446,1446,3065,1446,1446,3065,1446,1446,3071,1446,3075,1925,3153,1446,1446,3082,1446,1564,3088,1446,1661,3094,3100,2195,3116,1446,3122,1446,3128,1446,3134,1705,3140,2586,2797,1446,3145,2771,1392,3151,1446,3157,2290,2828,2661,2869,2422,3106,2860,2263,1446,1446,1446,1446,1446,1446,1446,1446,1446,1446,1473,3163,3166,3170,3182,3186,3182,3189,3181,3182,3182,3182,3182,3177,3173,3193,3182,3197,3201,3204,3210,3214,3216,3206,3220,3224,3228,3232,3235,3239,3243,3729,3929,3929,3246,3929,3929,5383,3929,3929,3300,3929,3261,3562,3273,4078,3734,3929,3929,3929,3277,3287,3294,4847,3929,3250,3929,3929,3344,3929,4873,4873,4873,4873,3266,4873,4873,3564,3564,3567,3564,3564,3564,3564,3267,3256,3305,3562,3568,3335,4081,3929,3929,3929,3323,4919,3377,4693,3929,3252,3722,3750,3365,3315,3269,3334,4080,3732,3929,3929,3559,4873,5799,4692,3929,3929,3688,3929,3929,3560,4873,4873,4873,4195,4873,4873,4873,4874,3564,3267,3264,3331,3339,3929,3342,3929,3738,3256,3367,3317,3321,3560,4873,3564,3309,3256,3256,3365,3371,3564,3564,3564,3567,3256,3256,3256,3256,3327,4195,3564,3564,3564,3310,3365,3359,3929,3929,3813,3929,3564,3564,3564,3364,3929,5741,3559,4873,4194,3564,3564,3268,3256,4193,4873,3266,3564,3310,3256,3256,3256,3366,3348,3929,3929,3929,3505,3383,3256,3373,3766,3256,3384,3929,4872,4874,3564,3268,3256,3257,3373,4694,3929,3929,3929,3355,3566,3256,3321,4194,3565,3311,3560,3563,3384,3561,3319,3360,3388,3390,4109,3394,3401,3405,3429,3429,3429,3429,3424,3430,3412,3416,3420,3428,3434,3438,3442,3397,3446,3450,3453,3457,3460,3463,3465,3469,3473,3408,3477,3481,3485,3696,3498,4473,3929,3929,3929,3512,3511,3929,3929,3929,3517,4964,4966,3929,3523,3527,3929,3929,3929,3752,3534,3543,3929,3929,3850,3854,3578,3582,3586,3589,3590,3594,3597,3601,3604,3608,3611,3614,3618,3622,3626,4965,3648,3636,5178,3647,5820,3654,4257,3659,3929,3669,4219,3694,3703,3929,5714,3525,3929,3929,3929,3770,3790,3929,5539,3707,3929,3342,5695,3904,3929,3289,3290,3906,3929,4658,4464,5227,4306,3936,3718,3726,3743,3929,3375,3631,3929,3548,5050,5064,3749,3929,3929,3929,3836,3758,3298,3929,3929,3915,3927,4893,3528,3929,3929,3921,4548,5744,4281,3929,3929,3932,5019,3929,5587,5178,3929,3553,3557,3572,5826,3929,3929,4530,3789,3794,3929,3929,3972,4899,3798,3806,3929,3929,3972,5040,3817,3826,3929,3929,3972,5490,3785,3929,3929,3929,3869,4728,4203,3770,3790,4142,3929,3929,3929,3894,4001,3929,3929,3929,3929,3252,3798,4127,4203,3850,3854,4139,3744,3929,3929,3929,3844,5313,5832,4137,4141,3929,3650,3929,3929,4854,4858,4140,3929,3929,3929,3930,5557,3873,3929,3929,3883,3929,5107,3929,5107,4780,3929,4781,5020,3929,3929,3738,5109,3929,3290,3904,3940,3947,3946,3942,3951,3955,3956,3956,3960,3962,3963,3962,3967,3971,3929,3929,4017,4021,4708,3978,3988,3929,3683,3781,3802,3995,4392,3929,5597,5363,3530,3929,4135,4005,4013,3929,3929,4065,4070,4026,3929,3929,4026,3375,3929,3929,4049,4056,4576,3997,5403,5596,3929,3856,4795,3529,3929,3929,3929,3931,4061,3929,3929,3929,3972,4199,3911,3929,3929,3929,3974,5170,3929,3929,4704,3929,4075,5320,4248,5165,3855,4657,4085,3929,3690,4699,5178,3978,3251,3929,3929,4101,3929,5319,4247,5772,5010,4113,3981,3929,3929,4164,4148,4148,4120,3929,3929,4165,4115,4709,4132,3929,3929,4247,4459,5170,3929,3929,4706,3879,4572,4576,5321,4249,4655,3929,3929,4274,3929,3972,4146,4150,3929,3735,3929,3735,4154,4158,3929,3929,4396,3929,3929,3982,3929,3929,3929,4029,4107,3929,4706,3929,4366,4574,4181,5320,5850,4644,4180,5319,4886,4217,4208,4673,3929,3929,4424,5855,3279,5321,4215,3929,3766,4873,4873,3563,3564,4228,3929,4451,4182,4233,4305,4240,4273,4435,4246,4434,4245,4708,4241,3929,3699,4502,3698,4255,5609,4272,5609,4272,3699,5199,5610,4273,4253,3281,4246,4270,3929,3809,3929,4549,3737,3929,3896,3929,5021,3770,4271,3771,4182,5163,5161,3929,3283,5762,3710,4279,4279,4211,4127,4128,4405,3712,4286,3929,3929,3929,4052,3929,5548,3754,4301,3929,3842,3574,4534,4651,5125,3745,4537,4310,4314,4318,4319,4323,4327,4333,4334,4331,4338,4339,4339,4340,3929,3844,4827,3929,3846,3929,3929,4905,3929,3376,5780,4202,3929,3929,3929,4235,4524,5352,5187,4364,4473,3342,4273,3929,3888,5737,4840,4356,4374,4378,4842,5051,4864,3929,4387,4491,3929,4413,3929,3892,5107,3929,3665,3929,3929,4681,3640,4265,4472,3929,4802,3929,4518,3670,4266,4421,3929,4204,4203,3929,4718,4428,4432,3929,3929,3929,4451,4440,4445,3929,3929,4450,4541,4470,3929,3343,3929,3897,3929,4294,3929,4296,3929,5616,3929,5461,4463,3929,5347,4362,5468,4800,3929,3929,4457,4461,5243,3929,4484,3929,3931,5074,3929,3972,4166,4116,3929,3929,3929,4035,4737,3929,3929,3929,4505,3929,5347,4495,3929,3972,5410,5415,4015,4019,3929,3929,4457,4490,4499,3929,3929,3929,4624,5347,3929,4801,3929,3997,3929,5743,4160,3929,3929,3929,4628,3929,5704,4529,3929,3998,5353,5435,3929,5703,4528,3929,4e3,3929,3929,3999,3528,4505,5352,4800,3929,4007,4653,3929,4009,3929,4642,5697,3929,3929,3929,4695,4052,3929,3929,3929,4708,4545,3929,3929,3301,4450,3929,3929,3929,4734,3929,5303,3342,3929,4030,4480,3929,3929,3929,4516,4994,3894,3929,3895,3929,3929,3351,3892,3737,3735,3929,4039,3929,3929,4086,5090,3895,5020,3895,3737,5022,3736,3737,4554,4556,3929,3929,4638,4794,3929,3929,4668,4806,4689,3929,3929,3929,4752,4504,3929,3929,5097,4566,4022,5334,4383,5691,4570,4582,4586,4590,4594,4598,4602,4605,4608,4612,4614,4618,4634,4632,4634,4621,3929,3929,3929,4757,4725,4816,3929,4648,4662,4666,5081,4672,3929,5344,4398,4352,4678,3929,3929,4678,4687,5178,3929,3929,4745,4749,4210,3929,4965,4768,5739,3929,3929,3322,5689,3899,5181,4703,5110,5214,4713,4722,3929,4051,3558,3929,4028,4478,4500,3929,5400,4741,3929,3929,4780,3929,4780,4762,3929,3929,3929,4821,4756,4761,3929,3929,4818,4822,4505,3863,3867,3929,3341,3341,3929,4766,4294,3929,3899,3929,4066,3929,3929,4087,5091,3767,5433,4817,4683,4716,3929,5809,3929,4091,4095,3751,3972,4773,4777,3929,4107,3929,3929,4137,4141,4786,4775,3929,3929,4820,3910,4788,4777,3929,3929,4828,3972,3322,4792,3929,3929,4847,3929,5432,4816,4833,4799,3929,5147,3929,3929,4872,4873,4966,4295,4304,4814,4826,3929,3929,3929,4871,4674,3929,4708,3897,5180,5433,4832,3929,4159,3929,3377,3299,3929,4503,4708,3929,4837,3929,3929,3929,4913,5207,3929,3929,3929,4965,3929,5148,3929,4008,3929,4408,3929,4172,3929,4172,3900,5432,3628,3929,3929,3929,4856,4860,3844,5313,3929,3929,4982,3929,5086,3768,5434,3630,3929,4174,3929,4562,5312,3929,3929,3929,5003,4502,5148,4878,4885,4293,3929,3929,4296,3929,4296,3929,4229,5198,5520,3928,3929,3928,3897,4293,3929,3898,3929,5228,3899,3898,3929,4296,3929,5547,3519,4911,3929,5584,4917,3769,3929,3929,3929,4240,4273,3929,3779,3800,3744,4923,4927,4934,4935,4930,4939,4943,4949,4953,4945,4957,4957,4958,4962,3929,4247,4511,3929,3972,5871,3929,3983,3929,5572,5591,3929,4731,4359,5861,5581,4990,3929,3929,3929,5111,4846,5503,4707,5051,3929,4263,4465,3929,4282,3929,3929,3860,3929,5742,3929,3929,3737,3929,3894,5322,3929,5e3,5007,3507,3929,4290,3929,3929,4449,3929,5018,3929,3929,3642,5026,3929,3929,3929,5177,4628,3929,3300,3929,4346,3674,3681,3547,3929,3539,5030,5034,3929,3929,3929,5337,5040,3822,3929,3929,3641,5042,3929,3929,3929,5368,3643,3929,3929,3929,5405,5793,3929,3929,3929,5453,4626,3377,5052,3929,3929,3929,3721,4501,4368,3929,3546,3490,5496,5308,5793,3929,3929,5485,4370,3929,3929,5068,3972,5073,4863,3929,3513,4450,5122,3375,5406,3842,3929,3655,5793,3929,3739,4707,5781,3929,3990,3929,3929,4006,3299,4452,4369,3929,4439,4444,3929,3895,4547,3886,3929,5078,3929,3929,5048,5304,3929,5095,3929,5486,5051,4451,4368,3929,4474,4050,4057,4293,4450,3929,3929,5228,3929,5453,3929,3929,5072,4862,3929,5101,3929,3512,5742,3929,5241,5105,4986,3751,5323,3296,4502,4381,3929,4486,4034,3929,3684,3783,3744,5062,3929,3929,4209,3929,3929,3929,3560,3929,5118,3929,3929,5111,4852,4515,4382,5129,3929,4502,4176,3929,4350,5314,3549,3929,5797,3929,3929,3929,5526,5795,3929,3929,3929,5603,5136,5144,5227,4451,4236,3929,4975,3676,5063,4465,3744,4042,4464,5152,3929,4507,3865,3929,4121,5622,4297,4174,3342,5169,3342,5169,4514,3537,4561,4558,3929,4559,4453,3929,5213,4466,3929,4520,3929,3929,5170,4045,5196,5187,5174,4560,5185,4558,5193,5203,5211,5218,5221,5222,5226,3929,3929,3929,5725,3929,5232,4690,3929,4524,5352,3677,3929,3929,3929,5771,3929,5740,3929,4274,4848,5238,5247,5773,5254,5251,4704,3918,5260,5266,5262,5268,5272,5276,5280,5284,5287,5291,5294,5293,5298,5302,3929,3929,3929,5742,5425,3929,4694,5050,3546,3490,3494,3929,5318,3929,5327,3923,4464,4390,5227,3929,5816,5331,5341,3929,5782,3744,3929,4547,3770,3929,4547,3929,3736,5322,3929,5189,3929,3929,5189,5361,5367,3374,3929,4693,3929,3929,3829,3929,5372,3929,5411,3929,4704,4292,3929,3892,3929,3929,4517,5713,4819,4170,3929,5416,3991,3929,4708,4852,3929,4186,4190,3929,3765,3775,3800,5841,5084,3929,3929,5111,5157,3753,5377,5381,3929,3929,5117,3929,3929,5388,3821,3929,4708,5234,4550,3929,5393,5392,3929,4751,5041,3744,3929,3929,5048,5036,3929,5373,5397,4693,3501,3929,3929,3929,5766,4862,3929,3929,3929,5789,5048,4769,3378,3492,5429,4705,5779,3929,4781,4779,3929,4505,5110,3876,3929,3929,3929,5791,3972,5439,3839,3929,4815,3929,4778,5514,5443,3839,3929,4815,3929,5108,5841,5843,3929,3929,5139,3929,5050,5457,3492,4485,5465,3770,3878,3929,4821,3929,3929,4417,3929,3929,5472,5477,3929,4881,3929,5701,5473,5482,3929,3929,5140,3929,5478,3929,5420,3877,3546,5494,3714,3632,3929,5514,5508,3929,4907,5500,3929,4890,4880,3929,4193,4873,4873,4195,5742,3379,5773,3631,5525,3929,3929,3929,5870,5524,3760,3896,3929,5819,4519,5513,3488,5530,5351,3929,4708,4846,4159,3929,3929,3929,5155,5159,5336,5518,3761,3929,3929,5512,5536,4519,4522,3989,3929,3929,3929,4913,5518,3929,4964,4293,5179,5352,3929,3929,4125,3929,3929,4247,4402,4086,3353,3929,5556,5570,3929,5570,5578,3983,3929,5573,3929,4971,3751,3929,4253,3929,4261,5594,4522,3929,5601,3984,3929,5574,3929,4978,4224,3929,3929,5608,5571,5607,5351,5349,3929,3929,3929,5206,4827,3929,3929,4897,4901,5733,5834,3662,4782,5757,3879,5132,5614,5467,5620,5626,5630,5634,5638,5642,5646,5650,5654,5658,5662,5666,5670,5673,5677,5681,5685,3929,3929,5256,4275,5756,3929,3972,3929,4996,3929,5561,5708,5718,3929,5722,5729,3929,3888,3998,5749,3929,3929,3929,5311,3929,5731,5753,5459,3929,5014,4985,3929,4344,4461,3929,3875,5420,3929,3878,3929,3929,3929,3736,4071,4506,3929,3766,4521,4967,3929,3929,3929,5387,3820,5761,4485,3929,3929,5424,4691,5113,3998,3929,3929,5435,3873,3929,5112,5770,4234,5849,3929,3929,3929,5447,3929,5732,5805,3929,3972,4093,4097,3929,3905,3929,4408,3670,5786,3929,3929,3929,5447,4693,4517,5803,5807,3929,5046,5056,3929,4434,4245,3929,3770,5321,3929,3649,3929,3929,4977,4223,3929,5830,3929,3929,5450,5042,4423,5838,3929,3929,5507,4159,4423,5838,4248,5847,4578,5805,3929,4548,3929,3929,5813,4423,5854,3929,3929,5552,5542,5859,3929,3929,3929,5564,3929,5786,4235,3929,3929,5566,4810,4103,5807,3990,3929,5059,5357,3929,4549,3929,3929,4549,5416,3929,4674,3929,4868,5532,3929,3929,3929,5710,3929,3831,3998,3929,3929,5712,4818,3973,5866,3929,3929,5739,3929,3972,5865,3929,3929,5745,3929,4964,3929,5180,4523,5824,3832,3929,3929,3929,5777,5545,4965,3929,4409,3929,3675,3738,3973,3547,3929,3929,5841,3929,6277,6502,5875,6282,5878,6547,6266,5881,6546,5889,6232,5882,6232,5892,6221,6267,5888,5883,5884,6232,6232,6232,6232,6414,5887,5883,6232,5891,6232,6232,5894,6232,6232,5922,5937,5949,5938,5939,5949,5944,5950,5944,5944,5940,5944,5941,5952,5941,5944,5946,5945,5946,5946,5946,5946,5947,5941,5948,5952,5948,5944,5942,5954,5956,5958,5962,5960,5959,5964,5966,5967,5971,5967,5968,5967,5969,5974,5973,5976,5978,6293,5998,5875,6282,5896,6871,6437,6282,6321,6282,6282,6282,5917,6456,6456,6456,6456,5991,5906,6379,6455,5990,6019,5991,5904,5904,5904,6456,6456,5926,5899,6456,6456,5997,6282,6408,6410,6282,5932,6282,5933,6464,6024,6282,6282,6379,5924,6282,6282,5924,6282,6362,6010,5984,6282,6003,6282,6362,6282,6282,6282,6004,6456,5906,6455,5990,5904,5902,6456,6456,6456,5906,6457,6019,6019,5904,5904,6456,6456,6282,6282,6282,5980,5917,6456,6456,6456,6455,5905,6456,6445,5926,5926,5926,5926,6032,6032,6008,5932,6282,6282,6282,6434,6024,6282,6019,5904,6456,6282,5896,6873,6282,6282,6282,6474,5903,6457,6019,5904,6456,6229,5904,6456,6456,6456,6018,6457,6019,5991,5905,5906,6282,6282,6282,5984,6282,6282,6282,5925,6543,5905,6456,6456,6456,6282,5905,6229,5905,6229,5905,6282,6650,6437,6043,6515,6056,6672,6088,6052,6515,6520,6054,6060,6058,6515,6515,6083,6528,6101,6761,6518,6521,6516,6517,6063,6065,6068,6061,6057,6515,6515,6519,6515,6070,6072,6066,6515,6515,6515,6515,6125,6522,6074,6515,6515,6076,6515,6523,6079,6082,6515,6081,6055,6091,6089,6090,6093,6114,6092,6113,6114,6114,6114,6114,6115,6117,6116,6117,6117,6118,6119,6120,6121,6121,6095,6097,6099,6122,6123,6124,6524,5900,6515,6518,6103,6108,6110,6104,6105,6109,6106,6112,6121,6127,6129,6282,5899,6282,5925,6463,6321,6282,6294,6006,6378,6282,6508,6282,6449,6646,6218,6604,6282,6524,6291,6282,6774,6282,6270,6282,6282,6282,6e3,6e3,6027,6161,6282,6282,5895,6375,6282,6312,6230,6366,6265,5876,6282,6282,6282,6015,6406,6282,6284,6027,6027,6137,6282,6282,6379,6281,6372,6028,6159,6282,5899,6282,6282,6282,6573,6282,6282,6467,6282,6311,6312,6372,6282,6282,6282,6019,6019,5904,5904,5904,5904,5905,6456,6456,6031,6154,6158,6282,6149,6273,6282,6163,6282,6677,6280,6166,6279,6682,6685,6501,6173,6175,6178,6178,6178,6178,6176,6181,6180,6181,6181,6183,6181,6185,6187,6188,6188,6188,6194,6193,6194,6193,6193,6189,6191,6190,6190,6196,6196,6198,6203,6202,6204,6208,6203,6205,6199,6200,6210,6206,6212,6282,6282,5896,6282,6282,6282,6512,6282,6150,6135,6320,6500,6163,6282,6282,6282,6026,6282,6026,6166,6282,6282,6282,6027,6221,6282,6505,6282,6282,6282,6032,6238,6282,6241,6282,5899,6451,6282,5913,6669,6401,6238,6282,6282,6282,6037,6245,6282,6282,6282,6040,6282,6282,6225,6248,6282,6282,5916,6722,6377,6247,6249,6282,6282,5924,6370,6252,6253,6282,6282,5932,6282,6282,6530,5924,6254,6282,6282,6254,6282,6322,6228,6282,5933,6378,6282,6378,6282,6452,6282,6432,6317,6282,5917,6086,6725,6727,6216,6086,6726,6450,6231,5926,5933,6008,6008,6008,6282,6282,6282,5918,6282,6282,6282,5923,6309,6683,6282,6282,6282,6148,6216,6308,6310,6282,6282,6282,6149,6282,5903,6397,6605,6282,6282,5933,5933,5933,6780,6282,6282,6282,6229,6282,6282,6282,5933,5924,6316,5917,6723,6377,5916,6722,6323,6448,6454,6216,6332,6436,6683,6282,5917,6328,6465,6450,6217,6231,6160,6436,6683,6328,6448,6454,6216,6610,6436,6683,6282,6221,6602,6310,6282,5984,5899,5925,6229,6435,6500,6281,6722,6013,6465,6450,6160,6603,6683,6282,6282,6231,6218,6310,6282,5984,6282,6283,6043,5914,6282,5933,6328,6465,6450,6647,6604,6282,6e3,6282,6282,6283,6277,6707,6733,6282,6722,6465,6230,6396,6282,6282,6282,6235,6686,6282,6708,6281,6282,6e3,6437,6362,6338,6279,6282,6282,6283,6444,6145,6683,6282,6282,5933,6003,6282,6282,6282,6006,6375,6465,6708,6282,6005,6282,6282,6287,6289,6282,6548,6282,6282,5933,6282,6282,6282,6137,6282,6282,6020,6282,6375,6282,6282,6282,6281,6471,6218,6683,6282,6282,6282,6370,5984,6282,6010,6795,5984,5899,6282,6282,6661,6282,6e3,6137,6282,6282,6282,6282,5896,5914,6704,6273,5928,6340,6344,6503,6348,6349,6349,6350,6355,6352,6349,6349,6349,6349,6354,6355,6355,6355,6356,6357,6357,6357,6357,6357,6358,6359,6359,6359,6359,6383,6360,6382,6382,6382,6361,6282,6282,6282,6283,6043,5903,5897,6485,6376,6395,6425,6282,6282,6282,6293,6291,6338,6282,6282,6282,6284,6282,6282,6345,6282,6282,6291,6282,6282,6282,6230,5876,6282,6407,6282,6282,6282,6286,6282,6282,6037,6411,6417,6282,6282,5979,5903,6470,6313,6647,6281,6282,6282,6408,6416,6418,6282,6282,5979,6525,6458,6342,6422,6282,6282,6282,6288,6282,6664,6731,6282,6012,6e3,6282,6012,6335,6310,5985,6504,6282,6282,6273,6470,6372,6273,6504,6385,6282,6282,6412,6257,6598,6600,6282,6411,6413,6597,6599,6599,6282,6282,6282,6291,6410,6282,6322,6451,5926,5926,6008,6008,6008,5932,6236,6282,6282,6282,6292,5982,6282,6283,6442,6050,6013,6609,6259,6424,6310,6282,5919,5920,6282,6282,6011,5916,6282,6664,6282,6282,6023,6437,6459,5983,6013,6594,6700,6437,6282,6424,6437,6282,6282,6235,6480,6481,6282,6282,6133,6282,6282,6485,6376,6647,6282,6016,6282,6282,5933,6330,6454,6217,6683,6282,6282,6484,5917,5929,6011,6608,6259,6425,6282,6486,5983,6013,6594,6786,6437,6282,6282,6282,6294,6282,6283,6484,5917,5983,6013,6531,6471,6282,6282,6146,6683,6282,6282,6155,6282,6282,6385,6282,6322,6282,6282,6275,6493,5917,5983,6324,6259,6729,6282,6019,6019,6019,5991,5904,6277,5903,6531,6011,6148,6282,6282,6282,6234,6531,6282,6282,6282,6322,6282,6133,6372,6505,6282,6230,6282,6282,6171,6756,6531,6046,6834,6437,6282,6282,6285,6530,5924,6282,6684,6282,6149,6282,6282,6282,6325,6285,6530,6045,6159,6024,6046,6386,6282,6282,6282,6372,6282,6294,6282,6530,6464,6386,6282,6282,6215,6224,5933,5924,6410,6282,6040,6282,6482,6282,6282,6282,6531,6536,6024,6282,6282,6282,6370,5987,6282,6535,6282,6282,6227,6282,6282,6282,6378,6378,6378,6282,6452,5994,6282,6282,6282,6394,6282,6282,6282,6404,6539,6333,6683,6282,6020,6282,6282,6282,6341,6282,6570,6300,6569,6301,6370,6545,6300,6302,6303,6303,6303,6303,6303,6304,6551,6554,6552,6561,6552,6555,6563,6564,6563,6563,6563,6563,6564,6556,6557,6557,6557,6557,6558,6372,6273,6282,6282,6243,6282,6509,6566,6282,6282,6271,6213,6282,6283,6568,6282,6021,6041,6282,6027,6282,6321,6282,6006,6282,6282,6027,6462,6282,6282,6282,6572,6282,6168,6282,6575,6510,6282,6029,6282,6282,6282,6588,5907,5909,5911,6282,6036,6282,6282,6388,6407,5908,5910,6282,6282,6272,6282,6526,6282,5916,6322,6282,6378,6282,6020,6282,6278,6282,6282,6394,5924,6278,6282,6283,6502,6365,6282,6579,6282,6282,6275,6525,5914,5992,6371,6048,6365,6367,6369,6282,6282,6277,6531,6046,6275,6583,5993,6047,6256,6256,6366,6368,6282,6282,6452,6e3,6282,6282,6282,6408,6282,6027,6282,6372,6526,6282,5899,6539,6664,6682,6282,6282,6282,6146,6282,6482,6282,6006,6451,6282,6282,6282,5985,6458,6342,6313,6136,6152,6282,6037,6378,6282,6282,6282,6421,6584,6020,6437,6683,6282,6027,6321,6282,6451,6646,6152,6282,6282,6282,6410,6282,6282,6282,6375,6282,6e3,6526,6322,6533,6682,6282,6408,6282,6282,6282,6505,6282,6282,6278,6282,6282,6282,6143,6371,6472,6282,6282,6282,6423,6539,6437,6683,6282,6040,6148,6040,6149,6273,6229,6682,6282,6470,6282,6282,6283,6282,6282,6282,6524,6548,5933,6282,5933,6282,6434,6410,6282,6282,6434,6537,6282,6664,6491,6866,5876,6482,6491,6282,6282,6283,6410,6282,6427,6282,6282,5980,6011,6276,6037,6285,6038,6590,6783,6607,6612,6620,6619,6620,6620,6616,6620,6620,6618,6622,6620,6614,6613,6624,6627,6626,6627,6627,6628,6630,6630,6634,6630,6632,6631,6630,6630,6630,6636,6638,6638,6637,6637,6640,6641,6282,6132,6282,6282,5895,5924,5984,6282,6640,6637,6640,6640,6640,6640,6505,5903,6644,6331,6649,6282,6282,6229,5879,6282,6527,6653,6148,6282,6137,5924,6282,6282,6282,6230,6281,6282,6282,6306,6402,6433,6346,6656,6658,6549,6282,6282,6283,6475,6423,6282,6282,6282,6437,6682,5912,6668,6400,6282,6157,6282,6282,5896,6451,5980,5917,6029,6221,6281,6282,6282,6524,6282,6282,6282,5930,6664,6282,6264,6683,6694,6282,6282,6282,6452,6282,6282,6282,6285,5897,6453,6654,6282,6346,6295,6282,6282,6283,6582,6297,6282,6681,6282,6164,6024,6282,6133,6451,6282,5988,6281,6285,5980,6458,6371,6263,6647,6281,6282,6676,6282,6676,6514,5903,6680,6465,6489,5995,6282,6282,6283,6496,6085,6282,6513,6525,6679,6688,6688,6399,6713,6281,6282,6286,6282,6037,6282,6282,6282,5899,6691,6497,6724,6488,6734,6282,6282,6282,6498,6282,6282,6282,6255,6282,6283,6691,6696,6724,6488,6698,6331,6222,6282,6282,6282,6431,6296,6282,6282,6282,6499,6282,6282,5903,6464,6231,6734,6696,6134,6733,6281,6693,6282,6282,6434,6282,6282,6282,6277,6525,6531,6471,6218,6231,6490,6282,6282,6282,6504,6548,6282,6283,6278,6282,6275,6710,6733,6282,6169,6282,6282,6509,6003,6712,6282,6282,6282,6508,5899,6702,6490,6282,6282,6283,6861,6854,6033,6858,6646,6218,6604,6282,6282,6282,6577,6286,6282,6394,6282,6229,6019,6019,6019,6019,5904,6286,6282,6137,6282,6229,6282,6292,6229,6282,6282,6372,6505,6282,6437,6683,6282,6229,6146,6265,6282,6283,6525,5927,6539,6729,6683,6282,6282,6650,6282,6282,6283,6863,6364,6024,6282,6282,6283,6869,6282,6362,6282,6362,6363,6010,6592,5925,6719,6591,6593,6718,6721,5934,5934,5935,6469,6736,5934,5934,5934,6736,6738,6742,6740,6739,6744,6746,6751,6751,6752,6753,6747,6748,6748,6748,6749,6751,6751,6751,6753,6753,6753,6753,6758,6754,6755,6282,6282,6285,6282,6282,6282,6014,6760,5981,6007,6728,6282,6763,6282,6282,6285,6496,6531,6282,6283,6768,6770,6282,6282,6282,6539,6392,6282,6282,6392,6027,6156,6282,6282,6293,6586,6282,6373,6281,6285,6507,5903,6470,6326,6505,6659,6282,6234,6229,5879,6283,6496,6703,6776,6704,6777,6282,6282,6282,6548,6282,5918,6025,6282,6282,6026,6282,6286,6505,6394,6282,6291,6370,6282,6370,6282,6496,6085,6831,6147,6603,6683,6282,6380,6282,6282,6370,6282,6282,6282,6003,6282,6294,6336,6e3,6282,6239,6846,6282,6260,6282,6282,6282,6642,6379,6282,6505,6336,6283,6702,6782,6319,6218,6604,6282,6785,5999,6282,6269,6663,6282,6140,6282,6282,6393,6282,5982,6724,6319,6218,6604,6539,6310,6282,6282,6375,6370,6375,6788,6320,6310,6e3,6e3,6282,6282,6375,6548,6282,6282,6282,6275,6084,6447,6282,6788,6429,6683,6282,6282,6664,6683,6282,6273,6541,6148,6282,6394,6e3,6282,6274,6282,6003,6318,6429,6683,6282,6275,5898,5915,6282,6282,6370,6370,6370,6664,6282,6683,6282,6410,6282,6699,6282,6275,5901,5982,6724,6291,6282,6282,6531,6689,6282,6282,6220,6282,6537,6282,6282,6282,6664,6146,6282,6282,6434,6281,6282,6282,6282,6020,6282,6006,6410,6408,6282,6027,6282,6282,6250,6843,6434,6410,6282,6434,6410,6282,6408,6282,6322,6282,6410,6410,6027,6282,6275,6702,6231,6490,6146,6282,6146,6282,6282,6282,6671,6146,6410,6408,6408,6409,6409,6409,6409,6409,6282,6282,6282,6682,6282,6282,6285,6039,6216,6221,6281,6286,6282,6282,6790,6543,6282,6505,6003,6282,6559,6282,6282,6559,6508,6792,6282,6077,6139,6282,6282,6379,6374,6793,6806,6798,6798,6801,6799,6798,6799,6798,6797,6803,6808,6807,6808,6805,6808,6809,6810,6813,6814,6815,6816,6815,6818,6811,6813,6811,6813,6820,6822,6822,6821,6821,6824,6824,6824,6824,6821,6824,6824,6828,6825,6826,6282,6282,6282,6683,6282,6282,6689,6439,6282,6277,6715,6282,6282,6282,6510,6035,6282,6282,6282,6684,6282,6282,6282,6233,6282,6716,6282,6580,6419,6282,6836,6282,6281,6282,6282,6283,6293,6337,6282,6838,6840,6282,6282,6666,6282,6143,6292,6282,6282,6292,6282,6282,6282,6378,6845,6282,6282,6845,6282,6487,6282,6282,6391,6391,6651,6282,6282,6282,6730,6512,6282,6282,6282,6830,6853,5931,6141,6428,6602,6604,6282,6282,6409,6410,6282,6852,6854,6856,6450,6002,6282,6001,6003,6282,6645,6231,6281,6282,6282,6674,6282,6167,6282,6282,6e3,6282,6e3,6034,6282,6282,6282,6848,6282,6394,6683,6282,6282,5933,6003,5933,6003,6282,6830,6645,6231,6222,6487,6282,6024,6282,6282,6693,6282,6282,6282,6464,6861,6854,6009,6377,6525,5931,6011,6465,6282,6830,5885,6282,6282,6702,5931,6319,6436,6683,5916,6282,6282,5925,6282,6282,6448,6282,6282,6931,6282,6282,6451,6282,6282,6282,6860,6044,6011,6465,6449,6647,6310,6282,6282,6142,6436,6683,6282,6282,6732,5924,5984,6861,5983,6377,6454,5982,6321,6282,6294,6138,6282,6461,6151,6437,6282,6282,6732,6772,6860,5983,6465,6151,6437,6282,6865,6282,6282,6282,6860,6337,6437,6282,6282,6466,6282,6144,6436,6282,6282,6282,6868,6219,6282,6282,6282,6468,6282,6282,6732,6282,5916,6262,6299,6282,5918,5918,5918,6378,6282,6282,6526,6282,6148,6282,6283,6293,6586,6292,6502,6437,6282,6282,6282,6294,6282,6292,6294,6282,6282,6474,5980,6293,6291,6282,6282,6292,6502,6282,6278,6294,6282,6278,6282,6282,6765,6282,6229,6362,6282,6230,6320,6500,6282,6505,6282,6292,6502,6282,6505,6233,6282,6282,6293,6282,6282,6282,6474,6478,6291,6278,6282,6282,6292,6531,6536,6875,6255,6282,6282,6476,6282,6006,6255,6282,6006,6390,6282,6314,6049,6282,6877,6878,6881,6375,6880,5930,6282,6532,6542,6883,6596,6258,6885,6596,6595,6595,6886,6889,6595,6888,6890,6889,6892,6897,6893,6894,6895,6899,6900,6905,6905,6901,6902,6912,6903,6902,6906,6905,6906,6905,6906,6907,6909,6908,6910,6914,6908,6908,6922,6922,6921,6922,6923,6916,6917,6918,6920,6926,6925,6928,6460,6371,6282,6282,6482,5932,6321,6285,6282,6282,6494,6371,6930,6282,6282,6282,6505,6494,6371,6130,6282,6282,6282,6505,6506,6282,6282,6282,6312,6933,6282,6505,6935,6282,6282,6937,6282,6282,6767,6769,6290,6282,6282,6282,6505,6692,6011,6313,6291,6233,6282,6282,6508,6282,6282,6282,5916,6030,6282,6423,6170,6282,6282,6170,6011,6372,6282,5916,6282,6282,5915,6451,6440,6282,6282,5918,6322,6283,6939,6446,6705,6447,6291,6282,6282,6294,6282,6282,6282,6438,6282,6282,6511,6282,6282,6282,6842,6149,6282,6149,6282,6282,6779,6007,6728,6310,6282,6282,6319,6310,6282,6282,6363,6282,6692,6011,6372,5916,6282,5915,6282,6282,6511,6268,6286,6282,5924,6282,6282,6833,6282,6279,6398,6282,6282,6014,6282,6282,6282,6601,6282,6439,5933,6133,6282,6148,6282,6255,6282,5914,5931,6705,6282,6282,6850,6282,6850,6282,6372,6282,6372,6282,6149,6282,6505,5914,5931,6291,6282,6282,5982,6585,6282,6282,6660,6291,6043,5914,6291,6282,6282,6283,6043,5899,6282,6282,1048576,1073741824,2147483648,1075838976,2097152,2147483648,4194560,4196352,-2143289344,-2143289344,4194304,2147483648,37748736,541065216,541065216,-2143289344,4198144,4196352,276901888,8540160,4194304,1,4,16,64,0,48,64,32,64,64,96,0,59,140224,5505024,-1887436800,0,63,64,128,0,64,256,0,110,110,8425488,4194304,1024,0,128,128,512,512,1024,1024,2048,0,256,256,257,37748736,742391808,742391808,775946240,-1371537408,775946240,4718592,775946240,775946240,171966464,171966464,775946240,239075328,-1405091840,-1371537408,239075328,171966464,64,4718592,2097216,4720640,541589504,4194368,4194368,541065280,541589504,4194400,-2143289280,4194368,-2143285440,-2143285408,-2143285408,-2109730976,775946336,776470528,-2143285408,776470528,775946304,775946304,-1908404384,775946304,-1908404384,2,8,32,128,1024,4096,0,260,8392704,0,1856,64,524288,64,896,8192,67108864,2147483648,96,262144,262144,8192,0,288,8388608,0,384,0,512,2048,2048,4096,4096,8192,8192,16384,0,520,520,96,524288,524288,0,2432,2048,268435456,0,24576,0,32768,32768,65536,1048576,128,2048,12288,0,12289,0,16384,16384,32768,0,1864,2,16,1024,98304,131072,262144,1048576,512,5120,2,536936448,80,528,528,2097168,2097168,268435472,524304,1048592,2097168,24,560,48,2097680,1048592,3145744,1048592,20,560,48,3146256,2097552,3146256,28,16,8192,2,2098064,163577856,17,21,112,128,3584,8192,2228784,-161430188,-161430188,-161429680,-161430188,-161429676,-161430188,-161298576,-160299088,-161298576,-161298572,-160774288,-160299084,146804757,146812949,146862101,146863389,146863389,148960541,-161429740,-161429676,146863421,148960541,146863389,-161429676,-160905388,-161429676,-161429676,-161429675,-161349072,-161349072,-161347728,-161347728,-161298572,-161298572,-160774284,-161298572,16,262160,-18860267,-160774284,-18729163,0,58368,159383552,0,65536,2097152,8388608,33554432,0,66048,0,77824,524288,33554432,1024,262144,2097152,16777216,67108864,0,131072,524288,134217728,2147483648,1,32768,196608,0,131328,131072,16777216,100663296,-1073741824,164096,0,131584,2621440,0,139264,0,150528,0,235712,16777216,1073774592,1226014816,100665360,-2046818288,100665360,100665360,-2044196848,1091799136,1091799136,1091803360,1091799136,1158908e3,1158908001,1192462432,1192462448,1192462448,1870638912,1870655296,1870638912,1200851056,1200851056,1091799393,1870655296,1870655296,1870655312,1870655316,1870655312,1870655312,1870638928,1870655316,1870655316,1870655317,1870655316,1879043952,1870655348,1870655316,1879027568,1879043952,1879043956,0,284672,229440,1048576,2097152,67108864,134217728,8,4194304,16777216,2147483648,1224736768,0,503616,2048,100663296,0,524288,2097152,4194304,4194304,0,40,0,44,-2046820352,0,605503,231488,1090519040,1157627904,1191182336,9437184,231744,52e4,7864320,1862270976,0,867391,1862270976,1862270976,16252928,0,1048576,4194304,25165824,25165824,33554432,8192,98304,1048576,8388608,134217728,268435456,4194432,3145728,0,24,0,29,0,32,1,2,2,4,0,2147483648,2147483648,0,0,1,0,2,0,3,240,19456,262144,0,4,8,0,6,0,7,150994944,0,1049088,1049088,12845065,12845065,147193865,128,6144,4194304,251658240,536870912,1073741824,32768,131072,1048576,4096,83886080,117440512,0,3145728,16777216,134217728,0,2048,8192,229376,0,2304,1536,8192,1536,65536,4194304,67108864,536870912,9216,33554432,262144,134217728,1073741824,50331649,9476,512,8192,134218240,1050624,0,5242880,1275208192,4194312,4194312,4194344,4194312,541065224,4203820,-869654016,-869654016,1279402504,1279402504,2143549415,2143549415,2143549423,0,8388608,4096,4194304,8388608,16777216,33554432,-1946157056,0,8192,131072,0,1792,0,1024,8192,65536,0,1536,2147483648,2143549423,2143549423,2143549415,1,16777216,268435456,512,139264,2760704,-872415232,0,19947520,0,33554432,67108864,1073741824,1073741824,262144,7340032,-2030043136,0,331776,300,4203520,4333568,1275068416,0,16777216,16777216,0,999,259072,4194304,4194432,999,29619200,2113929216,0,58720256,1007,1007,0,67108864,402653184,536870912,2048,1048576,16777216,536870912,300,0,83886080,0,2097152,134217728,536870912,0,49152,0,57344,102,384,6,96,128,3072,16384,65536,524288,1048576,0,4096,262144,524288,96,96,64,384,512,4096,65536,131072,1024,65536,262144,131072,32768,256,384,8192,33554432,2147483648,1,6,8,8388608,96,384,104,104,0,134217728,6,32,256,512,65536,7340032,50331648,0,8396800,4,32,384,4,64,1024,2097152,268435456,1073741824,8,262144,512,0,8,8,16,0,9,0,12,0,15,16,16,17,20,16,20,48,16,28,0,16,32,0,21,53,4,256,1024,524288,536870912,256,65536,16777216,1073741824,2048,524288,32,4100,1024,134217728,1049088,270532608,2097152,2097152,0,23,5505537,5587457,5591557,147202057,5587457,13894153,-1881791493,-1881791493,0,134218752,5587465,5587457,13894153,13894153,81003049,4456448,8388608,5505024,0,134348800,134348800,82432,0,142606336,5,86528,41,75497472,81920,0,184549376,2,56,64,2048,262144,536870912,2048,134217728,-2113929216,16777216,1073743872,268435968,229376,25165824,92274688,25165824,100663296,402653184,1610612736,0,100663296,134217728,805306368,1073741824,8388608,268567040,16384,229376,4194304,117440512,2113544,68423701,-2079059883,-2079059947,85200917,68423701,68423765,68489237,68423701,68423701,72618005,68423701,68425749,68423703,85200919,69488664,69488664,70537244,70537245,70537245,-2076946339,-2076946403,70537245,70537309,70539293,-2022351745,-2022351617,-2022351745,-2022351617,-2022351617,0,243269632,256,32768,1048576,33554432,134217728,-2113929216,0,268435456,49152,266240,1048576,67108864,-2080374784,-2080374784,268288,0,301989888,0,318767104,282624,0,536870912,28,3145728,192,351232,7340032,5,16,1049104,12,3145728,13,0,1073741825,192,3072,20480,0,1073741824,0,262144,2621440,-1073741824,20480,65536,268435456,14,32,512,131072,268435456,192,1024,64,32768,33554432,268435456,4,128,3840,16384,262144,128,2097152,1073741824,4,2097152,4,50331648,67108864,128,50331648,1073741824,128,268435968,268435968,268436032,256,1536,2048,16384,98304,393216,524288,268435456,536870912,9216,0,4194304,50331648,2147483648,256,536871168,-1879046336,-1879046334,-1879046326,-1879046334,1073744256,-1879046334,-1879046326,-1845491902,-1878784182,268444480,268436288,268436288,268436289,268444480,268444480,2100318149,2100318149,2100326341,0,1090519040,2100326341,2100326341,1,16,536936448,576,0,832,8192,1,4036,19939328,2080374784,0,1,1024,768,8192,16384,19922944,2080374784,1,128,4096,3584,16384,524288,8,33554432,402653184,2048,3145728,128,131072,268500992,4243456,4096,1048588,0,1258292224,1124073472,1124073472,1124073488,1124073474,1124073472,1392574464,1124073472,1073754113,12289,1124073472,12289,12289,1098920193,1132474625,1098920209,1132474625,1132474625,1124085761,1124085761,1124085777,1258304513,1124085761,1400975617,2132360255,2132622399,2132360255,2132622399,2132622399,2141011263,0,2140749119,2141011263,2,16384,3145728,12545,25165824,268435456,12305,13313,12561,0,78081,327155712,605247,1058013184,1073741824,867647,1066401792,0,1,12288,256,8388608,1,30,32,1024,2048,339968,327680,524288,1,14,16,14,1024,16384,4194304,134217728,1,12,1024,8,134217728,8,536870912,9437184,0,68157440,137363456,0,137363456,66,66,100680704,25165824,26214400,92274688,25165952,93323264,92274688,92274688,92274720,93323264,25165890,100721928,100721928,100787464,100721664,100721664,100853e3,100721928,125977600,125846528,125846528,125846560,125977600,125977600,127026176,281843,281843,1330419,281843,126895104,125846528,1330419,1330419,72633587,5524723,72633587,92556531,93605107,93605107,5524723,5524723,39079155,97799411,127290611,127290611,131484915,0,17408,33554432,1073741824,58624,0,124160,189696,148480,50331648,2,112],r.TOKEN=["(0)","PragmaContents","DirCommentContents","DirPIContents","CDataSection","Wildcard","EQName","URILiteral","IntegerLiteral","DecimalLiteral","DoubleLiteral","StringLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","PITarget","NCName","QName","S","S","CharRef","CommentContents","EOF","'!'","'!='","'\"'","'#'","'#)'","'$'","'%'","''''","'('","'(#'","'(:'","')'","'*'","'*'","'+'","','","'-'","'-->'","'.'","'..'","'/'","'//'","'/>'","':'","':)'","'::'","':='","';'","'<'","'<!--'","'</'","'<<'","'<='","'<?'","'='","'>'","'>='","'>>'","'?'","'?>'","'@'","'NaN'","'['","']'","'after'","'all'","'allowing'","'ancestor'","'ancestor-or-self'","'and'","'any'","'append'","'array'","'as'","'ascending'","'at'","'attribute'","'base-uri'","'before'","'boundary-space'","'break'","'by'","'case'","'cast'","'castable'","'catch'","'check'","'child'","'collation'","'collection'","'comment'","'constraint'","'construction'","'contains'","'content'","'context'","'continue'","'copy'","'copy-namespaces'","'count'","'decimal-format'","'decimal-separator'","'declare'","'default'","'delete'","'descendant'","'descendant-or-self'","'descending'","'diacritics'","'different'","'digit'","'distance'","'div'","'document'","'document-node'","'element'","'else'","'empty'","'empty-sequence'","'encoding'","'end'","'entire'","'eq'","'every'","'exactly'","'except'","'exit'","'external'","'first'","'following'","'following-sibling'","'for'","'foreach'","'foreign'","'from'","'ft-option'","'ftand'","'ftnot'","'ftor'","'function'","'ge'","'greatest'","'group'","'grouping-separator'","'gt'","'idiv'","'if'","'import'","'in'","'index'","'infinity'","'inherit'","'insensitive'","'insert'","'instance'","'integrity'","'intersect'","'into'","'is'","'item'","'json'","'json-item'","'key'","'language'","'last'","'lax'","'le'","'least'","'let'","'levels'","'loop'","'lowercase'","'lt'","'minus-sign'","'mod'","'modify'","'module'","'most'","'namespace'","'namespace-node'","'ne'","'next'","'no'","'no-inherit'","'no-preserve'","'node'","'nodes'","'not'","'object'","'occurs'","'of'","'on'","'only'","'option'","'or'","'order'","'ordered'","'ordering'","'paragraph'","'paragraphs'","'parent'","'pattern-separator'","'per-mille'","'percent'","'phrase'","'position'","'preceding'","'preceding-sibling'","'preserve'","'previous'","'processing-instruction'","'relationship'","'rename'","'replace'","'return'","'returning'","'revalidation'","'same'","'satisfies'","'schema'","'schema-attribute'","'schema-element'","'score'","'self'","'sensitive'","'sentence'","'sentences'","'skip'","'sliding'","'some'","'stable'","'start'","'stemming'","'stop'","'strict'","'strip'","'structured-item'","'switch'","'text'","'then'","'thesaurus'","'times'","'to'","'treat'","'try'","'tumbling'","'type'","'typeswitch'","'union'","'unique'","'unordered'","'updating'","'uppercase'","'using'","'validate'","'value'","'variable'","'version'","'weight'","'when'","'where'","'while'","'wildcards'","'window'","'with'","'without'","'word'","'words'","'xquery'","'zero-digit'","'{'","'{{'","'{|'","'|'","'||'","'|}'","'}'","'}}'"]},{}],11:[function(e,t,n){"use strict";n.TreeOps={flatten:function(e){var t=this,n="";if(!e)throw new Error("Invalid node found");return e.value===undefined?e.children.forEach(function(e){n+=t.flatten(e)}):n+=e.value,n},concat:function(e,t,n){var r=n?{}:e;n&&Object.keys(e).forEach(function(t){r[t]=e[t]});var i=Object.keys(t);return i.forEach(function(e){r[e]=t[e]}),r},removeParentPtr:function(e){e.getParent!==undefined&&delete e.getParent;for(var t in e.children){var n=e.children[t];this.removeParentPtr(n)}},inRange:function(e,t,n){if(e&&e.sl<=t.line&&t.line<=e.el){if(e.sl<t.line&&t.line<e.el)return!0;if(e.sl===t.line&&t.line<e.el)return e.sc<=t.col;if(e.sl===t.line&&e.el===t.line)return e.sc<=t.col&&t.col<=e.ec+(n?1:0);if(e.sl<t.line&&e.el===t.line)return t.col<=e.ec+(n?1:0)}},findNode:function(e,t){if(!e)return;var n=e.pos;if(this.inRange(n,t)===!0){for(var r in e.children){var i=e.children[r],s=this.findNode(i,t);if(s!==undefined)return s}return e}return},astAsXML:function(e,t){var n="";t=t?t:"",e.value&&(n+=t+"<"+e.name+">"+e.value+"</"+e.name+">\n"),n+=t+"<"+e.name+">\n";var r=this;return e.children.forEach(function(e){n+=r.astAsXML(e,t+"  ")}),n+=t+"</"+e.name+">\n",n}}},{}],12:[function(e,t,n){"use strict";var r=e("./parsers/JSONiqParser").JSONiqParser,i=e("./parsers/XQueryParser").XQueryParser,s=e("./parsers/JSONParseTreeHandler").JSONParseTreeHandler,o=e("./compiler/translator").Translator,u=e("./formatter/style_checker").StyleChecker,a=e("../lib/completion/completer"),f=n.createStaticContext=function(){var t=e("./compiler/static_context").StaticContext;return new t},l=function(e,t){return e?(Object.keys(t).forEach(function(n){e[n]===undefined&&(e[n]=t[n])}),e):t},c=function(e,t,n){var r=e.substring(0,t),i=e.substring(0,n),s=r.split("\n").length,o=t-r.lastIndexOf("\n"),u=i.split("\n").length,a=n-i.lastIndexOf("\n"),f={sl:s-1,sc:o-1,el:u-1,ec:a-1};return f};n.XQLint=function(e,t){t=t?t:{},t=l(t,{styleCheck:!1});var n;this.getAST=function(){return n};var h=[];this.getMarkers=function(){return h},this.getMarkers=function(e){var t=[];return h.forEach(function(n){(n.type===e||e===undefined)&&t.push(n)}),t},this.getErrors=function(){return this.getMarkers("error")},this.getWarnings=function(){return this.getMarkers("warning")},this.getCompletions=function(t){return a.complete(e,n,d,t)};var p=!1;this.hasSyntaxError=function(){return p};var d=t.staticContext?t.staticContext:f(),v=t.fileName?t.fileName:"",m=v.substring(v.length-".jq".length).indexOf(".jq")!==-1&&e.indexOf("xquery version")!==0||e.indexOf("jsoniq version")===0,g=new s(e),y=m?new r(e,g):new i(e,g);try{y.parse_XQuery()}catch(b){if(!(b instanceof y.ParseException))throw b;p=!0,g.closeParseTree();var w=c(e,b.getBegin(),b.getEnd()),E=y.getErrorMessage(b);w.sc===w.ec&&w.ec++,h.push({pos:w,type:"error",level:"error",message:E})}n=g.getParseTree(),t.styleCheck&&(h=h.concat((new u(n,e)).getMarkers()));var S=new o(d,n);h=h.concat(S.getMarkers())}},{"../lib/completion/completer":6,"./compiler/static_context":4,"./compiler/translator":5,"./formatter/style_checker":7,"./parsers/JSONParseTreeHandler":8,"./parsers/JSONiqParser":9,"./parsers/XQueryParser":10}]},{},[12])(12)}),ace.define("ace/mode/xquery_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/xquery/xqlint"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./xquery/xqlint"),o=s.XQLint,u=function(e){return function(t){var n=e,r=n[t],i={},s={};return r.functions.forEach(function(e){s[t+"#"+e.name+"#"+e.arity]={params:[]},e.parameters.forEach(function(n){s[t+"#"+e.name+"#"+e.arity].params.push("$"+n.name)})}),r.variables.forEach(function(e){var n=e.name.substring(e.name.indexOf(":")+1);i[t+"#"+n]={type:"VarDecl",annotations:[]}}),{variables:i,functions:s}}},a=t.XQueryWorker=function(e){i.call(this,e),this.setTimeout(200),this.opts={styleCheck:!1};var t=this;this.sender.on("complete",function(e){if(t.xqlint){var n={line:e.data.pos.row,col:e.data.pos.column},r=t.xqlint.getCompletions(n);t.sender.emit("complete",r)}}),this.sender.on("setAvailableModuleNamespaces",function(e){t.availableModuleNamespaces=e.data}),this.sender.on("setModuleResolver",function(e){t.moduleResolver=u(e.data)})};r.inherits(a,i),function(){this.onUpdate=function(){this.sender.emit("start");var e=this.doc.getValue(),t=s.createStaticContext();this.moduleResolver&&t.setModuleResolver(this.moduleResolver),this.availableModuleNamespaces&&(t.availableModuleNamespaces=this.availableModuleNamespaces);var n={styleCheck:this.styleCheck,staticContext:t};this.xqlint=new o(e,n),this.sender.emit("markers",this.xqlint.getMarkers())}}.call(a.prototype)}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _="	\n\f\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}})
\ No newline at end of file
diff --git a/js/d3.v4.min.js b/js/d3.v4.min.js
new file mode 100644
index 0000000..8a0709b
--- /dev/null
+++ b/js/d3.v4.min.js
@@ -0,0 +1,8 @@
+// https://d3js.org Version 4.9.1. Copyright 2017 Mike Bostock.
+(function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.d3=t.d3||{})})(this,function(t){"use strict";function n(t){return function(n,e){return js(t(n),e)}}function e(t,n){return[t,n]}function r(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=sf?10:o>=ff?5:o>=lf?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=sf?10:o>=ff?5:o>=lf?2:1)}function i(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=sf?i*=10:o>=ff?i*=5:o>=lf&&(i*=2),n<t?-i:i}function o(t){return t.length}function u(t){return"translate("+(t+.5)+",0)"}function a(t){return"translate(0,"+(t+.5)+")"}function c(t){var n=Math.max(0,t.bandwidth()-1)/2;return t.round()&&(n=Math.round(n)),function(e){return t(e)+n}}function s(){return!this.__axis}function f(t,n){function e(e){var u=null==i?n.ticks?n.ticks.apply(n,r):n.domain():i,a=null==o?n.tickFormat?n.tickFormat.apply(n,r):Cf:o,_=Math.max(f,0)+h,y=n.range(),g=y[0]+.5,m=y[y.length-1]+.5,x=(n.bandwidth?c:Cf)(n.copy()),b=e.selection?e.selection():e,w=b.selectAll(".domain").data([null]),M=b.selectAll(".tick").data(u,n).order(),T=M.exit(),k=M.enter().append("g").attr("class","tick"),N=M.select("line"),S=M.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","#000")),M=M.merge(k),N=N.merge(k.append("line").attr("stroke","#000").attr(d+"2",p*f)),S=S.merge(k.append("text").attr("fill","#000").attr(d,p*_).attr("dy",t===zf?"0em":t===Lf?"0.71em":"0.32em")),e!==b&&(w=w.transition(e),M=M.transition(e),N=N.transition(e),S=S.transition(e),T=T.transition(e).attr("opacity",qf).attr("transform",function(t){return isFinite(t=x(t))?v(t):this.getAttribute("transform")}),k.attr("opacity",qf).attr("transform",function(t){var n=this.parentNode.__axis;return v(n&&isFinite(n=n(t))?n:x(t))})),T.remove(),w.attr("d",t===Rf||t==Pf?"M"+p*l+","+g+"H0.5V"+m+"H"+p*l:"M"+g+","+p*l+"V0.5H"+m+"V"+p*l),M.attr("opacity",1).attr("transform",function(t){return v(x(t))}),N.attr(d+"2",p*f),S.attr(d,p*_).text(a),b.filter(s).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===Pf?"start":t===Rf?"end":"middle"),b.each(function(){this.__axis=x})}var r=[],i=null,o=null,f=6,l=6,h=3,p=t===zf||t===Rf?-1:1,d=t===Rf||t===Pf?"x":"y",v=t===zf||t===Lf?u:a;return e.scale=function(t){return arguments.length?(n=t,e):n},e.ticks=function(){return r=Af.call(arguments),e},e.tickArguments=function(t){return arguments.length?(r=null==t?[]:Af.call(t),e):r.slice()},e.tickValues=function(t){return arguments.length?(i=null==t?null:Af.call(t),e):i&&i.slice()},e.tickFormat=function(t){return arguments.length?(o=t,e):o},e.tickSize=function(t){return arguments.length?(f=l=+t,e):f},e.tickSizeInner=function(t){return arguments.length?(f=+t,e):f},e.tickSizeOuter=function(t){return arguments.length?(l=+t,e):l},e.tickPadding=function(t){return arguments.length?(h=+t,e):h},e}function l(t){return f(zf,t)}function h(t){return f(Pf,t)}function p(t){return f(Lf,t)}function d(t){return f(Rf,t)}function v(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r)throw new Error("illegal type: "+t);r[t]=[]}return new _(r)}function _(t){this._=t}function y(t,n){return t.trim().split(/^|\s+/).map(function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})}function g(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function m(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=Uf,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}function x(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===Df&&n.documentElement.namespaceURI===Df?n.createElement(t):n.createElementNS(e,t)}}function b(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function w(){return new M}function M(){this._="@"+(++Yf).toString(36)}function T(t,n,e){return t=k(t,n,e),function(n){var e=n.relatedTarget;e&&(e===this||8&e.compareDocumentPosition(this))||t.call(this,n)}}function k(n,e,r){return function(i){var o=t.event;t.event=i;try{n.call(this,this.__data__,e,r)}finally{t.event=o}}}function N(t){return t.trim().split(/^|\s+/).map(function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}})}function S(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.capture);++i?n.length=i:delete this.__on}}}function E(t,n,e){var r=$f.hasOwnProperty(t.type)?T:k;return function(i,o,u){var a,c=this.__on,s=r(n,o,u);if(c)for(var f=0,l=c.length;f<l;++f)if((a=c[f]).type===t.type&&a.name===t.name)return this.removeEventListener(a.type,a.listener,a.capture),this.addEventListener(a.type,a.listener=s,a.capture=e),void(a.value=n);this.addEventListener(t.type,s,e),a={type:t.type,name:t.name,value:n,listener:s,capture:e},c?c.push(a):this.__on=[a]}}function A(n,e,r,i){var o=t.event;n.sourceEvent=t.event,t.event=n;try{return e.apply(r,i)}finally{t.event=o}}function C(){}function z(){return[]}function P(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function L(t,n,e,r,i,o){for(var u,a=0,c=n.length,s=o.length;a<s;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new P(t,o[a]);for(;a<c;++a)(u=n[a])&&(i[a]=u)}function R(t,n,e,r,i,o,u){var a,c,s,f={},l=n.length,h=o.length,p=new Array(l);for(a=0;a<l;++a)(c=n[a])&&(p[a]=s=ol+u.call(c,c.__data__,a,n),s in f?i[a]=c:f[s]=c);for(a=0;a<h;++a)s=ol+u.call(t,o[a],a,o),(c=f[s])?(r[a]=c,c.__data__=o[a],f[s]=null):e[a]=new P(t,o[a]);for(a=0;a<l;++a)(c=n[a])&&f[p[a]]===c&&(i[a]=c)}function q(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function U(t){return function(){this.removeAttribute(t)}}function D(t){return function(){this.removeAttributeNS(t.space,t.local)}}function O(t,n){return function(){this.setAttribute(t,n)}}function F(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function I(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function Y(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function B(t){return function(){this.style.removeProperty(t)}}function H(t,n,e){return function(){this.style.setProperty(t,n,e)}}function j(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function X(t,n){return t.style.getPropertyValue(n)||gl(t).getComputedStyle(t,null).getPropertyValue(n)}function $(t){return function(){delete this[t]}}function V(t,n){return function(){this[t]=n}}function W(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function Z(t){return t.trim().split(/^|\s+/)}function G(t){return t.classList||new J(t)}function J(t){this._node=t,this._names=Z(t.getAttribute("class")||"")}function Q(t,n){for(var e=G(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function K(t,n){for(var e=G(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function tt(t){return function(){Q(this,t)}}function nt(t){return function(){K(this,t)}}function et(t,n){return function(){(n.apply(this,arguments)?Q:K)(this,t)}}function rt(){this.textContent=""}function it(t){return function(){this.textContent=t}}function ot(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function ut(){this.innerHTML=""}function at(t){return function(){this.innerHTML=t}}function ct(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function st(){this.nextSibling&&this.parentNode.appendChild(this)}function ft(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function lt(){return null}function ht(){var t=this.parentNode;t&&t.removeChild(this)}function pt(t,n,e){var r=gl(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function dt(t,n){return function(){return pt(this,t,n)}}function vt(t,n){return function(){return pt(this,t,n.apply(this,arguments))}}function _t(t,n){this._groups=t,this._parents=n}function yt(){return new _t([[document.documentElement]],zl)}function gt(){t.event.stopImmediatePropagation()}function mt(t,n){var e=t.document.documentElement,r=Pl(t).on("dragstart.drag",null);n&&(r.on("click.drag",Ul,!0),setTimeout(function(){r.on("click.drag",null)},0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}function xt(t,n,e,r,i,o,u,a,c,s){this.target=t,this.type=n,this.subject=e,this.identifier=r,this.active=i,this.x=o,this.y=u,this.dx=a,this.dy=c,this._=s}function bt(){return!t.event.button}function wt(){return this.parentNode}function Mt(n){return null==n?{x:t.event.x,y:t.event.y}:n}function Tt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function kt(){}function Nt(t){var n;return t=(t+"").trim().toLowerCase(),(n=jl.exec(t))?(n=parseInt(n[1],16),new zt(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1)):(n=Xl.exec(t))?St(parseInt(n[1],16)):(n=$l.exec(t))?new zt(n[1],n[2],n[3],1):(n=Vl.exec(t))?new zt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Wl.exec(t))?Et(n[1],n[2],n[3],n[4]):(n=Zl.exec(t))?Et(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Gl.exec(t))?Pt(n[1],n[2]/100,n[3]/100,1):(n=Jl.exec(t))?Pt(n[1],n[2]/100,n[3]/100,n[4]):Ql.hasOwnProperty(t)?St(Ql[t]):"transparent"===t?new zt(NaN,NaN,NaN,0):null}function St(t){return new zt(t>>16&255,t>>8&255,255&t,1)}function Et(t,n,e,r){return r<=0&&(t=n=e=NaN),new zt(t,n,e,r)}function At(t){return t instanceof kt||(t=Nt(t)),t?(t=t.rgb(),new zt(t.r,t.g,t.b,t.opacity)):new zt}function Ct(t,n,e,r){return 1===arguments.length?At(t):new zt(t,n,e,null==r?1:r)}function zt(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Pt(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new qt(t,n,e,r)}function Lt(t){if(t instanceof qt)return new qt(t.h,t.s,t.l,t.opacity);if(t instanceof kt||(t=Nt(t)),!t)return new qt;if(t instanceof qt)return t;t=t.rgb();var n=t.r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,c=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=c<.5?o+i:2-o-i,u*=60):a=c>0&&c<1?0:u,new qt(u,a,c,t.opacity)}function Rt(t,n,e,r){return 1===arguments.length?Lt(t):new qt(t,n,e,null==r?1:r)}function qt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ut(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Dt(t){if(t instanceof Ft)return new Ft(t.l,t.a,t.b,t.opacity);if(t instanceof $t){var n=t.h*Kl;return new Ft(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}t instanceof zt||(t=At(t));var e=Ht(t.r),r=Ht(t.g),i=Ht(t.b),o=It((.4124564*e+.3575761*r+.1804375*i)/nh),u=It((.2126729*e+.7151522*r+.072175*i)/eh);return new Ft(116*u-16,500*(o-u),200*(u-It((.0193339*e+.119192*r+.9503041*i)/rh)),t.opacity)}function Ot(t,n,e,r){return 1===arguments.length?Dt(t):new Ft(t,n,e,null==r?1:r)}function Ft(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function It(t){return t>ah?Math.pow(t,1/3):t/uh+ih}function Yt(t){return t>oh?t*t*t:uh*(t-ih)}function Bt(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Ht(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function jt(t){if(t instanceof $t)return new $t(t.h,t.c,t.l,t.opacity);t instanceof Ft||(t=Dt(t));var n=Math.atan2(t.b,t.a)*th;return new $t(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function Xt(t,n,e,r){return 1===arguments.length?jt(t):new $t(t,n,e,null==r?1:r)}function $t(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function Vt(t){if(t instanceof Zt)return new Zt(t.h,t.s,t.l,t.opacity);t instanceof zt||(t=At(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(vh*r+ph*n-dh*e)/(vh+ph-dh),o=r-i,u=(hh*(e-i)-fh*o)/lh,a=Math.sqrt(u*u+o*o)/(hh*i*(1-i)),c=a?Math.atan2(u,o)*th-120:NaN;return new Zt(c<0?c+360:c,a,i,t.opacity)}function Wt(t,n,e,r){return 1===arguments.length?Vt(t):new Zt(t,n,e,null==r?1:r)}function Zt(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Gt(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}function Jt(t,n){return function(e){return t+e*n}}function Qt(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}function Kt(t,n){var e=n-t;return e?Jt(t,e>180||e<-180?e-360*Math.round(e/360):e):Th(isNaN(t)?n:t)}function tn(t){return 1==(t=+t)?nn:function(n,e){return e-n?Qt(n,e,t):Th(isNaN(n)?e:n)}}function nn(t,n){var e=n-t;return e?Jt(t,e):Th(isNaN(t)?n:t)}function en(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=Ct(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}function rn(t){return function(){return t}}function on(t){return function(n){return t(n)+""}}function un(t){return"none"===t?Oh:(_h||(_h=document.createElement("DIV"),yh=document.documentElement,gh=document.defaultView),_h.style.transform=t,t=gh.getComputedStyle(yh.appendChild(_h),null).getPropertyValue("transform"),yh.removeChild(_h),t=t.slice(7,-1).split(","),Fh(+t[0],+t[1],+t[2],+t[3],+t[4],+t[5]))}function an(t){return null==t?Oh:(mh||(mh=document.createElementNS("http://www.w3.org/2000/svg","g")),mh.setAttribute("transform",t),(t=mh.transform.baseVal.consolidate())?(t=t.matrix,Fh(t.a,t.b,t.c,t.d,t.e,t.f)):Oh)}function cn(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}function o(t,r,i,o,u,a){if(t!==i||r!==o){var c=u.push("translate(",null,n,null,e);a.push({i:c-4,x:Ch(t,i)},{i:c-2,x:Ch(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}function u(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Ch(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}function a(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Ch(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}function c(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Ch(t,e)},{i:a-2,x:Ch(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}return function(n,e){var r=[],i=[];return n=t(n),e=t(e),o(n.translateX,n.translateY,e.translateX,e.translateY,r,i),u(n.rotate,e.rotate,r,i),a(n.skewX,e.skewX,r,i),c(n.scaleX,n.scaleY,e.scaleX,e.scaleY,r,i),n=e=null,function(t){for(var n,e=-1,o=i.length;++e<o;)r[(n=i[e]).i]=n.x(t);return r.join("")}}}function sn(t){return((t=Math.exp(t))+1/t)/2}function fn(t){return((t=Math.exp(t))-1/t)/2}function ln(t){return((t=Math.exp(2*t))-1)/(t+1)}function hn(t){return function(n,e){var r=t((n=Rt(n)).h,(e=Rt(e)).h),i=nn(n.s,e.s),o=nn(n.l,e.l),u=nn(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=u(t),n+""}}}function pn(t,n){var e=nn((t=Ot(t)).l,(n=Ot(n)).l),r=nn(t.a,n.a),i=nn(t.b,n.b),o=nn(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}}function dn(t){return function(n,e){var r=t((n=Xt(n)).h,(e=Xt(e)).h),i=nn(n.c,e.c),o=nn(n.l,e.l),u=nn(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=u(t),n+""}}}function vn(t){return function n(e){function r(n,r){var i=t((n=Wt(n)).h,(r=Wt(r)).h),o=nn(n.s,r.s),u=nn(n.l,r.l),a=nn(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=u(Math.pow(t,e)),n.opacity=a(t),n+""}}return e=+e,r.gamma=n,r}(1)}function _n(){return ep||(op(yn),ep=ip.now()+rp)}function yn(){ep=0}function gn(){this._call=this._time=this._next=null}function mn(t,n,e){var r=new gn;return r.restart(t,n,e),r}function xn(){_n(),++Jh;for(var t,n=xh;n;)(t=ep-n._time)>=0&&n._call.call(null,t),n=n._next;--Jh}function bn(){ep=(np=ip.now())+rp,Jh=Qh=0;try{xn()}finally{Jh=0,Mn(),ep=0}}function wn(){var t=ip.now(),n=t-np;n>tp&&(rp-=n,np=t)}function Mn(){for(var t,n,e=xh,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:xh=n);bh=t,Tn(r)}function Tn(t){if(!Jh){Qh&&(Qh=clearTimeout(Qh));var n=t-ep;n>24?(t<1/0&&(Qh=setTimeout(bn,n)),Kh&&(Kh=clearInterval(Kh))):(Kh||(np=ep,Kh=setInterval(wn,tp)),Jh=1,op(bn))}}function kn(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>fp)throw new Error("too late");return e}function Nn(t,n){var e=t.__transition;if(!e||!(e=e[n])||e.state>hp)throw new Error("too late");return e}function Sn(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("too late");return e}function En(t,n,e){function r(t){e.state=lp,e.timer.restart(i,e.delay,e.time),e.delay<=t&&i(t-e.delay)}function i(r){var s,f,l,h;if(e.state!==lp)return u();for(s in c)if(h=c[s],h.name===e.name){if(h.state===pp)return up(i);h.state===dp?(h.state=_p,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete c[s]):+s<n&&(h.state=_p,h.timer.stop(),delete c[s])}if(up(function(){e.state===pp&&(e.state=dp,e.timer.restart(o,e.delay,e.time),o(r))}),e.state=hp,e.on.call("start",t,t.__data__,e.index,e.group),e.state===hp){for(e.state=pp,a=new Array(l=e.tween.length),s=0,f=-1;s<l;++s)(h=e.tween[s].value.call(t,t.__data__,e.index,e.group))&&(a[++f]=h);a.length=f+1}}function o(n){for(var r=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(u),e.state=vp,1),i=-1,o=a.length;++i<o;)a[i].call(null,r);e.state===vp&&(e.on.call("end",t,t.__data__,e.index,e.group),u())}function u(){e.state=_p,e.timer.stop(),delete c[n];for(var r in c)return;delete t.__transition}var a,c=t.__transition;c[n]=e,e.timer=mn(r,0,e.time)}function An(t,n){var e,r;return function(){var i=Nn(this,t),o=i.tween;if(o!==e){r=e=o;for(var u=0,a=r.length;u<a;++u)if(r[u].name===n){r=r.slice(),r.splice(u,1);break}}i.tween=r}}function Cn(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Nn(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},c=0,s=i.length;c<s;++c)if(i[c].name===n){i[c]=a;break}c===s&&i.push(a)}o.tween=i}}function zn(t,n,e){var r=t._id;return t.each(function(){var t=Nn(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)}),function(t){return Sn(t,r).value[n]}}function Pn(t){return function(){this.removeAttribute(t)}}function Ln(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Rn(t,n,e){var r,i;return function(){var o=this.getAttribute(t);return o===e?null:o===r?i:i=n(r=o,e)}}function qn(t,n,e){var r,i;return function(){var o=this.getAttributeNS(t.space,t.local);return o===e?null:o===r?i:i=n(r=o,e)}}function Un(t,n,e){var r,i,o;return function(){var u,a=e(this);return null==a?void this.removeAttribute(t):(u=this.getAttribute(t),u===a?null:u===r&&a===i?o:o=n(r=u,i=a))}}function Dn(t,n,e){var r,i,o;return function(){var u,a=e(this);return null==a?void this.removeAttributeNS(t.space,t.local):(u=this.getAttributeNS(t.space,t.local),u===a?null:u===r&&a===i?o:o=n(r=u,i=a))}}function On(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttributeNS(t.space,t.local,r(n))}}return e._value=n,e}function Fn(t,n){function e(){var e=this,r=n.apply(e,arguments);return r&&function(n){e.setAttribute(t,r(n))}}return e._value=n,e}function In(t,n){return function(){kn(this,t).delay=+n.apply(this,arguments)}}function Yn(t,n){return n=+n,function(){kn(this,t).delay=n}}function Bn(t,n){return function(){Nn(this,t).duration=+n.apply(this,arguments)}}function Hn(t,n){return n=+n,function(){Nn(this,t).duration=n}}function jn(t,n){if("function"!=typeof n)throw new Error;return function(){Nn(this,t).ease=n}}function Xn(t){return(t+"").trim().split(/^|\s+/).every(function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t})}function $n(t,n,e){var r,i,o=Xn(n)?kn:Nn;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}function Vn(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}function Wn(t,n){var e,r,i;return function(){var o=X(this,t),u=(this.style.removeProperty(t),X(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}function Zn(t){return function(){this.style.removeProperty(t)}}function Gn(t,n,e){var r,i;return function(){var o=X(this,t);return o===e?null:o===r?i:i=n(r=o,e)}}function Jn(t,n,e){var r,i,o;return function(){var u=X(this,t),a=e(this);return null==a&&(this.style.removeProperty(t),a=X(this,t)),u===a?null:u===r&&a===i?o:o=n(r=u,i=a)}}function Qn(t,n,e){function r(){var r=this,i=n.apply(r,arguments);return i&&function(n){r.style.setProperty(t,i(n),e)}}return r._value=n,r}function Kn(t){return function(){this.textContent=t}}function te(t){return function(){var n=t(this);this.textContent=null==n?"":n}}function ne(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function ee(t){return yt().transition(t)}function re(){return++Fp}function ie(t){return+t}function oe(t){return t*t}function ue(t){return t*(2-t)}function ae(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function ce(t){return t*t*t}function se(t){return--t*t*t+1}function fe(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}function le(t){return 1-Math.cos(t*Xp)}function he(t){return Math.sin(t*Xp)}function pe(t){return(1-Math.cos(jp*t))/2}function de(t){return Math.pow(2,10*t-10)}function ve(t){return 1-Math.pow(2,-10*t)}function _e(t){return((t*=2)<=1?Math.pow(2,10*t-10):2-Math.pow(2,10-10*t))/2}function ye(t){return 1-Math.sqrt(1-t*t)}function ge(t){return Math.sqrt(1- --t*t)}function me(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}function xe(t){return 1-be(1-t)}function be(t){return(t=+t)<$p?nd*t*t:t<Wp?nd*(t-=Vp)*t+Zp:t<Jp?nd*(t-=Gp)*t+Qp:nd*(t-=Kp)*t+td}function we(t){return((t*=2)<=1?1-be(1-t):be(t-1)+1)/2}function Me(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))return sd.time=_n(),sd;return e}function Te(){t.event.stopImmediatePropagation()}function ke(t){return{type:t}}function Ne(){return!t.event.button}function Se(){var t=this.ownerSVGElement||this;return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function Ee(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function Ae(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}function Ce(t){var n=t.__brush;return n?n.dim.output(n.selection):null}function ze(){return Le(xd)}function Pe(){return Le(bd)}function Le(n){function e(t){var e=t.property("__brush",a).selectAll(".overlay").data([ke("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Md.overlay).merge(e).each(function(){var t=Ee(this).extent;Pl(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])}),t.selectAll(".selection").data([ke("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Md.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var i=t.selectAll(".handle").data(n.handles,function(t){return t.type});i.exit().remove(),i.enter().append("rect").attr("class",function(t){return"handle handle--"+t.type}).attr("cursor",function(t){return Md[t.type]}),t.each(r).attr("fill","none").attr("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush touchstart.brush",u)}function r(){var t=Pl(this),n=Ee(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",function(t){return"e"===t.type[t.type.length-1]?n[1][0]-h/2:n[0][0]-h/2}).attr("y",function(t){return"s"===t.type[0]?n[1][1]-h/2:n[0][1]-h/2}).attr("width",function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+h:h}).attr("height",function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+h:h})):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function i(t,n){return t.__brush.emitter||new o(t,n)}function o(t,n){this.that=t,this.args=n,this.state=t.__brush,this.active=0}function u(){function e(){var t=Gf(T);!U||w||M||(Math.abs(t[0]-O[0])>Math.abs(t[1]-O[1])?M=!0:w=!0),O=t,b=!0,vd(),o()}function o(){var t;switch(m=O[0]-D[0],x=O[1]-D[1],N){case yd:case _d:S&&(m=Math.max(P-l,Math.min(R-v,m)),h=l+m,_=v+m),E&&(x=Math.max(L-p,Math.min(q-y,x)),d=p+x,g=y+x);break;case gd:S<0?(m=Math.max(P-l,Math.min(R-l,m)),h=l+m,_=v):S>0&&(m=Math.max(P-v,Math.min(R-v,m)),h=l,_=v+m),E<0?(x=Math.max(L-p,Math.min(q-p,x)),d=p+x,g=y):E>0&&(x=Math.max(L-y,Math.min(q-y,x)),d=p,g=y+x);break;case md:S&&(h=Math.max(P,Math.min(R,l-m*S)),_=Math.max(P,Math.min(R,v+m*S))),E&&(d=Math.max(L,Math.min(q,p-x*E)),g=Math.max(L,Math.min(q,y+x*E)))}_<h&&(S*=-1,t=l,l=v,v=t,t=h,h=_,_=t,k in Td&&Y.attr("cursor",Md[k=Td[k]])),g<d&&(E*=-1,t=p,p=y,y=t,t=d,d=g,g=t,k in kd&&Y.attr("cursor",Md[k=kd[k]])),A.selection&&(z=A.selection),w&&(h=z[0][0],_=z[1][0]),M&&(d=z[0][1],g=z[1][1]),z[0][0]===h&&z[0][1]===d&&z[1][0]===_&&z[1][1]===g||(A.selection=[[h,d],[_,g]],r.call(T),F.brush())}function u(){if(Te(),t.event.touches){if(t.event.touches.length)return;c&&clearTimeout(c),c=setTimeout(function(){c=null},500),I.on("touchmove.brush touchend.brush touchcancel.brush",null)}else mt(t.event.view,b),B.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);I.attr("pointer-events","all"),Y.attr("cursor",Md.overlay),A.selection&&(z=A.selection),Ae(z)&&(A.selection=null,r.call(T)),F.end()}function a(){switch(t.event.keyCode){case 16:U=S&&E;break;case 18:N===gd&&(S&&(v=_-m*S,l=h+m*S),E&&(y=g-x*E,p=d+x*E),N=md,o());break;case 32:N!==gd&&N!==md||(S<0?v=_-m:S>0&&(l=h-m),E<0?y=g-x:E>0&&(p=d-x),N=yd,Y.attr("cursor",Md.selection),o());break;default:return}vd()}function s(){switch(t.event.keyCode){case 16:U&&(w=M=U=!1,o());break;case 18:N===md&&(S<0?v=_:S>0&&(l=h),E<0?y=g:E>0&&(p=d),N=gd,o());break;case 32:N===yd&&(t.event.altKey?(S&&(v=_-m*S,l=h+m*S),E&&(y=g-x*E,p=d+x*E),N=md):(S<0?v=_:S>0&&(l=h),E<0?y=g:E>0&&(p=d),N=gd),Y.attr("cursor",Md[k]),o());break;default:return}vd()}if(t.event.touches){if(t.event.changedTouches.length<t.event.touches.length)return vd()}else if(c)return;if(f.apply(this,arguments)){var l,h,p,d,v,_,y,g,m,x,b,w,M,T=this,k=t.event.target.__data__.type,N="selection"===(t.event.metaKey?k="overlay":k)?_d:t.event.altKey?md:gd,S=n===bd?null:Nd[k],E=n===xd?null:Sd[k],A=Ee(T),C=A.extent,z=A.selection,P=C[0][0],L=C[0][1],R=C[1][0],q=C[1][1],U=S&&E&&t.event.shiftKey,D=Gf(T),O=D,F=i(T,arguments).beforestart();"overlay"===k?A.selection=z=[[l=n===bd?P:D[0],p=n===xd?L:D[1]],[v=n===bd?R:l,y=n===xd?q:p]]:(l=z[0][0],p=z[0][1],v=z[1][0],y=z[1][1]),h=l,d=p,_=v,g=y;var I=Pl(T).attr("pointer-events","none"),Y=I.selectAll(".overlay").attr("cursor",Md[k]);if(t.event.touches)I.on("touchmove.brush",e,!0).on("touchend.brush touchcancel.brush",u,!0);else{var B=Pl(t.event.view).on("keydown.brush",a,!0).on("keyup.brush",s,!0).on("mousemove.brush",e,!0).on("mouseup.brush",u,!0);Dl(t.event.view)}Te(),gp(T),r.call(T),F.start()}}function a(){var t=this.__brush||{selection:null};return t.extent=s.apply(this,arguments),t.dim=n,t}var c,s=Se,f=Ne,l=v(e,"start","brush","end"),h=6;return e.move=function(t,e){t.selection?t.on("start.brush",function(){i(this,arguments).beforestart().start()}).on("interrupt.brush end.brush",function(){i(this,arguments).end()}).tween("brush",function(){function t(t){u.selection=1===t&&Ae(s)?null:f(t),r.call(o),a.brush()}var o=this,u=o.__brush,a=i(o,arguments),c=u.selection,s=n.input("function"==typeof e?e.apply(this,arguments):e,u.extent),f=qh(c,s);return c&&s?t:t(1)}):t.each(function(){var t=this,o=arguments,u=t.__brush,a=n.input("function"==typeof e?e.apply(t,o):e,u.extent),c=i(t,o).beforestart();gp(t),u.selection=null==a||Ae(a)?null:a,r.call(t),c.start().brush().end()})},o.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting&&(this.starting=!1,this.emit("start")),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){A(new dd(e,t,n.output(this.state.selection)),l.apply,l,[t,this.that,this.args])}},e.extent=function(t){return arguments.length?(s="function"==typeof t?t:pd([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),e):s},e.filter=function(t){return arguments.length?(f="function"==typeof t?t:pd(!!t),e):f},e.handleSize=function(t){return arguments.length?(h=+t,e):h},e.on=function(){var t=l.on.apply(l,arguments);return t===l?e:t},e}function Re(t){return function(n,e){return t(n.source.value+n.target.value,e.source.value+e.target.value)}}function qe(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ue(){return new qe}function De(t){return t.source}function Oe(t){return t.target}function Fe(t){return t.radius}function Ie(t){return t.startAngle}function Ye(t){return t.endAngle}function Be(){}function He(t,n){var e=new Be;if(t instanceof Be)t.each(function(t,n){e.set(n,t)});else if(Array.isArray(t)){var r,i=-1,o=t.length;if(null==n)for(;++i<o;)e.set(i,t[i]);else for(;++i<o;)e.set(n(r=t[i],i,t),r)}else if(t)for(var u in t)e.set(u,t[u]);return e}function je(){return{}}function Xe(t,n,e){t[n]=e}function $e(){return He()}function Ve(t,n,e){t.set(n,e)}function We(){}function Ze(t,n){var e=new We;if(t instanceof We)t.each(function(t){e.add(t)});else if(t){var r=-1,i=t.length;if(null==n)for(;++r<i;)e.add(t[r]);else for(;++r<i;)e.add(n(t[r],r,t))}return e}function Ge(t){return new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}")}function Je(t,n){var e=Ge(t);return function(r,i){return n(e(r),i,t)}}function Qe(t){var n=Object.create(null),e=[];return t.forEach(function(t){for(var r in t)r in n||e.push(n[r]=r)}),e}function Ke(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,u,a,c,s,f,l,h,p=t._root,d={data:r},v=t._x0,_=t._y0,y=t._x1,g=t._y1;if(!p)return t._root=d,t;for(;p.length;)if((s=n>=(o=(v+y)/2))?v=o:y=o,(f=e>=(u=(_+g)/2))?_=u:g=u,i=p,!(p=p[l=f<<1|s]))return i[l]=d,t;if(a=+t._x.call(null,p.data),c=+t._y.call(null,p.data),n===a&&e===c)return d.next=p,i?i[l]=d:t._root=d,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=n>=(o=(v+y)/2))?v=o:y=o,(f=e>=(u=(_+g)/2))?_=u:g=u}while((l=f<<1|s)==(h=(c>=u)<<1|a>=o));return i[h]=p,i[l]=d,t}function tr(t){var n,e,r,i,o=t.length,u=new Array(o),a=new Array(o),c=1/0,s=1/0,f=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(u[e]=r,a[e]=i,r<c&&(c=r),r>f&&(f=r),i<s&&(s=i),i>l&&(l=i));for(f<c&&(c=this._x0,f=this._x1),l<s&&(s=this._y0,l=this._y1),this.cover(c,s).cover(f,l),e=0;e<o;++e)Ke(this,u[e],a[e],t[e]);return this}function nr(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function er(t){return t[0]}function rr(t){return t[1]}function ir(t,n,e){var r=new or(null==n?er:n,null==e?rr:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function or(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function ur(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}function ar(t){return t.x+t.vx}function cr(t){return t.y+t.vy}function sr(t){return t.index}function fr(t,n){var e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function lr(t){return t.x}function hr(t){return t.y}function pr(t){return new dr(t)}function dr(t){if(!(n=Ov.exec(t)))throw new Error("invalid format: "+t);var n,e=n[1]||" ",r=n[2]||">",i=n[3]||"-",o=n[4]||"",u=!!n[5],a=n[6]&&+n[6],c=!!n[7],s=n[8]&&+n[8].slice(1),f=n[9]||"";"n"===f?(c=!0,f="g"):Dv[f]||(f=""),(u||"0"===e&&"="===r)&&(u=!0,e="0",r="="),this.fill=e,this.align=r,
+this.sign=i,this.symbol=o,this.zero=u,this.width=a,this.comma=c,this.precision=s,this.type=f}function vr(n){return Fv=Bv(n),t.format=Fv.format,t.formatPrefix=Fv.formatPrefix,Fv}function _r(){this.reset()}function yr(t,n,e){var r=t.s=n+e,i=r-n,o=r-i;t.t=n-o+(e-i)}function gr(t){return t>1?0:t<-1?N_:Math.acos(t)}function mr(t){return t>1?S_:t<-1?-S_:Math.asin(t)}function xr(t){return(t=I_(t/2))*t}function br(){}function wr(t,n){t&&X_.hasOwnProperty(t.type)&&X_[t.type](t,n)}function Mr(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Tr(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Mr(t[e],n,1);n.polygonEnd()}function kr(){Z_.point=Sr}function Nr(){Er(Vv,Wv)}function Sr(t,n){Z_.point=Er,Vv=t,Wv=n,t*=z_,n*=z_,Zv=t,Gv=q_(n=n/2+E_),Jv=I_(n)}function Er(t,n){t*=z_,n*=z_,n=n/2+E_;var e=t-Zv,r=e>=0?1:-1,i=r*e,o=q_(n),u=I_(n),a=Jv*u,c=Gv*o+a*q_(i),s=a*r*I_(i);V_.add(R_(s,c)),Zv=t,Gv=o,Jv=u}function Ar(t){return[R_(t[1],t[0]),mr(t[2])]}function Cr(t){var n=t[0],e=t[1],r=q_(e);return[r*q_(n),r*I_(n),I_(e)]}function zr(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Pr(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function Lr(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function Rr(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function qr(t){var n=B_(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function Ur(t,n){u_.push(a_=[Qv=t,t_=t]),n<Kv&&(Kv=n),n>n_&&(n_=n)}function Dr(t,n){var e=Cr([t*z_,n*z_]);if(o_){var r=Pr(o_,e),i=[r[1],-r[0],0],o=Pr(i,r);qr(o),o=Ar(o);var u,a=t-e_,c=a>0?1:-1,s=o[0]*C_*c,f=P_(a)>180;f^(c*e_<s&&s<c*t)?(u=o[1]*C_)>n_&&(n_=u):(s=(s+360)%360-180,f^(c*e_<s&&s<c*t)?(u=-o[1]*C_)<Kv&&(Kv=u):(n<Kv&&(Kv=n),n>n_&&(n_=n))),f?t<e_?Hr(Qv,t)>Hr(Qv,t_)&&(t_=t):Hr(t,t_)>Hr(Qv,t_)&&(Qv=t):t_>=Qv?(t<Qv&&(Qv=t),t>t_&&(t_=t)):t>e_?Hr(Qv,t)>Hr(Qv,t_)&&(t_=t):Hr(t,t_)>Hr(Qv,t_)&&(Qv=t)}else u_.push(a_=[Qv=t,t_=t]);n<Kv&&(Kv=n),n>n_&&(n_=n),o_=e,e_=t}function Or(){Q_.point=Dr}function Fr(){a_[0]=Qv,a_[1]=t_,Q_.point=Ur,o_=null}function Ir(t,n){if(o_){var e=t-e_;J_.add(P_(e)>180?e+(e>0?360:-360):e)}else r_=t,i_=n;Z_.point(t,n),Dr(t,n)}function Yr(){Z_.lineStart()}function Br(){Ir(r_,i_),Z_.lineEnd(),P_(J_)>k_&&(Qv=-(t_=180)),a_[0]=Qv,a_[1]=t_,o_=null}function Hr(t,n){return(n-=t)<0?n+360:n}function jr(t,n){return t[0]-n[0]}function Xr(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}function $r(t,n){t*=z_,n*=z_;var e=q_(n);Vr(e*q_(t),e*I_(t),I_(n))}function Vr(t,n,e){++c_,f_+=(t-f_)/c_,l_+=(n-l_)/c_,h_+=(e-h_)/c_}function Wr(){ty.point=Zr}function Zr(t,n){t*=z_,n*=z_;var e=q_(n);b_=e*q_(t),w_=e*I_(t),M_=I_(n),ty.point=Gr,Vr(b_,w_,M_)}function Gr(t,n){t*=z_,n*=z_;var e=q_(n),r=e*q_(t),i=e*I_(t),o=I_(n),u=R_(B_((u=w_*o-M_*i)*u+(u=M_*r-b_*o)*u+(u=b_*i-w_*r)*u),b_*r+w_*i+M_*o);s_+=u,p_+=u*(b_+(b_=r)),d_+=u*(w_+(w_=i)),v_+=u*(M_+(M_=o)),Vr(b_,w_,M_)}function Jr(){ty.point=$r}function Qr(){ty.point=ti}function Kr(){ni(m_,x_),ty.point=$r}function ti(t,n){m_=t,x_=n,t*=z_,n*=z_,ty.point=ni;var e=q_(n);b_=e*q_(t),w_=e*I_(t),M_=I_(n),Vr(b_,w_,M_)}function ni(t,n){t*=z_,n*=z_;var e=q_(n),r=e*q_(t),i=e*I_(t),o=I_(n),u=w_*o-M_*i,a=M_*r-b_*o,c=b_*i-w_*r,s=B_(u*u+a*a+c*c),f=mr(s),l=s&&-f/s;__+=l*u,y_+=l*a,g_+=l*c,s_+=f,p_+=f*(b_+(b_=r)),d_+=f*(w_+(w_=i)),v_+=f*(M_+(M_=o)),Vr(b_,w_,M_)}function ei(t,n){return[t>N_?t-A_:t<-N_?t+A_:t,n]}function ri(t,n,e){return(t%=A_)?n||e?ry(oi(t),ui(n,e)):oi(t):n||e?ui(n,e):ei}function ii(t){return function(n,e){return n+=t,[n>N_?n-A_:n<-N_?n+A_:n,e]}}function oi(t){var n=ii(t);return n.invert=ii(-t),n}function ui(t,n){function e(t,n){var e=q_(n),a=q_(t)*e,c=I_(t)*e,s=I_(n),f=s*r+a*i;return[R_(c*o-f*u,a*r-s*i),mr(f*o+c*u)]}var r=q_(t),i=I_(t),o=q_(n),u=I_(n);return e.invert=function(t,n){var e=q_(n),a=q_(t)*e,c=I_(t)*e,s=I_(n),f=s*o-c*u;return[R_(c*o+s*u,a*r+f*i),mr(f*r-a*i)]},e}function ai(t,n,e,r,i,o){if(e){var u=q_(n),a=I_(n),c=r*e;null==i?(i=n+r*A_,o=n-c/2):(i=ci(u,i),o=ci(u,o),(r>0?i<o:i>o)&&(i+=r*A_));for(var s,f=i;r>0?f>o:f<o;f-=c)s=Ar([u,-a*q_(f),-a*I_(f)]),t.point(s[0],s[1])}}function ci(t,n){n=Cr(n),n[0]-=t,qr(n);var e=gr(-n[1]);return((-n[2]<0?-e:e)+A_-k_)%A_}function si(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function fi(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function li(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,a,s){var f=0,l=0;if(null==i||(f=u(i,a))!==(l=u(o,a))||c(i,o)<0^a>0)do{s.point(0===f||3===f?t:e,f>1?r:n)}while((f=(f+a+4)%4)!==l);else s.point(o[0],o[1])}function u(r,i){return P_(r[0]-t)<k_?i>0?0:3:P_(r[0]-e)<k_?i>0?2:1:P_(r[1]-n)<k_?i>0?1:0:i>0?3:2}function a(t,n){return c(t.x,n.x)}function c(t,n){var e=u(t,1),r=u(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(u){function c(t,n){i(t,n)&&N.point(t,n)}function s(){for(var n=0,e=0,i=_.length;e<i;++e)for(var o,u,a=_[e],c=1,s=a.length,f=a[0],l=f[0],h=f[1];c<s;++c)o=l,u=h,f=a[c],l=f[0],h=f[1],u<=r?h>r&&(l-o)*(r-u)>(h-u)*(t-o)&&++n:h<=r&&(l-o)*(r-u)<(h-u)*(t-o)&&--n;return n}function f(){N=S,v=[],_=[],k=!0}function l(){var t=s(),n=k&&t,e=(v=bf(v)).length;(n||e)&&(u.polygonStart(),n&&(u.lineStart(),o(null,null,1,u),u.lineEnd()),e&&xy(v,a,t,o,u),u.polygonEnd()),N=u,v=_=y=null}function h(){E.point=d,_&&_.push(y=[]),T=!0,M=!1,b=w=NaN}function p(){v&&(d(g,m),x&&M&&S.rejoin(),v.push(S.result())),E.point=c,M&&N.lineEnd()}function d(o,u){var a=i(o,u);if(_&&y.push([o,u]),T)g=o,m=u,x=a,T=!1,a&&(N.lineStart(),N.point(o,u));else if(a&&M)N.point(o,u);else{var c=[b=Math.max(wy,Math.min(by,b)),w=Math.max(wy,Math.min(by,w))],s=[o=Math.max(wy,Math.min(by,o)),u=Math.max(wy,Math.min(by,u))];gy(c,s,t,n,e,r)?(M||(N.lineStart(),N.point(c[0],c[1])),N.point(s[0],s[1]),a||N.lineEnd(),k=!1):a&&(N.lineStart(),N.point(o,u),k=!1)}b=o,w=u,M=a}var v,_,y,g,m,x,b,w,M,T,k,N=u,S=yy(),E={point:c,lineStart:h,lineEnd:p,polygonStart:f,polygonEnd:l};return E}}function hi(){Sy.point=di,Sy.lineEnd=pi}function pi(){Sy.point=Sy.lineEnd=br}function di(t,n){t*=z_,n*=z_,iy=t,oy=I_(n),uy=q_(n),Sy.point=vi}function vi(t,n){t*=z_,n*=z_;var e=I_(n),r=q_(n),i=P_(t-iy),o=q_(i),u=I_(i),a=r*u,c=uy*e-oy*r*o,s=oy*e+uy*r*o;Ny.add(R_(B_(a*a+c*c),s)),iy=t,oy=e,uy=r}function _i(t,n){return!(!t||!Ly.hasOwnProperty(t.type))&&Ly[t.type](t,n)}function yi(t,n){return 0===zy(t,n)}function gi(t,n){var e=zy(t[0],t[1]);return zy(t[0],n)+zy(n,t[1])<=e+k_}function mi(t,n){return!!ky(t.map(xi),bi(n))}function xi(t){return t=t.map(bi),t.pop(),t}function bi(t){return[t[0]*z_,t[1]*z_]}function wi(t,n,e){var r=cf(t,n-k_,e).concat(n);return function(t){return r.map(function(n){return[t,n]})}}function Mi(t,n,e){var r=cf(t,n-k_,e).concat(n);return function(t){return r.map(function(n){return[n,t]})}}function Ti(){function t(){return{type:"MultiLineString",coordinates:n()}}function n(){return cf(U_(o/_)*_,i,_).map(h).concat(cf(U_(s/y)*y,c,y).map(p)).concat(cf(U_(r/d)*d,e,d).filter(function(t){return P_(t%_)>k_}).map(f)).concat(cf(U_(a/v)*v,u,v).filter(function(t){return P_(t%y)>k_}).map(l))}var e,r,i,o,u,a,c,s,f,l,h,p,d=10,v=d,_=90,y=360,g=2.5;return t.lines=function(){return n().map(function(t){return{type:"LineString",coordinates:t}})},t.outline=function(){return{type:"Polygon",coordinates:[h(o).concat(p(c).slice(1),h(i).reverse().slice(1),p(s).reverse().slice(1))]}},t.extent=function(n){return arguments.length?t.extentMajor(n).extentMinor(n):t.extentMinor()},t.extentMajor=function(n){return arguments.length?(o=+n[0][0],i=+n[1][0],s=+n[0][1],c=+n[1][1],o>i&&(n=o,o=i,i=n),s>c&&(n=s,s=c,c=n),t.precision(g)):[[o,s],[i,c]]},t.extentMinor=function(n){return arguments.length?(r=+n[0][0],e=+n[1][0],a=+n[0][1],u=+n[1][1],r>e&&(n=r,r=e,e=n),a>u&&(n=a,a=u,u=n),t.precision(g)):[[r,a],[e,u]]},t.step=function(n){return arguments.length?t.stepMajor(n).stepMinor(n):t.stepMinor()},t.stepMajor=function(n){return arguments.length?(_=+n[0],y=+n[1],t):[_,y]},t.stepMinor=function(n){return arguments.length?(d=+n[0],v=+n[1],t):[d,v]},t.precision=function(n){return arguments.length?(g=+n,f=wi(a,u,90),l=Mi(r,e,g),h=wi(s,c,90),p=Mi(o,i,g),t):g},t.extentMajor([[-180,-90+k_],[180,90-k_]]).extentMinor([[-180,-80-k_],[180,80+k_]])}function ki(){return Ti()()}function Ni(){Fy.point=Si}function Si(t,n){Fy.point=Ei,ay=sy=t,cy=fy=n}function Ei(t,n){Oy.add(fy*t-sy*n),sy=t,fy=n}function Ai(){Ei(ay,cy)}function Ci(t,n){t<Iy&&(Iy=t),t>By&&(By=t),n<Yy&&(Yy=n),n>Hy&&(Hy=n)}function zi(t,n){Xy+=t,$y+=n,++Vy}function Pi(){tg.point=Li}function Li(t,n){tg.point=Ri,zi(py=t,dy=n)}function Ri(t,n){var e=t-py,r=n-dy,i=B_(e*e+r*r);Wy+=i*(py+t)/2,Zy+=i*(dy+n)/2,Gy+=i,zi(py=t,dy=n)}function qi(){tg.point=zi}function Ui(){tg.point=Oi}function Di(){Fi(ly,hy)}function Oi(t,n){tg.point=Fi,zi(ly=py=t,hy=dy=n)}function Fi(t,n){var e=t-py,r=n-dy,i=B_(e*e+r*r);Wy+=i*(py+t)/2,Zy+=i*(dy+n)/2,Gy+=i,i=dy*t-py*n,Jy+=i*(py+t),Qy+=i*(dy+n),Ky+=3*i,zi(py=t,dy=n)}function Ii(t){this._context=t}function Yi(t,n){ag.point=Bi,eg=ig=t,rg=og=n}function Bi(t,n){ig-=t,og-=n,ug.add(B_(ig*ig+og*og)),ig=t,og=n}function Hi(){this._string=[]}function ji(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function Xi(t){return t.length>1}function $i(t,n){return((t=t.x)[0]<0?t[1]-S_-k_:S_-t[1])-((n=n.x)[0]<0?n[1]-S_-k_:S_-n[1])}function Vi(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,u){var a=o>0?N_:-N_,c=P_(o-e);P_(c-N_)<k_?(t.point(e,r=(r+u)/2>0?S_:-S_),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),t.point(o,r),n=0):i!==a&&c>=N_&&(P_(e-i)<k_&&(e-=i*k_),P_(o-a)<k_&&(o-=a*k_),r=Wi(e,r,o,u),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(a,r),n=0),t.point(e=o,r=u),i=a},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}function Wi(t,n,e,r){var i,o,u=I_(t-e);return P_(u)>k_?L_((I_(n)*(o=q_(r))*I_(e)-I_(r)*(i=q_(n))*I_(t))/(i*o*u)):(n+r)/2}function Zi(t,n,e,r){var i;if(null==t)i=e*S_,r.point(-N_,i),r.point(0,i),r.point(N_,i),r.point(N_,0),r.point(N_,-i),r.point(0,-i),r.point(-N_,-i),r.point(-N_,0),r.point(-N_,i);else if(P_(t[0]-n[0])>k_){var o=t[0]<n[0]?N_:-N_;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}function Gi(t){return function(n){var e=new Ji;for(var r in t)e[r]=t[r];return e.stream=n,e}}function Ji(){}function Qi(t,n,e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=t.clipExtent&&t.clipExtent();t.scale(150).translate([0,0]),null!=o&&t.clipExtent(null),$_(e,t.stream(jy));var u=jy.result(),a=Math.min(r/(u[1][0]-u[0][0]),i/(u[1][1]-u[0][1])),c=+n[0][0]+(r-a*(u[1][0]+u[0][0]))/2,s=+n[0][1]+(i-a*(u[1][1]+u[0][1]))/2;return null!=o&&t.clipExtent(o),t.scale(150*a).translate([c,s])}function Ki(t,n,e){return Qi(t,[[0,0],n],e)}function to(t){return Gi({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}function no(t,n){function e(r,i,o,u,a,c,s,f,l,h,p,d,v,_){var y=s-r,g=f-i,m=y*y+g*g;if(m>4*n&&v--){var x=u+h,b=a+p,w=c+d,M=B_(x*x+b*b+w*w),T=mr(w/=M),k=P_(P_(w)-1)<k_||P_(o-l)<k_?(o+l)/2:R_(b,x),N=t(k,T),S=N[0],E=N[1],A=S-r,C=E-i,z=g*A-y*C;(z*z/m>n||P_((y*A+g*C)/m-.5)>.3||u*h+a*p+c*d<dg)&&(e(r,i,o,u,a,c,S,E,k,x/=M,b/=M,w,v,_),_.point(S,E),e(S,E,k,x,b,w,s,f,l,h,p,d,v,_))}}return function(n){function r(e,r){e=t(e,r),n.point(e[0],e[1])}function i(){y=NaN,w.point=o,n.lineStart()}function o(r,i){var o=Cr([r,i]),u=t(r,i);e(y,g,_,m,x,b,y=u[0],g=u[1],_=r,m=o[0],x=o[1],b=o[2],pg,n),n.point(y,g)}function u(){w.point=r,n.lineEnd()}function a(){i(),w.point=c,w.lineEnd=s}function c(t,n){o(f=t,n),l=y,h=g,p=m,d=x,v=b,w.point=o}function s(){e(y,g,_,m,x,b,l,h,f,p,d,v,pg,n),w.lineEnd=u,u()}var f,l,h,p,d,v,_,y,g,m,x,b,w={point:r,lineStart:i,lineEnd:u,polygonStart:function(){n.polygonStart(),w.lineStart=a},polygonEnd:function(){n.polygonEnd(),w.lineStart=i}};return w}}function eo(t){return ro(function(){return t})()}function ro(t){function n(t){return t=f(t[0]*z_,t[1]*z_),[t[0]*_+a,c-t[1]*_]}function e(t){return(t=f.invert((t[0]-a)/_,(c-t[1])/_))&&[t[0]*C_,t[1]*C_]}function r(t,n){return t=u(t,n),[t[0]*_+a,c-t[1]*_]}function i(){f=ry(s=ri(b,w,M),u);var t=u(m,x);return a=y-t[0]*_,c=g+t[1]*_,o()}function o(){return d=v=null,n}var u,a,c,s,f,l,h,p,d,v,_=150,y=480,g=250,m=0,x=0,b=0,w=0,M=0,T=null,k=fg,N=null,S=Uy,E=.5,A=vg(r,E);return n.stream=function(t){return d&&v===t?d:d=_g(k(s,A(S(v=t))))},n.clipAngle=function(t){return arguments.length?(k=+t?lg(T=t*z_,6*z_):(T=null,fg),o()):T*C_},n.clipExtent=function(t){return arguments.length?(S=null==t?(N=l=h=p=null,Uy):li(N=+t[0][0],l=+t[0][1],h=+t[1][0],p=+t[1][1]),o()):null==N?null:[[N,l],[h,p]]},n.scale=function(t){return arguments.length?(_=+t,i()):_},n.translate=function(t){return arguments.length?(y=+t[0],g=+t[1],i()):[y,g]},n.center=function(t){return arguments.length?(m=t[0]%360*z_,x=t[1]%360*z_,i()):[m*C_,x*C_]},n.rotate=function(t){return arguments.length?(b=t[0]%360*z_,w=t[1]%360*z_,M=t.length>2?t[2]%360*z_:0,i()):[b*C_,w*C_,M*C_]},n.precision=function(t){return arguments.length?(A=vg(r,E=t*t),o()):B_(E)},n.fitExtent=function(t,e){return Qi(n,t,e)},n.fitSize=function(t,e){return Ki(n,t,e)},function(){return u=t.apply(this,arguments),n.invert=u.invert&&e,i()}}function io(t){var n=0,e=N_/3,r=ro(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*z_,e=t[1]*z_):[n*C_,e*C_]},i}function oo(t){function n(t,n){return[t*e,I_(n)/e]}var e=q_(t);return n.invert=function(t,n){return[t/e,mr(n*e)]},n}function uo(t,n){function e(t,n){var e=B_(o-2*i*I_(n))/i;return[e*I_(t*=i),u-e*q_(t)]}var r=I_(t),i=(r+I_(n))/2;if(P_(i)<k_)return oo(t);var o=1+r*(2*i-r),u=B_(o)/i;return e.invert=function(t,n){var e=u-n;return[R_(t,P_(e))/i*Y_(e),mr((o-(t*t+e*e)*i*i)/(2*i))]},e}function ao(t){var n=t.length;return{point:function(e,r){for(var i=-1;++i<n;)t[i].point(e,r)},sphere:function(){for(var e=-1;++e<n;)t[e].sphere()},lineStart:function(){for(var e=-1;++e<n;)t[e].lineStart()},lineEnd:function(){for(var e=-1;++e<n;)t[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<n;)t[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<n;)t[e].polygonEnd()}}}function co(t){return function(n,e){var r=q_(n),i=q_(e),o=t(r*i);return[o*i*I_(n),o*I_(e)]}}function so(t){return function(n,e){var r=B_(n*n+e*e),i=t(r),o=I_(i),u=q_(i);return[R_(n*o,r*u),mr(r&&e*o/r)]}}function fo(t,n){return[t,O_(H_((S_+n)/2))]}function lo(t){function n(){var n=N_*a(),u=o(vy(o.rotate()).invert([0,0]));return s(null==f?[[u[0]-n,u[1]-n],[u[0]+n,u[1]+n]]:t===fo?[[Math.max(u[0]-n,f),e],[Math.min(u[0]+n,r),i]]:[[f,Math.max(u[1]-n,e)],[r,Math.min(u[1]+n,i)]])}var e,r,i,o=eo(t),u=o.center,a=o.scale,c=o.translate,s=o.clipExtent,f=null;return o.scale=function(t){return arguments.length?(a(t),n()):a()},o.translate=function(t){return arguments.length?(c(t),n()):c()},o.center=function(t){return arguments.length?(u(t),n()):u()},o.clipExtent=function(t){return arguments.length?(null==t?f=e=r=i=null:(f=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),n()):null==f?null:[[f,e],[r,i]]},n()}function ho(t){return H_((S_+t)/2)}function po(t,n){function e(t,n){o>0?n<-S_+k_&&(n=-S_+k_):n>S_-k_&&(n=S_-k_);var e=o/F_(ho(n),i);return[e*I_(i*t),o-e*q_(i*t)]}var r=q_(t),i=t===n?I_(t):O_(r/q_(n))/O_(ho(n)/ho(t)),o=r*F_(ho(t),i)/i;return i?(e.invert=function(t,n){var e=o-n,r=Y_(i)*B_(t*t+e*e);return[R_(t,P_(e))/i*Y_(e),2*L_(F_(o/r,1/i))-S_]},e):fo}function vo(t,n){return[t,n]}function _o(t,n){function e(t,n){var e=o-n,r=i*t;return[e*I_(r),o-e*q_(r)]}var r=q_(t),i=t===n?I_(t):(r-q_(n))/(n-t),o=r/i+t;return P_(i)<k_?vo:(e.invert=function(t,n){var e=o-n;return[R_(t,P_(e))/i*Y_(e),o-Y_(i)*B_(t*t+e*e)]},e)}function yo(t,n){var e=q_(n),r=q_(t)*e;return[e*I_(t)/r,I_(n)/r]}function go(t,n,e,r){return 1===t&&1===n&&0===e&&0===r?Uy:Gi({point:function(i,o){this.stream.point(i*t+e,o*n+r)}})}function mo(t,n){return[q_(n)*I_(t),I_(n)]}function xo(t,n){var e=q_(n),r=1+q_(t)*e;return[e*I_(t)/r,I_(n)/r]}function bo(t,n){return[O_(H_((S_+n)/2)),-t]}function wo(t,n){return t.parent===n.parent?1:2}function Mo(t){return t.reduce(To,0)/t.length}function To(t,n){return t+n.x}function ko(t){return 1+t.reduce(No,0)}function No(t,n){return Math.max(t,n.y)}function So(t){for(var n;n=t.children;)t=n[0];return t}function Eo(t){for(var n;n=t.children;)t=n[n.length-1];return t}function Ao(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Co(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;for(t=e.pop(),n=r.pop();t===n;)i=t,t=e.pop(),n=r.pop();return i}function zo(t,n){var e,r,i,o,u,a=new Uo(t),c=+t.value&&(a.value=t.value),s=[a];for(null==n&&(n=Lo);e=s.pop();)if(c&&(e.value=+e.data.value),(i=n(e.data))&&(u=i.length))for(e.children=new Array(u),o=u-1;o>=0;--o)s.push(r=e.children[o]=new Uo(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(qo)}function Po(){return zo(this).eachBefore(Ro)}function Lo(t){return t.children}function Ro(t){t.data=t.data.data}function qo(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Uo(t){this.data=t,this.depth=this.height=0,this.parent=null}function Do(t){this._=t,this.next=null}function Oo(t,n){var e=n.x-t.x,r=n.y-t.y,i=t.r-n.r;return i*i+1e-6>e*e+r*r}function Fo(t,n){var e,r,i,o=null,u=t.head;switch(n.length){case 1:e=Io(n[0]);break;case 2:e=Yo(n[0],n[1]);break;case 3:e=Bo(n[0],n[1],n[2])}for(;u;)i=u._,r=u.next,e&&Oo(e,i)?o=u:(o?(t.tail=o,o.next=null):t.head=t.tail=null,n.push(i),e=Fo(t,n),n.pop(),t.head?(u.next=t.head,t.head=u):(u.next=null,t.head=t.tail=u),o=t.tail,o.next=r),u=r;return t.tail=o,e}function Io(t){return{x:t.x,y:t.y,r:t.r}}function Yo(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,u=n.y,a=n.r,c=o-e,s=u-r,f=a-i,l=Math.sqrt(c*c+s*s);return{x:(e+o+c/l*f)/2,y:(r+u+s/l*f)/2,r:(l+i+a)/2}}function Bo(t,n,e){var r=t.x,i=t.y,o=t.r,u=n.x,a=n.y,c=n.r,s=e.x,f=e.y,l=e.r,h=2*(r-u),p=2*(i-a),d=2*(c-o),v=r*r+i*i-o*o-u*u-a*a+c*c,_=2*(r-s),y=2*(i-f),g=2*(l-o),m=r*r+i*i-o*o-s*s-f*f+l*l,x=_*p-h*y,b=(p*m-y*v)/x-r,w=(y*d-p*g)/x,M=(_*v-h*m)/x-i,T=(h*g-_*d)/x,k=w*w+T*T-1,N=2*(b*w+M*T+o),S=b*b+M*M-o*o,E=(-N-Math.sqrt(N*N-4*k*S))/(2*k);return{x:b+w*E+r,y:M+T*E+i,r:E}}function Ho(t,n,e){var r=t.x,i=t.y,o=n.r+e.r,u=t.r+e.r,a=n.x-r,c=n.y-i,s=a*a+c*c;if(s){var f=.5+((u*=u)-(o*=o))/(2*s),l=Math.sqrt(Math.max(0,2*o*(u+s)-(u-=s)*u-o*o))/(2*s);e.x=r+f*a+l*c,e.y=i+f*c-l*a}else e.x=r+u,e.y=i}function jo(t,n){var e=n.x-t.x,r=n.y-t.y,i=t.r+n.r;return i*i-1e-6>e*e+r*r}function Xo(t,n,e){var r=t._,i=t.next._,o=r.r+i.r,u=(r.x*i.r+i.x*r.r)/o-n,a=(r.y*i.r+i.y*r.r)/o-e;return u*u+a*a}function $o(t){this._=t,this.next=null,this.previous=null}function Vo(t){if(!(i=t.length))return 0;var n,e,r,i;if(n=t[0],n.x=0,n.y=0,!(i>1))return n.r;if(e=t[1],n.x=-e.r,e.x=n.r,e.y=0,!(i>2))return n.r+e.r;Ho(e,n,r=t[2]);var o,u,a,c,s,f,l,h=n.r*n.r,p=e.r*e.r,d=r.r*r.r,v=h+p+d,_=h*n.x+p*e.x+d*r.x,y=h*n.y+p*e.y+d*r.y;n=new $o(n),e=new $o(e),r=new $o(r),n.next=r.previous=e,e.next=n.previous=r,r.next=e.previous=n;t:for(a=3;a<i;++a){Ho(n._,e._,r=t[a]),r=new $o(r),c=e.next,s=n.previous,f=e._.r,l=n._.r;do{if(f<=l){if(jo(c._,r._)){e=c,n.next=e,e.previous=n,--a;continue t}f+=c._.r,c=c.next}else{if(jo(s._,r._)){n=s,n.next=e,e.previous=n,--a;continue t}l+=s._.r,s=s.previous}}while(c!==s.next);for(r.previous=n,r.next=e,n.next=e.previous=e=r,v+=d=r._.r*r._.r,_+=d*r._.x,y+=d*r._.y,h=Xo(n,o=_/v,u=y/v);(r=r.next)!==e;)(d=Xo(r,o,u))<h&&(n=r,h=d);e=n.next}for(n=[e._],r=e;(r=r.next)!==e;)n.push(r._);for(r=$g(n),a=0;a<i;++a)n=t[a],n.x-=r.x,n.y-=r.y;return r.r}function Wo(t){return null==t?null:Zo(t)}function Zo(t){if("function"!=typeof t)throw new Error;return t}function Go(){return 0}function Jo(t){return Math.sqrt(t.value)}function Qo(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function Ko(t,n){return function(e){if(r=e.children){var r,i,o,u=r.length,a=t(e)*n||0;if(a)for(i=0;i<u;++i)r[i].r+=a;if(o=Vo(r),a)for(i=0;i<u;++i)r[i].r-=a;e.r=o+a}}}function tu(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function nu(t){return t.id}function eu(t){return t.parentId}function ru(t,n){return t.parent===n.parent?1:2}function iu(t){var n=t.children;return n?n[0]:t.t}function ou(t){var n=t.children;return n?n[n.length-1]:t.t}function uu(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function au(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)n=i[o],n.z+=e,n.m+=e,e+=n.s+(r+=n.c)}function cu(t,n,e){return t.a.parent===n.parent?t.a:e}function su(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function fu(t){for(var n,e,r,i,o,u=new su(t,0),a=[u];n=a.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)a.push(e=n.children[i]=new su(r[i],i)),e.parent=n;return(u.parent=new su(null,0)).children=[u],u}function lu(t,n,e,r,i,o){for(var u,a,c,s,f,l,h,p,d,v,_,y=[],g=n.children,m=0,x=0,b=g.length,w=n.value;m<b;){c=i-e,s=o-r;do{f=g[x++].value}while(!f&&x<b);for(l=h=f,v=Math.max(s/c,c/s)/(w*t),_=f*f*v,d=Math.max(h/_,_/l);x<b;++x){if(f+=a=g[x].value,a<l&&(l=a),a>h&&(h=a),_=f*f*v,(p=Math.max(h/_,_/l))>d){f-=a;break}d=p}y.push(u={value:f,dice:c<s,children:g.slice(m,x)}),u.dice?Jg(u,e,r,i,w?r+=s*f/w:o):im(u,e,r,w?e+=c*f/w:i,o),w-=f,m=x}return y}function hu(t,n){return t[0]-n[0]||t[1]-n[1]}function pu(t){for(var n=t.length,e=[0,1],r=2,i=2;i<n;++i){for(;r>1&&pm(t[e[r-2]],t[e[r-1]],t[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function du(t){this._size=t,this._call=this._error=null,this._tasks=[],this._data=[],this._waiting=this._active=this._ended=this._start=0}function vu(t){if(!t._start)try{_u(t)}catch(n){if(t._tasks[t._ended+t._active-1])gu(t,n);else if(!t._data)throw n}}function _u(t){for(;t._start=t._waiting&&t._active<t._size;){var n=t._ended+t._active,e=t._tasks[n],r=e.length-1,i=e[r];e[r]=yu(t,n),--t._waiting,++t._active,e=i.apply(null,e),t._tasks[n]&&(t._tasks[n]=e||gm)}}function yu(t,n){return function(e,r){t._tasks[n]&&(--t._active,++t._ended,t._tasks[n]=null,null==t._error&&(null!=e?gu(t,e):(t._data[n]=r,t._waiting?vu(t):mu(t))))}}function gu(t,n){var e,r=t._tasks.length;for(t._error=n,t._data=void 0,t._waiting=NaN;--r>=0;)if((e=t._tasks[r])&&(t._tasks[r]=null,e.abort))try{e.abort()}catch(n){}t._active=NaN,mu(t)}function mu(t){if(!t._active&&t._call){var n=t._data;t._data=void 0,t._call(t._error,n)}}function xu(t){if(null==t)t=1/0;else if(!((t=+t)>=1))throw new Error("invalid concurrency");return new du(t)}function bu(t){return function(n,e){t(null==n?e:null)}}function wu(t){var n=t.responseType;return n&&"text"!==n?t.response:t.responseText}function Mu(t,n){return function(e){return t(e.responseText,n)}}function Tu(t){function n(n){var o=n+"",u=e.get(o);if(!u){if(i!==Om)return i;e.set(o,u=r.push(n))}return t[(u-1)%t.length]}var e=He(),r=[],i=Om;return t=null==t?[]:Dm.call(t),n.domain=function(t){if(!arguments.length)return r.slice();r=[],e=He();for(var i,o,u=-1,a=t.length;++u<a;)e.has(o=(i=t[u])+"")||e.set(o,r.push(i));return n},n.range=function(e){return arguments.length?(t=Dm.call(e),n):t.slice()},n.unknown=function(t){return arguments.length?(i=t,n):i},n.copy=function(){return Tu().domain(r).range(t).unknown(i)},n}function ku(){function t(){var t=i().length,r=u[1]<u[0],l=u[r-0],h=u[1-r];n=(h-l)/Math.max(1,t-c+2*s),a&&(n=Math.floor(n)),l+=(h-l-n*(t-c))*f,e=n*(1-c),a&&(l=Math.round(l),e=Math.round(e));var p=cf(t).map(function(t){return l+n*t});return o(r?p.reverse():p)}var n,e,r=Tu().unknown(void 0),i=r.domain,o=r.range,u=[0,1],a=!1,c=0,s=0,f=.5;return delete r.unknown,r.domain=function(n){return arguments.length?(i(n),t()):i()},r.range=function(n){return arguments.length?(u=[+n[0],+n[1]],t()):u.slice()},r.rangeRound=function(n){return u=[+n[0],+n[1]],a=!0,t()},r.bandwidth=function(){return e},r.step=function(){return n},r.round=function(n){return arguments.length?(a=!!n,t()):a},r.padding=function(n){return arguments.length?(c=s=Math.max(0,Math.min(1,n)),t()):c},r.paddingInner=function(n){return arguments.length?(c=Math.max(0,Math.min(1,n)),t()):c},r.paddingOuter=function(n){return arguments.length?(s=Math.max(0,Math.min(1,n)),t()):s},r.align=function(n){return arguments.length?(f=Math.max(0,Math.min(1,n)),t()):f},r.copy=function(){return ku().domain(i()).range(u).round(a).paddingInner(c).paddingOuter(s).align(f)},t()}function Nu(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return Nu(n())},t}function Su(){return Nu(ku().paddingInner(1))}function Eu(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:Fm(n)}function Au(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=n?0:t>=e?1:r(t)}}}function Cu(t){return function(n,e){var r=t(n=+n,e=+e);return function(t){return t<=0?n:t>=1?e:r(t)}}}function zu(t,n,e,r){var i=t[0],o=t[1],u=n[0],a=n[1];return o<i?(i=e(o,i),u=r(a,u)):(i=e(i,o),u=r(u,a)),function(t){return u(i(t))}}function Pu(t,n,e,r){var i=Math.min(t.length,n.length)-1,o=new Array(i),u=new Array(i),a=-1;for(t[i]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<i;)o[a]=e(t[a],t[a+1]),u[a]=r(n[a],n[a+1]);return function(n){var e=Vs(t,n,1,i)-1;return u[e](o[e](n))}}function Lu(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp())}function Ru(t,n){function e(){return i=Math.min(a.length,c.length)>2?Pu:zu,o=u=null,r}function r(n){return(o||(o=i(a,c,f?Au(t):t,s)))(+n)}var i,o,u,a=Ym,c=Ym,s=qh,f=!1;return r.invert=function(t){return(u||(u=i(c,a,Eu,f?Cu(n):n)))(+t)},r.domain=function(t){return arguments.length?(a=Um.call(t,Im),e()):a.slice()},r.range=function(t){return arguments.length?(c=Dm.call(t),e()):c.slice()},r.rangeRound=function(t){return c=Dm.call(t),s=Uh,e()},r.clamp=function(t){return arguments.length?(f=!!t,e()):f},r.interpolate=function(t){return arguments.length?(s=t,e()):s},e()}function qu(t){var n=t.domain;return t.ticks=function(t){var e=n();return hf(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){return Bm(n(),t,e)},t.nice=function(e){null==e&&(e=10);var i,o=n(),u=0,a=o.length-1,c=o[u],s=o[a];return s<c&&(i=c,c=s,s=i,i=u,u=a,a=i),i=r(c,s,e),i>0?(c=Math.floor(c/i)*i,s=Math.ceil(s/i)*i,i=r(c,s,e)):i<0&&(c=Math.ceil(c*i)/i,s=Math.floor(s*i)/i,i=r(c,s,e)),i>0?(o[u]=Math.floor(c/i)*i,o[a]=Math.ceil(s/i)*i,n(o)):i<0&&(o[u]=Math.ceil(c*i)/i,o[a]=Math.floor(s*i)/i,n(o)),t},t}function Uu(){var t=Ru(Eu,Ch);return t.copy=function(){return Lu(t,Uu())},qu(t)}function Du(){function t(t){return+t}var n=[0,1];return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=Um.call(e,Im),t):n.slice()},t.copy=function(){return Du().domain(n)},qu(t)}function Ou(t,n){return(n=Math.log(n/t))?function(e){return Math.log(e/t)/n}:Fm(n)}function Fu(t,n){return t<0?function(e){return-Math.pow(-n,e)*Math.pow(-t,1-e)}:function(e){return Math.pow(n,e)*Math.pow(t,1-e)}}function Iu(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Yu(t){return 10===t?Iu:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}function Bu(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}function Hu(t){return function(n){return-t(-n)}}function ju(){function n(){return o=Bu(i),u=Yu(i),r()[0]<0&&(o=Hu(o),u=Hu(u)),e}var e=Ru(Ou,Fu).domain([1,10]),r=e.domain,i=10,o=Bu(10),u=Yu(10);return e.base=function(t){return arguments.length?(i=+t,n()):i},e.domain=function(t){return arguments.length?(r(t),n()):r()},e.ticks=function(t){var n,e=r(),a=e[0],c=e[e.length-1];(n=c<a)&&(h=a,a=c,c=h);var s,f,l,h=o(a),p=o(c),d=null==t?10:+t,v=[];if(!(i%1)&&p-h<d){if(h=Math.round(h)-1,p=Math.round(p)+1,a>0){for(;h<p;++h)for(f=1,s=u(h);f<i;++f)if(!((l=s*f)<a)){if(l>c)break;v.push(l)}}else for(;h<p;++h)for(f=i-1,s=u(h);f>=1;--f)if(!((l=s*f)<a)){if(l>c)break;v.push(l)}}else v=hf(h,p,Math.min(p-h,d)).map(u);return n?v.reverse():v},e.tickFormat=function(n,r){if(null==r&&(r=10===i?".0e":","),"function"!=typeof r&&(r=t.format(r)),n===1/0)return r;null==n&&(n=10);var a=Math.max(1,i*n/e.ticks().length);return function(t){var n=t/u(Math.round(o(t)));return n*i<i-.5&&(n*=i),n<=a?r(t):""}},e.nice=function(){return r(Hm(r(),{floor:function(t){return u(Math.floor(o(t)))},ceil:function(t){return u(Math.ceil(o(t)))}}))},e.copy=function(){return Lu(e,ju().base(i))},e}function Xu(t,n){return t<0?-Math.pow(-t,n):Math.pow(t,n)}function $u(){function t(t,n){return(n=Xu(n,e)-(t=Xu(t,e)))?function(r){return(Xu(r,e)-t)/n}:Fm(n)}function n(t,n){return n=Xu(n,e)-(t=Xu(t,e)),function(r){return Xu(t+n*r,1/e)}}var e=1,r=Ru(t,n),i=r.domain;return r.exponent=function(t){return arguments.length?(e=+t,i(i())):e},r.copy=function(){return Lu(r,$u().exponent(e))},qu(r)}function Vu(){return $u().exponent(.5)}function Wu(){function t(){var t=0,o=Math.max(1,r.length);for(i=new Array(o-1);++t<o;)i[t-1]=vf(e,t/o);return n}function n(t){if(!isNaN(t=+t))return r[Vs(i,t)]}var e=[],r=[],i=[];return n.invertExtent=function(t){var n=r.indexOf(t);return n<0?[NaN,NaN]:[n>0?i[n-1]:e[0],n<i.length?i[n]:e[e.length-1]]},n.domain=function(n){if(!arguments.length)return e.slice();e=[];for(var r,i=0,o=n.length;i<o;++i)null==(r=n[i])||isNaN(r=+r)||e.push(r);return e.sort(js),t()},n.range=function(n){return arguments.length?(r=Dm.call(n),t()):r.slice()},n.quantiles=function(){return i.slice()},n.copy=function(){return Wu().domain(e).range(r)},n}function Zu(){function t(t){if(t<=t)return u[Vs(o,t,0,i)]}function n(){var n=-1;for(o=new Array(i);++n<i;)o[n]=((n+1)*r-(n-i)*e)/(i+1);return t}var e=0,r=1,i=1,o=[.5],u=[0,1];return t.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],n()):[e,r]},t.range=function(t){return arguments.length?(i=(u=Dm.call(t)).length-1,n()):u.slice()},t.invertExtent=function(t){var n=u.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},t.copy=function(){return Zu().domain([e,r]).range(u)},qu(t)}function Gu(){function t(t){if(t<=t)return e[Vs(n,t,0,r)]}var n=[.5],e=[0,1],r=1;return t.domain=function(i){return arguments.length?(n=Dm.call(i),r=Math.min(n.length,e.length-1),t):n.slice()},t.range=function(i){return arguments.length?(e=Dm.call(i),r=Math.min(n.length,e.length-1),t):e.slice()},t.invertExtent=function(t){var r=e.indexOf(t);return[n[r-1],n[r]]},t.copy=function(){return Gu().domain(n).range(e)},t}function Ju(t,n,e,r){function i(n){return t(n=new Date(+n)),n}return i.floor=i,i.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},i.round=function(t){var n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},i.range=function(e,r,o){var u=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return u;do{u.push(new Date(+e))}while(n(e,o),t(e),e<r);return u},i.filter=function(e){return Ju(function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)},function(t,r){if(t>=t)for(;--r>=0;)for(;n(t,1),!e(t););})},e&&(i.count=function(n,r){return jm.setTime(+n),Xm.setTime(+r),t(jm),t(Xm),Math.floor(e(jm,Xm))},i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?function(n){return r(n)%t==0}:function(n){return i.count(0,n)%t==0}):i:null}),i}function Qu(t){return Ju(function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+7*n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Wm)/Zm})}function Ku(t){return Ju(function(n){n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+7*n)},function(t,n){return(n-t)/Zm})}function ta(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function na(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function ea(t){return{y:t,m:0,d:1,H:0,M:0,S:0,L:0}}function ra(t){function n(t,n){return function(e){var r,i,o,u=[],a=-1,c=0,s=t.length;for(e instanceof Date||(e=new Date(+e));++a<s;)37===t.charCodeAt(a)&&(u.push(t.slice(c,a)),null!=(i=Vx[r=t.charAt(++a)])?r=t.charAt(++a):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),
+u.push(r),c=a+1);return u.push(t.slice(c,a)),u.join("")}}function e(t,n){return function(e){var i=ea(1900);if(r(i,t,e+="",0)!=e.length)return null;if("p"in i&&(i.H=i.H%12+12*i.p),"W"in i||"U"in i){"w"in i||(i.w="W"in i?1:0);var o="Z"in i?na(ea(i.y)).getUTCDay():n(ea(i.y)).getDay();i.m=0,i.d="W"in i?(i.w+6)%7+7*i.W-(o+5)%7:i.w+7*i.U-(o+6)%7}return"Z"in i?(i.H+=i.Z/100|0,i.M+=i.Z%100,na(i)):n(i)}}function r(t,n,e,r){for(var i,o,u=0,a=n.length,c=e.length;u<a;){if(r>=c)return-1;if(37===(i=n.charCodeAt(u++))){if(i=n.charAt(u++),!(o=B[i in Vx?n.charAt(u++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function i(t,n,e){var r=C.exec(n.slice(e));return r?(t.p=z[r[0].toLowerCase()],e+r[0].length):-1}function o(t,n,e){var r=R.exec(n.slice(e));return r?(t.w=q[r[0].toLowerCase()],e+r[0].length):-1}function u(t,n,e){var r=P.exec(n.slice(e));return r?(t.w=L[r[0].toLowerCase()],e+r[0].length):-1}function a(t,n,e){var r=O.exec(n.slice(e));return r?(t.m=F[r[0].toLowerCase()],e+r[0].length):-1}function c(t,n,e){var r=U.exec(n.slice(e));return r?(t.m=D[r[0].toLowerCase()],e+r[0].length):-1}function s(t,n,e){return r(t,w,n,e)}function f(t,n,e){return r(t,M,n,e)}function l(t,n,e){return r(t,T,n,e)}function h(t){return S[t.getDay()]}function p(t){return N[t.getDay()]}function d(t){return A[t.getMonth()]}function v(t){return E[t.getMonth()]}function _(t){return k[+(t.getHours()>=12)]}function y(t){return S[t.getUTCDay()]}function g(t){return N[t.getUTCDay()]}function m(t){return A[t.getUTCMonth()]}function x(t){return E[t.getUTCMonth()]}function b(t){return k[+(t.getUTCHours()>=12)]}var w=t.dateTime,M=t.date,T=t.time,k=t.periods,N=t.days,S=t.shortDays,E=t.months,A=t.shortMonths,C=ua(k),z=aa(k),P=ua(N),L=aa(N),R=ua(S),q=aa(S),U=ua(E),D=aa(E),O=ua(A),F=aa(A),I={a:h,A:p,b:d,B:v,c:null,d:wa,e:wa,H:Ma,I:Ta,j:ka,L:Na,m:Sa,M:Ea,p:_,S:Aa,U:Ca,w:za,W:Pa,x:null,X:null,y:La,Y:Ra,Z:qa,"%":Ga},Y={a:y,A:g,b:m,B:x,c:null,d:Ua,e:Ua,H:Da,I:Oa,j:Fa,L:Ia,m:Ya,M:Ba,p:b,S:Ha,U:ja,w:Xa,W:$a,x:null,X:null,y:Va,Y:Wa,Z:Za,"%":Ga},B={a:o,A:u,b:a,B:c,c:s,d:va,e:va,H:ya,I:ya,j:_a,L:xa,m:da,M:ga,p:i,S:ma,U:sa,w:ca,W:fa,x:f,X:l,y:ha,Y:la,Z:pa,"%":ba};return I.x=n(M,I),I.X=n(T,I),I.c=n(w,I),Y.x=n(M,Y),Y.X=n(T,Y),Y.c=n(w,Y),{format:function(t){var e=n(t+="",I);return e.toString=function(){return t},e},parse:function(t){var n=e(t+="",ta);return n.toString=function(){return t},n},utcFormat:function(t){var e=n(t+="",Y);return e.toString=function(){return t},e},utcParse:function(t){var n=e(t,na);return n.toString=function(){return t},n}}}function ia(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function oa(t){return t.replace(Gx,"\\$&")}function ua(t){return new RegExp("^(?:"+t.map(oa).join("|")+")","i")}function aa(t){for(var n={},e=-1,r=t.length;++e<r;)n[t[e].toLowerCase()]=e;return n}function ca(t,n,e){var r=Wx.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function sa(t,n,e){var r=Wx.exec(n.slice(e));return r?(t.U=+r[0],e+r[0].length):-1}function fa(t,n,e){var r=Wx.exec(n.slice(e));return r?(t.W=+r[0],e+r[0].length):-1}function la(t,n,e){var r=Wx.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function ha(t,n,e){var r=Wx.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function pa(t,n,e){var r=/^(Z)|([+-]\d\d)(?:\:?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function da(t,n,e){var r=Wx.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function va(t,n,e){var r=Wx.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function _a(t,n,e){var r=Wx.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function ya(t,n,e){var r=Wx.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function ga(t,n,e){var r=Wx.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function ma(t,n,e){var r=Wx.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function xa(t,n,e){var r=Wx.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function ba(t,n,e){var r=Zx.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function wa(t,n){return ia(t.getDate(),n,2)}function Ma(t,n){return ia(t.getHours(),n,2)}function Ta(t,n){return ia(t.getHours()%12||12,n,2)}function ka(t,n){return ia(1+ex.count(xx(t),t),n,3)}function Na(t,n){return ia(t.getMilliseconds(),n,3)}function Sa(t,n){return ia(t.getMonth()+1,n,2)}function Ea(t,n){return ia(t.getMinutes(),n,2)}function Aa(t,n){return ia(t.getSeconds(),n,2)}function Ca(t,n){return ia(ix.count(xx(t),t),n,2)}function za(t){return t.getDay()}function Pa(t,n){return ia(ox.count(xx(t),t),n,2)}function La(t,n){return ia(t.getFullYear()%100,n,2)}function Ra(t,n){return ia(t.getFullYear()%1e4,n,4)}function qa(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+ia(n/60|0,"0",2)+ia(n%60,"0",2)}function Ua(t,n){return ia(t.getUTCDate(),n,2)}function Da(t,n){return ia(t.getUTCHours(),n,2)}function Oa(t,n){return ia(t.getUTCHours()%12||12,n,2)}function Fa(t,n){return ia(1+Nx.count(jx(t),t),n,3)}function Ia(t,n){return ia(t.getUTCMilliseconds(),n,3)}function Ya(t,n){return ia(t.getUTCMonth()+1,n,2)}function Ba(t,n){return ia(t.getUTCMinutes(),n,2)}function Ha(t,n){return ia(t.getUTCSeconds(),n,2)}function ja(t,n){return ia(Ex.count(jx(t),t),n,2)}function Xa(t){return t.getUTCDay()}function $a(t,n){return ia(Ax.count(jx(t),t),n,2)}function Va(t,n){return ia(t.getUTCFullYear()%100,n,2)}function Wa(t,n){return ia(t.getUTCFullYear()%1e4,n,4)}function Za(){return"+0000"}function Ga(){return"%"}function Ja(n){return Xx=ra(n),t.timeFormat=Xx.format,t.timeParse=Xx.parse,t.utcFormat=Xx.utcFormat,t.utcParse=Xx.utcParse,Xx}function Qa(t){return t.toISOString()}function Ka(t){var n=new Date(t);return isNaN(n)?null:n}function tc(t){return new Date(t)}function nc(t){return t instanceof Date?+t:+new Date(+t)}function ec(t,n,e,r,o,u,a,c,s){function f(i){return(a(i)<i?v:u(i)<i?_:o(i)<i?y:r(i)<i?g:n(i)<i?e(i)<i?m:x:t(i)<i?b:w)(i)}function l(n,e,r,o){if(null==n&&(n=10),"number"==typeof n){var u=Math.abs(r-e)/n,a=Xs(function(t){return t[2]}).right(M,u);a===M.length?(o=i(e/ob,r/ob,n),n=t):a?(a=M[u/M[a-1][2]<M[a][2]/u?a-1:a],o=a[1],n=a[0]):(o=i(e,r,n),n=c)}return null==o?n:n.every(o)}var h=Ru(Eu,Ch),p=h.invert,d=h.domain,v=s(".%L"),_=s(":%S"),y=s("%I:%M"),g=s("%I %p"),m=s("%a %d"),x=s("%b %d"),b=s("%B"),w=s("%Y"),M=[[a,1,Kx],[a,5,5*Kx],[a,15,15*Kx],[a,30,30*Kx],[u,1,tb],[u,5,5*tb],[u,15,15*tb],[u,30,30*tb],[o,1,nb],[o,3,3*nb],[o,6,6*nb],[o,12,12*nb],[r,1,eb],[r,2,2*eb],[e,1,rb],[n,1,ib],[n,3,3*ib],[t,1,ob]];return h.invert=function(t){return new Date(p(t))},h.domain=function(t){return arguments.length?d(Um.call(t,nc)):d().map(tc)},h.ticks=function(t,n){var e,r=d(),i=r[0],o=r[r.length-1],u=o<i;return u&&(e=i,i=o,o=e),e=l(t,i,o,n),e=e?e.range(i,o+1):[],u?e.reverse():e},h.tickFormat=function(t,n){return null==n?f:s(n)},h.nice=function(t,n){var e=d();return(t=l(t,e[0],e[e.length-1],n))?d(Hm(e,t)):h},h.copy=function(){return Lu(h,ec(t,n,e,r,o,u,a,c,s))},h}function rc(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}function ic(t){function n(n){var o=(n-e)/(r-e);return t(i?Math.max(0,Math.min(1,o)):o)}var e=0,r=1,i=!1;return n.domain=function(t){return arguments.length?(e=+t[0],r=+t[1],n):[e,r]},n.clamp=function(t){return arguments.length?(i=!!t,n):i},n.interpolator=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return ic(t).domain([e,r]).clamp(i)},qu(n)}function oc(t){return t>1?0:t<-1?zb:Math.acos(t)}function uc(t){return t>=1?Pb:t<=-1?-Pb:Math.asin(t)}function ac(t){return t.innerRadius}function cc(t){return t.outerRadius}function sc(t){return t.startAngle}function fc(t){return t.endAngle}function lc(t){return t&&t.padAngle}function hc(t,n,e,r,i,o,u,a){var c=e-t,s=r-n,f=u-i,l=a-o,h=(f*(n-o)-l*(t-i))/(l*c-f*s);return[t+h*c,n+h*s]}function pc(t,n,e,r,i,o,u){var a=t-e,c=n-r,s=(u?o:-o)/Ab(a*a+c*c),f=s*c,l=-s*a,h=t+f,p=n+l,d=e+f,v=r+l,_=(h+d)/2,y=(p+v)/2,g=d-h,m=v-p,x=g*g+m*m,b=i-o,w=h*v-d*p,M=(m<0?-1:1)*Ab(Nb(0,b*b*x-w*w)),T=(w*m-g*M)/x,k=(-w*g-m*M)/x,N=(w*m+g*M)/x,S=(-w*g+m*M)/x,E=T-_,A=k-y,C=N-_,z=S-y;return E*E+A*A>C*C+z*z&&(T=N,k=S),{cx:T,cy:k,x01:-f,y01:-l,x11:T*(i/b-1),y11:k*(i/b-1)}}function dc(t){this._context=t}function vc(t){return t[0]}function _c(t){return t[1]}function yc(t){this._curve=t}function gc(t){function n(n){return new yc(t(n))}return n._curve=t,n}function mc(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(gc(t)):n()._curve},t}function xc(t){return t.source}function bc(t){return t.target}function wc(t){function n(){var n,a=jb.call(arguments),c=e.apply(this,a),s=r.apply(this,a);if(u||(u=n=Ue()),t(u,+i.apply(this,(a[0]=c,a)),+o.apply(this,a),+i.apply(this,(a[0]=s,a)),+o.apply(this,a)),n)return u=null,n+""||null}var e=xc,r=bc,i=vc,o=_c,u=null;return n.source=function(t){return arguments.length?(e=t,n):e},n.target=function(t){return arguments.length?(r=t,n):r},n.x=function(t){return arguments.length?(i="function"==typeof t?t:wb(+t),n):i},n.y=function(t){return arguments.length?(o="function"==typeof t?t:wb(+t),n):o},n.context=function(t){return arguments.length?(u=null==t?null:t,n):u},n}function Mc(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n=(n+r)/2,e,n,i,r,i)}function Tc(t,n,e,r,i){t.moveTo(n,e),t.bezierCurveTo(n,e=(e+i)/2,r,e,r,i)}function kc(t,n,e,r,i){var o=Xb(n,e),u=Xb(n,e=(e+i)/2),a=Xb(r,e),c=Xb(r,i);t.moveTo(o[0],o[1]),t.bezierCurveTo(u[0],u[1],a[0],a[1],c[0],c[1])}function Nc(){return wc(Mc)}function Sc(){return wc(Tc)}function Ec(){var t=wc(kc);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t}function Ac(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Cc(t){this._context=t}function zc(t){this._context=t}function Pc(t){this._context=t}function Lc(t,n){this._basis=new Cc(t),this._beta=n}function Rc(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function qc(t,n){this._context=t,this._k=(1-n)/6}function Uc(t,n){this._context=t,this._k=(1-n)/6}function Dc(t,n){this._context=t,this._k=(1-n)/6}function Oc(t,n,e){var r=t._x1,i=t._y1,o=t._x2,u=t._y2;if(t._l01_a>Cb){var a=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*a-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*a-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Cb){var s=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,f=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*s+t._x1*t._l23_2a-n*t._l12_2a)/f,u=(u*s+t._y1*t._l23_2a-e*t._l12_2a)/f}t._context.bezierCurveTo(r,i,o,u,t._x2,t._y2)}function Fc(t,n){this._context=t,this._alpha=n}function Ic(t,n){this._context=t,this._alpha=n}function Yc(t,n){this._context=t,this._alpha=n}function Bc(t){this._context=t}function Hc(t){return t<0?-1:1}function jc(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),u=(e-t._y1)/(i||r<0&&-0),a=(o*i+u*r)/(r+i);return(Hc(o)+Hc(u))*Math.min(Math.abs(o),Math.abs(u),.5*Math.abs(a))||0}function Xc(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function $c(t,n,e){var r=t._x0,i=t._y0,o=t._x1,u=t._y1,a=(o-r)/3;t._context.bezierCurveTo(r+a,i+a*n,o-a,u-a*e,o,u)}function Vc(t){this._context=t}function Wc(t){this._context=new Zc(t)}function Zc(t){this._context=t}function Gc(t){return new Vc(t)}function Jc(t){return new Wc(t)}function Qc(t){this._context=t}function Kc(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),u=new Array(r);for(i[0]=0,o[0]=2,u[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,u[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,u[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,u[n]-=e*u[n-1];for(i[r-1]=u[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(u[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function ts(t,n){this._context=t,this._t=n}function ns(t){return new ts(t,0)}function es(t){return new ts(t,1)}function rs(t,n){return t[n]}function is(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}function os(t){return t[0]}function us(t){return t[1]}function as(){this._=null}function cs(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function ss(t,n){var e=n,r=n.R,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function fs(t,n){var e=n,r=n.L,i=e.U;i?i.L===e?i.L=r:i.R=r:t._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function ls(t){for(;t.L;)t=t.L;return t}function hs(t,n,e,r){var i=[null,null],o=Yw.push(i)-1;return i.left=t,i.right=n,e&&ds(i,t,n,e),r&&ds(i,n,t,r),Fw[t.index].halfedges.push(o),Fw[n.index].halfedges.push(o),i}function ps(t,n,e){var r=[n,e];return r.left=t,r}function ds(t,n,e,r){t[0]||t[1]?t.left===e?t[1]=r:t[0]=r:(t[0]=r,t.left=n,t.right=e)}function vs(t,n,e,r,i){var o,u=t[0],a=t[1],c=u[0],s=u[1],f=a[0],l=a[1],h=0,p=1,d=f-c,v=l-s;if(o=n-c,d||!(o>0)){if(o/=d,d<0){if(o<h)return;o<p&&(p=o)}else if(d>0){if(o>p)return;o>h&&(h=o)}if(o=r-c,d||!(o<0)){if(o/=d,d<0){if(o>p)return;o>h&&(h=o)}else if(d>0){if(o<h)return;o<p&&(p=o)}if(o=e-s,v||!(o>0)){if(o/=v,v<0){if(o<h)return;o<p&&(p=o)}else if(v>0){if(o>p)return;o>h&&(h=o)}if(o=i-s,v||!(o<0)){if(o/=v,v<0){if(o>p)return;o>h&&(h=o)}else if(v>0){if(o<h)return;o<p&&(p=o)}return!(h>0||p<1)||(h>0&&(t[0]=[c+h*d,s+h*v]),p<1&&(t[1]=[c+p*d,s+p*v]),!0)}}}}}function _s(t,n,e,r,i){var o=t[1];if(o)return!0;var u,a,c=t[0],s=t.left,f=t.right,l=s[0],h=s[1],p=f[0],d=f[1],v=(l+p)/2,_=(h+d)/2;if(d===h){if(v<n||v>=r)return;if(l>p){if(c){if(c[1]>=i)return}else c=[v,e];o=[v,i]}else{if(c){if(c[1]<e)return}else c=[v,i];o=[v,e]}}else if(u=(l-p)/(d-h),a=_-u*v,u<-1||u>1)if(l>p){if(c){if(c[1]>=i)return}else c=[(e-a)/u,e];o=[(i-a)/u,i]}else{if(c){if(c[1]<e)return}else c=[(i-a)/u,i];o=[(e-a)/u,e]}else if(h<d){if(c){if(c[0]>=r)return}else c=[n,u*n+a];o=[r,u*r+a]}else{if(c){if(c[0]<n)return}else c=[r,u*r+a];o=[n,u*n+a]}return t[0]=c,t[1]=o,!0}function ys(t,n,e,r){for(var i,o=Yw.length;o--;)_s(i=Yw[o],t,n,e,r)&&vs(i,t,n,e,r)&&(Math.abs(i[0][0]-i[1][0])>jw||Math.abs(i[0][1]-i[1][1])>jw)||delete Yw[o]}function gs(t){return Fw[t.index]={site:t,halfedges:[]}}function ms(t,n){var e=t.site,r=n.left,i=n.right;return e===i&&(i=r,r=e),i?Math.atan2(i[1]-r[1],i[0]-r[0]):(e===r?(r=n[1],i=n[0]):(r=n[0],i=n[1]),Math.atan2(r[0]-i[0],i[1]-r[1]))}function xs(t,n){return n[+(n.left!==t.site)]}function bs(t,n){return n[+(n.left===t.site)]}function ws(){for(var t,n,e,r,i=0,o=Fw.length;i<o;++i)if((t=Fw[i])&&(r=(n=t.halfedges).length)){var u=new Array(r),a=new Array(r);for(e=0;e<r;++e)u[e]=e,a[e]=ms(t,Yw[n[e]]);for(u.sort(function(t,n){return a[n]-a[t]}),e=0;e<r;++e)a[e]=n[u[e]];for(e=0;e<r;++e)n[e]=a[e]}}function Ms(t,n,e,r){var i,o,u,a,c,s,f,l,h,p,d,v,_=Fw.length,y=!0;for(i=0;i<_;++i)if(o=Fw[i]){for(u=o.site,c=o.halfedges,a=c.length;a--;)Yw[c[a]]||c.splice(a,1);for(a=0,s=c.length;a<s;)p=bs(o,Yw[c[a]]),d=p[0],v=p[1],f=xs(o,Yw[c[++a%s]]),l=f[0],h=f[1],(Math.abs(d-l)>jw||Math.abs(v-h)>jw)&&(c.splice(a,0,Yw.push(ps(u,p,Math.abs(d-t)<jw&&r-v>jw?[t,Math.abs(l-t)<jw?h:r]:Math.abs(v-r)<jw&&e-d>jw?[Math.abs(h-r)<jw?l:e,r]:Math.abs(d-e)<jw&&v-n>jw?[e,Math.abs(l-e)<jw?h:n]:Math.abs(v-n)<jw&&d-t>jw?[Math.abs(h-n)<jw?l:t,n]:null))-1),++s);s&&(y=!1)}if(y){var g,m,x,b=1/0;for(i=0,y=null;i<_;++i)(o=Fw[i])&&(u=o.site,g=u[0]-t,m=u[1]-n,(x=g*g+m*m)<b&&(b=x,y=o));if(y){var w=[t,n],M=[t,r],T=[e,r],k=[e,n];y.halfedges.push(Yw.push(ps(u=y.site,w,M))-1,Yw.push(ps(u,M,T))-1,Yw.push(ps(u,T,k))-1,Yw.push(ps(u,k,w))-1)}}for(i=0;i<_;++i)(o=Fw[i])&&(o.halfedges.length||delete Fw[i])}function Ts(){cs(this),this.x=this.y=this.arc=this.site=this.cy=null}function ks(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,i=t.site,o=e.site;if(r!==o){var u=i[0],a=i[1],c=r[0]-u,s=r[1]-a,f=o[0]-u,l=o[1]-a,h=2*(c*l-s*f);if(!(h>=-Xw)){var p=c*c+s*s,d=f*f+l*l,v=(l*p-s*d)/h,_=(c*d-f*p)/h,y=Bw.pop()||new Ts;y.arc=t,y.site=i,y.x=v+u,y.y=(y.cy=_+a)+Math.sqrt(v*v+_*_),t.circle=y;for(var g=null,m=Iw._;m;)if(y.y<m.y||y.y===m.y&&y.x<=m.x){if(!m.L){g=m.P;break}m=m.L}else{if(!m.R){g=m;break}m=m.R}Iw.insert(g,y),g||(Dw=y)}}}}function Ns(t){var n=t.circle;n&&(n.P||(Dw=n.N),Iw.remove(n),Bw.push(n),cs(n),t.circle=null)}function Ss(){cs(this),this.edge=this.site=this.circle=null}function Es(t){var n=Hw.pop()||new Ss;return n.site=t,n}function As(t){Ns(t),Ow.remove(t),Hw.push(t),cs(t)}function Cs(t){var n=t.circle,e=n.x,r=n.cy,i=[e,r],o=t.P,u=t.N,a=[t];As(t);for(var c=o;c.circle&&Math.abs(e-c.circle.x)<jw&&Math.abs(r-c.circle.cy)<jw;)o=c.P,a.unshift(c),As(c),c=o;a.unshift(c),Ns(c);for(var s=u;s.circle&&Math.abs(e-s.circle.x)<jw&&Math.abs(r-s.circle.cy)<jw;)u=s.N,a.push(s),As(s),s=u;a.push(s),Ns(s);var f,l=a.length;for(f=1;f<l;++f)s=a[f],c=a[f-1],ds(s.edge,c.site,s.site,i);c=a[0],s=a[l-1],s.edge=hs(c.site,s.site,null,i),ks(c),ks(s)}function zs(t){for(var n,e,r,i,o=t[0],u=t[1],a=Ow._;a;)if((r=Ps(a,u)-o)>jw)a=a.L;else{if(!((i=o-Ls(a,u))>jw)){r>-jw?(n=a.P,e=a):i>-jw?(n=a,e=a.N):n=e=a;break}if(!a.R){n=a;break}a=a.R}gs(t);var c=Es(t);if(Ow.insert(n,c),n||e){if(n===e)return Ns(n),e=Es(n.site),Ow.insert(c,e),c.edge=e.edge=hs(n.site,c.site),ks(n),void ks(e);if(!e)return void(c.edge=hs(n.site,c.site));Ns(n),Ns(e);var s=n.site,f=s[0],l=s[1],h=t[0]-f,p=t[1]-l,d=e.site,v=d[0]-f,_=d[1]-l,y=2*(h*_-p*v),g=h*h+p*p,m=v*v+_*_,x=[(_*g-p*m)/y+f,(h*m-v*g)/y+l];ds(e.edge,s,d,x),c.edge=hs(s,t,null,x),e.edge=hs(t,d,null,x),ks(n),ks(e)}}function Ps(t,n){var e=t.site,r=e[0],i=e[1],o=i-n;if(!o)return r;var u=t.P;if(!u)return-1/0;e=u.site;var a=e[0],c=e[1],s=c-n;if(!s)return a;var f=a-r,l=1/o-1/s,h=f/s;return l?(-h+Math.sqrt(h*h-2*l*(f*f/(-2*s)-c+s/2+i-o/2)))/l+r:(r+a)/2}function Ls(t,n){var e=t.N;if(e)return Ps(e,n);var r=t.site;return r[1]===n?r[0]:1/0}function Rs(t,n,e){return(t[0]-e[0])*(n[1]-t[1])-(t[0]-n[0])*(e[1]-t[1])}function qs(t,n){return n[1]-t[1]||n[0]-t[0]}function Us(t,n){var e,r,i,o=t.sort(qs).pop();for(Yw=[],Fw=new Array(t.length),Ow=new as,Iw=new as;;)if(i=Dw,o&&(!i||o[1]<i.y||o[1]===i.y&&o[0]<i.x))o[0]===e&&o[1]===r||(zs(o),e=o[0],r=o[1]),o=t.pop();else{if(!i)break;Cs(i.arc)}if(ws(),n){var u=+n[0][0],a=+n[0][1],c=+n[1][0],s=+n[1][1];ys(u,a,c,s),Ms(u,a,c,s)}this.edges=Yw,this.cells=Fw,Ow=Iw=Yw=Fw=null}function Ds(t,n,e){this.target=t,this.type=n,this.transform=e}function Os(t,n,e){this.k=t,this.x=n,this.y=e}function Fs(t){return t.__zoom||Ww}function Is(){t.event.stopImmediatePropagation()}function Ys(){return!t.event.button}function Bs(){var t,n,e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,t=e.width.baseVal.value,n=e.height.baseVal.value):(t=e.clientWidth,n=e.clientHeight),[[0,0],[t,n]]}function Hs(){return this.__zoom||Ww}var js=function(t,n){return t<n?-1:t>n?1:t>=n?0:NaN},Xs=function(t){return 1===t.length&&(t=n(t)),{left:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)<0?r=o+1:i=o}return r},right:function(n,e,r,i){for(null==r&&(r=0),null==i&&(i=n.length);r<i;){var o=r+i>>>1;t(n[o],e)>0?i=o:r=o+1}return r}}},$s=Xs(js),Vs=$s.right,Ws=$s.left,Zs=function(t,n){null==n&&(n=e);for(var r=0,i=t.length-1,o=t[0],u=new Array(i<0?0:i);r<i;)u[r]=n(o,o=t[++r]);return u},Gs=function(t,n,r){var i,o,u,a,c=t.length,s=n.length,f=new Array(c*s);for(null==r&&(r=e),i=u=0;i<c;++i)for(a=t[i],o=0;o<s;++o,++u)f[u]=r(a,n[o]);return f},Js=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN},Qs=function(t){return null===t?NaN:+t},Ks=function(t,n){var e,r,i=t.length,o=0,u=-1,a=0,c=0;if(null==n)for(;++u<i;)isNaN(e=Qs(t[u]))||(r=e-a,a+=r/++o,c+=r*(e-a));else for(;++u<i;)isNaN(e=Qs(n(t[u],u,t)))||(r=e-a,a+=r/++o,c+=r*(e-a));if(o>1)return c/(o-1)},tf=function(t,n){var e=Ks(t,n);return e?Math.sqrt(e):e},nf=function(t,n){var e,r,i,o=t.length,u=-1;if(null==n){for(;++u<o;)if(null!=(e=t[u])&&e>=e)for(r=i=e;++u<o;)null!=(e=t[u])&&(r>e&&(r=e),i<e&&(i=e))}else for(;++u<o;)if(null!=(e=n(t[u],u,t))&&e>=e)for(r=i=e;++u<o;)null!=(e=n(t[u],u,t))&&(r>e&&(r=e),i<e&&(i=e));return[r,i]},ef=Array.prototype,rf=ef.slice,of=ef.map,uf=function(t){return function(){return t}},af=function(t){return t},cf=function(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o},sf=Math.sqrt(50),ff=Math.sqrt(10),lf=Math.sqrt(2),hf=function(t,n,e){var i,o,u,a=n<t,c=-1;if(a&&(i=t,t=n,n=i),0===(u=r(t,n,e))||!isFinite(u))return[];if(u>0)for(t=Math.ceil(t/u),n=Math.floor(n/u),o=new Array(i=Math.ceil(n-t+1));++c<i;)o[c]=(t+c)*u;else for(t=Math.floor(t*u),n=Math.ceil(n*u),o=new Array(i=Math.ceil(t-n+1));++c<i;)o[c]=(t-c)/u;return a&&o.reverse(),o},pf=function(t){return Math.ceil(Math.log(t.length)/Math.LN2)+1},df=function(){function t(t){var o,u,a=t.length,c=new Array(a);for(o=0;o<a;++o)c[o]=n(t[o],o,t);var s=e(c),f=s[0],l=s[1],h=r(c,f,l);Array.isArray(h)||(h=i(f,l,h),h=cf(Math.ceil(f/h)*h,Math.floor(l/h)*h,h));for(var p=h.length;h[0]<=f;)h.shift(),--p;for(;h[p-1]>l;)h.pop(),--p;var d,v=new Array(p+1);for(o=0;o<=p;++o)d=v[o]=[],d.x0=o>0?h[o-1]:f,d.x1=o<p?h[o]:l;for(o=0;o<a;++o)u=c[o],f<=u&&u<=l&&v[Vs(h,u,0,p)].push(t[o]);return v}var n=af,e=nf,r=pf;return t.value=function(e){return arguments.length?(n="function"==typeof e?e:uf(e),t):n},t.domain=function(n){return arguments.length?(e="function"==typeof n?n:uf([n[0],n[1]]),t):e},t.thresholds=function(n){return arguments.length?(r="function"==typeof n?n:uf(Array.isArray(n)?rf.call(n):n),t):r},t},vf=function(t,n,e){if(null==e&&(e=Qs),r=t.length){if((n=+n)<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,o=Math.floor(i),u=+e(t[o],o,t);return u+(+e(t[o+1],o+1,t)-u)*(i-o)}},_f=function(t,n,e){return t=of.call(t,Qs).sort(js),Math.ceil((e-n)/(2*(vf(t,.75)-vf(t,.25))*Math.pow(t.length,-1/3)))},yf=function(t,n,e){return Math.ceil((e-n)/(3.5*tf(t)*Math.pow(t.length,-1/3)))},gf=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&e>r&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&e>r&&(r=e);return r},mf=function(t,n){var e,r=t.length,i=r,o=-1,u=0;if(null==n)for(;++o<r;)isNaN(e=Qs(t[o]))?--i:u+=e;else for(;++o<r;)isNaN(e=Qs(n(t[o],o,t)))?--i:u+=e;if(i)return u/i},xf=function(t,n){var e,r=t.length,i=-1,o=[];if(null==n)for(;++i<r;)isNaN(e=Qs(t[i]))||o.push(e);else for(;++i<r;)isNaN(e=Qs(n(t[i],i,t)))||o.push(e);return vf(o.sort(js),.5)},bf=function(t){for(var n,e,r,i=t.length,o=-1,u=0;++o<i;)u+=t[o].length;for(e=new Array(u);--i>=0;)for(r=t[i],n=r.length;--n>=0;)e[--u]=r[n];return e},wf=function(t,n){var e,r,i=t.length,o=-1;if(null==n){for(;++o<i;)if(null!=(e=t[o])&&e>=e)for(r=e;++o<i;)null!=(e=t[o])&&r>e&&(r=e)}else for(;++o<i;)if(null!=(e=n(t[o],o,t))&&e>=e)for(r=e;++o<i;)null!=(e=n(t[o],o,t))&&r>e&&(r=e);return r},Mf=function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r},Tf=function(t,n){if(e=t.length){var e,r,i=0,o=0,u=t[o];for(null==n&&(n=js);++i<e;)(n(r=t[i],u)<0||0!==n(u,u))&&(u=r,o=i);return 0===n(u,u)?o:void 0}},kf=function(t,n,e){for(var r,i,o=(null==e?t.length:e)-(n=null==n?0:+n);o;)i=Math.random()*o--|0,r=t[o+n],t[o+n]=t[i+n],t[i+n]=r;return t},Nf=function(t,n){var e,r=t.length,i=-1,o=0;if(null==n)for(;++i<r;)(e=+t[i])&&(o+=e);else for(;++i<r;)(e=+n(t[i],i,t))&&(o+=e);return o},Sf=function(t){if(!(i=t.length))return[];for(var n=-1,e=wf(t,o),r=new Array(e);++n<e;)for(var i,u=-1,a=r[n]=new Array(i);++u<i;)a[u]=t[u][n];return r},Ef=function(){return Sf(arguments)},Af=Array.prototype.slice,Cf=function(t){return t},zf=1,Pf=2,Lf=3,Rf=4,qf=1e-6,Uf={value:function(){}};_.prototype=v.prototype={constructor:_,on:function(t,n){var e,r=this._,i=y(t+"",r),o=-1,u=i.length;{if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=m(r[e],t.name,n);else if(null==n)for(e in r)r[e]=m(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=g(r[e],t.name)))return e}},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new _(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(r=this._[t],o=0,e=r.length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var Df="http://www.w3.org/1999/xhtml",Of={svg:"http://www.w3.org/2000/svg",xhtml:Df,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},Ff=function(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Of.hasOwnProperty(n)?{space:Of[n],local:t}:t},If=function(t){var n=Ff(t);return(n.local?b:x)(n)},Yf=0;M.prototype=w.prototype={constructor:M,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};var Bf=function(t){return function(){return this.matches(t)}};if("undefined"!=typeof document){var Hf=document.documentElement;if(!Hf.matches){var jf=Hf.webkitMatchesSelector||Hf.msMatchesSelector||Hf.mozMatchesSelector||Hf.oMatchesSelector;Bf=function(t){return function(){return jf.call(this,t)}}}}var Xf=Bf,$f={};if(t.event=null,"undefined"!=typeof document){"onmouseenter"in document.documentElement||($f={mouseenter:"mouseover",mouseleave:"mouseout"})}var Vf=function(t,n,e){var r,i,o=N(t+""),u=o.length;{if(!(arguments.length<2)){for(a=n?E:S,null==e&&(e=!1),r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var c,s=0,f=a.length;s<f;++s)for(r=0,c=a[s];r<u;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value}},Wf=function(){for(var n,e=t.event;n=e.sourceEvent;)e=n;return e},Zf=function(t,n){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=n.clientX,r.y=n.clientY,r=r.matrixTransform(t.getScreenCTM().inverse()),[r.x,r.y]}var i=t.getBoundingClientRect();return[n.clientX-i.left-t.clientLeft,n.clientY-i.top-t.clientTop]},Gf=function(t){var n=Wf();return n.changedTouches&&(n=n.changedTouches[0]),Zf(t,n)},Jf=function(t){return null==t?C:function(){return this.querySelector(t)}},Qf=function(t){"function"!=typeof t&&(t=Jf(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u,a=n[i],c=a.length,s=r[i]=new Array(c),f=0;f<c;++f)(o=a[f])&&(u=t.call(o,o.__data__,f,a))&&("__data__"in o&&(u.__data__=o.__data__),s[f]=u);return new _t(r,this._parents)},Kf=function(t){return null==t?z:function(){return this.querySelectorAll(t)}},tl=function(t){"function"!=typeof t&&(t=Kf(t));for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var u,a=n[o],c=a.length,s=0;s<c;++s)(u=a[s])&&(r.push(t.call(u,u.__data__,s,a)),i.push(u));return new _t(r,i)},nl=function(t){"function"!=typeof t&&(t=Xf(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],a=u.length,c=r[i]=[],s=0;s<a;++s)(o=u[s])&&t.call(o,o.__data__,s,u)&&c.push(o);return new _t(r,this._parents)},el=function(t){return new Array(t.length)},rl=function(){return new _t(this._enter||this._groups.map(el),this._parents)};P.prototype={constructor:P,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var il=function(t){return function(){return t}},ol="$",ul=function(t,n){if(!t)return p=new Array(this.size()),s=-1,this.each(function(t){p[++s]=t}),p;var e=n?R:L,r=this._parents,i=this._groups;"function"!=typeof t&&(t=il(t));for(var o=i.length,u=new Array(o),a=new Array(o),c=new Array(o),s=0;s<o;++s){var f=r[s],l=i[s],h=l.length,p=t.call(f,f&&f.__data__,s,r),d=p.length,v=a[s]=new Array(d),_=u[s]=new Array(d);e(f,l,v,_,c[s]=new Array(h),p,n);for(var y,g,m=0,x=0;m<d;++m)if(y=v[m]){for(m>=x&&(x=m+1);!(g=_[x])&&++x<d;);y._next=g||null}}return u=new _t(u,r),u._enter=a,u._exit=c,u},al=function(){return new _t(this._exit||this._groups.map(el),this._parents)},cl=function(t){for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var c,s=n[a],f=e[a],l=s.length,h=u[a]=new Array(l),p=0;p<l;++p)(c=s[p]||f[p])&&(h[p]=c);for(;a<r;++a)u[a]=n[a];return new _t(u,this._parents)},sl=function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&u!==r.nextSibling&&u.parentNode.insertBefore(r,u),u=r);return this},fl=function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=q);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],c=a.length,s=i[o]=new Array(c),f=0;f<c;++f)(u=a[f])&&(s[f]=u);s.sort(n)}return new _t(i,this._parents).order()},ll=function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},hl=function(){var t=new Array(this.size()),n=-1;return this.each(function(){t[++n]=this}),t},pl=function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},dl=function(){var t=0;return this.each(function(){++t}),t},vl=function(){return!this.node()},_l=function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,a=o.length;u<a;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},yl=function(t,n){var e=Ff(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?D:U:"function"==typeof n?e.local?Y:I:e.local?F:O)(e,n))},gl=function(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView},ml=function(t,n,e){return arguments.length>1?this.each((null==n?B:"function"==typeof n?j:H)(t,n,null==e?"":e)):X(this.node(),t)},xl=function(t,n){return arguments.length>1?this.each((null==n?$:"function"==typeof n?W:V)(t,n)):this.node()[t]};J.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var bl=function(t,n){var e=Z(t+"");if(arguments.length<2){for(var r=G(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?et:n?tt:nt)(e,n))},wl=function(t){return arguments.length?this.each(null==t?rt:("function"==typeof t?ot:it)(t)):this.node().textContent},Ml=function(t){return arguments.length?this.each(null==t?ut:("function"==typeof t?ct:at)(t)):this.node().innerHTML},Tl=function(){return this.each(st)},kl=function(){return this.each(ft)},Nl=function(t){var n="function"==typeof t?t:If(t);return this.select(function(){return this.appendChild(n.apply(this,arguments))})},Sl=function(t,n){var e="function"==typeof t?t:If(t),r=null==n?lt:"function"==typeof n?n:Jf(n);return this.select(function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)})},El=function(){return this.each(ht)},Al=function(t){return arguments.length?this.property("__data__",t):this.node().__data__},Cl=function(t,n){return this.each(("function"==typeof n?vt:dt)(t,n))},zl=[null];_t.prototype=yt.prototype={constructor:_t,select:Qf,selectAll:tl,filter:nl,data:ul,enter:rl,exit:al,merge:cl,order:sl,sort:fl,call:ll,nodes:hl,node:pl,size:dl,empty:vl,each:_l,attr:yl,style:ml,property:xl,classed:bl,text:wl,html:Ml,raise:Tl,lower:kl,append:Nl,insert:Sl,remove:El,datum:Al,on:Vf,dispatch:Cl};var Pl=function(t){return"string"==typeof t?new _t([[document.querySelector(t)]],[document.documentElement]):new _t([[t]],zl)},Ll=function(t){return"string"==typeof t?new _t([document.querySelectorAll(t)],[document.documentElement]):new _t([null==t?[]:t],zl)
+},Rl=function(t,n,e){arguments.length<3&&(e=n,n=Wf().changedTouches);for(var r,i=0,o=n?n.length:0;i<o;++i)if((r=n[i]).identifier===e)return Zf(t,r);return null},ql=function(t,n){null==n&&(n=Wf().touches);for(var e=0,r=n?n.length:0,i=new Array(r);e<r;++e)i[e]=Zf(t,n[e]);return i},Ul=function(){t.event.preventDefault(),t.event.stopImmediatePropagation()},Dl=function(t){var n=t.document.documentElement,e=Pl(t).on("dragstart.drag",Ul,!0);"onselectstart"in n?e.on("selectstart.drag",Ul,!0):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")},Ol=function(t){return function(){return t}};xt.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Fl=function(){function n(t){t.on("mousedown.drag",e).on("touchstart.drag",o).on("touchmove.drag",u).on("touchend.drag touchcancel.drag",a).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function e(){if(!h&&p.apply(this,arguments)){var n=c("mouse",d.apply(this,arguments),Gf,this,arguments);n&&(Pl(t.event.view).on("mousemove.drag",r,!0).on("mouseup.drag",i,!0),Dl(t.event.view),gt(),l=!1,s=t.event.clientX,f=t.event.clientY,n("start"))}}function r(){if(Ul(),!l){var n=t.event.clientX-s,e=t.event.clientY-f;l=n*n+e*e>x}y.mouse("drag")}function i(){Pl(t.event.view).on("mousemove.drag mouseup.drag",null),mt(t.event.view,l),Ul(),y.mouse("end")}function o(){if(p.apply(this,arguments)){var n,e,r=t.event.changedTouches,i=d.apply(this,arguments),o=r.length;for(n=0;n<o;++n)(e=c(r[n].identifier,i,Rl,this,arguments))&&(gt(),e("start"))}}function u(){var n,e,r=t.event.changedTouches,i=r.length;for(n=0;n<i;++n)(e=y[r[n].identifier])&&(Ul(),e("drag"))}function a(){var n,e,r=t.event.changedTouches,i=r.length;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),n=0;n<i;++n)(e=y[r[n].identifier])&&(gt(),e("end"))}function c(e,r,i,o,u){var a,c,s,f=i(r,e),l=g.copy();if(A(new xt(n,"beforestart",a,e,m,f[0],f[1],0,0,l),function(){return null!=(t.event.subject=a=_.apply(o,u))&&(c=a.x-f[0]||0,s=a.y-f[1]||0,!0)}))return function t(h){var p,d=f;switch(h){case"start":y[e]=t,p=m++;break;case"end":delete y[e],--m;case"drag":f=i(r,e),p=m}A(new xt(n,h,a,e,p,f[0]+c,f[1]+s,f[0]-d[0],f[1]-d[1],l),l.apply,l,[h,o,u])}}var s,f,l,h,p=bt,d=wt,_=Mt,y={},g=v("start","drag","end"),m=0,x=0;return n.filter=function(t){return arguments.length?(p="function"==typeof t?t:Ol(!!t),n):p},n.container=function(t){return arguments.length?(d="function"==typeof t?t:Ol(t),n):d},n.subject=function(t){return arguments.length?(_="function"==typeof t?t:Ol(t),n):_},n.on=function(){var t=g.on.apply(g,arguments);return t===g?n:t},n.clickDistance=function(t){return arguments.length?(x=(t=+t)*t,n):Math.sqrt(x)},n},Il=function(t,n,e){t.prototype=n.prototype=e,e.constructor=t},Yl="\\s*([+-]?\\d+)\\s*",Bl="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Hl="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",jl=/^#([0-9a-f]{3})$/,Xl=/^#([0-9a-f]{6})$/,$l=new RegExp("^rgb\\("+[Yl,Yl,Yl]+"\\)$"),Vl=new RegExp("^rgb\\("+[Hl,Hl,Hl]+"\\)$"),Wl=new RegExp("^rgba\\("+[Yl,Yl,Yl,Bl]+"\\)$"),Zl=new RegExp("^rgba\\("+[Hl,Hl,Hl,Bl]+"\\)$"),Gl=new RegExp("^hsl\\("+[Bl,Hl,Hl]+"\\)$"),Jl=new RegExp("^hsla\\("+[Bl,Hl,Hl,Bl]+"\\)$"),Ql={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Il(kt,Nt,{displayable:function(){return this.rgb().displayable()},toString:function(){return this.rgb()+""}}),Il(zt,Ct,Tt(kt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new zt(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new zt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return 0<=this.r&&this.r<=255&&0<=this.g&&this.g<=255&&0<=this.b&&this.b<=255&&0<=this.opacity&&this.opacity<=1},toString:function(){var t=this.opacity;return t=isNaN(t)?1:Math.max(0,Math.min(1,t)),(1===t?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}})),Il(qt,Rt,Tt(kt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new qt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new qt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new zt(Ut(t>=240?t-240:t+120,i,r),Ut(t,i,r),Ut(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1}}));var Kl=Math.PI/180,th=180/Math.PI,nh=.95047,eh=1,rh=1.08883,ih=4/29,oh=6/29,uh=3*oh*oh,ah=oh*oh*oh;Il(Ft,Ot,Tt(kt,{brighter:function(t){return new Ft(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker:function(t){return new Ft(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb:function(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return t=eh*Yt(t),n=nh*Yt(n),e=rh*Yt(e),new zt(Bt(3.2404542*n-1.5371385*t-.4985314*e),Bt(-.969266*n+1.8760108*t+.041556*e),Bt(.0556434*n-.2040259*t+1.0572252*e),this.opacity)}})),Il($t,Xt,Tt(kt,{brighter:function(t){return new $t(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker:function(t){return new $t(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb:function(){return Dt(this).rgb()}}));var ch=-.14861,sh=1.78277,fh=-.29227,lh=-.90649,hh=1.97294,ph=hh*lh,dh=hh*sh,vh=sh*fh-lh*ch;Il(Zt,Wt,Tt(kt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Zt(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Zt(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=isNaN(this.h)?0:(this.h+120)*Kl,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new zt(255*(n+e*(ch*r+sh*i)),255*(n+e*(fh*r+lh*i)),255*(n+e*(hh*r)),this.opacity)}}));var _h,yh,gh,mh,xh,bh,wh=function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return Gt((e-r/n)*n,u,i,o,a)}},Mh=function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return Gt((e-r/n)*n,i,o,u,a)}},Th=function(t){return function(){return t}},kh=function t(n){function e(t,n){var e=r((t=Ct(t)).r,(n=Ct(n)).r),i=r(t.g,n.g),o=r(t.b,n.b),u=nn(t.opacity,n.opacity);return function(n){return t.r=e(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}var r=tn(n);return e.gamma=t,e}(1),Nh=en(wh),Sh=en(Mh),Eh=function(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(r),u=new Array(r);for(e=0;e<i;++e)o[e]=qh(t[e],n[e]);for(;e<r;++e)u[e]=n[e];return function(t){for(e=0;e<i;++e)u[e]=o[e](t);return u}},Ah=function(t,n){var e=new Date;return t=+t,n-=t,function(r){return e.setTime(t+n*r),e}},Ch=function(t,n){return t=+t,n-=t,function(e){return t+n*e}},zh=function(t,n){var e,r={},i={};null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={});for(e in n)e in t?r[e]=qh(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}},Ph=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Lh=new RegExp(Ph.source,"g"),Rh=function(t,n){var e,r,i,o=Ph.lastIndex=Lh.lastIndex=0,u=-1,a=[],c=[];for(t+="",n+="";(e=Ph.exec(t))&&(r=Lh.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,c.push({i:u,x:Ch(e,r)})),o=Lh.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?c[0]?on(c[0].x):rn(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)a[(e=c[r]).i]=e.x(t);return a.join("")})},qh=function(t,n){var e,r=typeof n;return null==n||"boolean"===r?Th(n):("number"===r?Ch:"string"===r?(e=Nt(n))?(n=e,kh):Rh:n instanceof Nt?kh:n instanceof Date?Ah:Array.isArray(n)?Eh:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?zh:Ch)(t,n)},Uh=function(t,n){return t=+t,n-=t,function(e){return Math.round(t+n*e)}},Dh=180/Math.PI,Oh={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1},Fh=function(t,n,e,r,i,o){var u,a,c;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,c/=a),t*r<n*e&&(t=-t,n=-n,c=-c,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Dh,skewX:Math.atan(c)*Dh,scaleX:u,scaleY:a}},Ih=cn(un,"px, ","px)","deg)"),Yh=cn(an,", ",")",")"),Bh=Math.SQRT2,Hh=function(t,n){var e,r,i=t[0],o=t[1],u=t[2],a=n[0],c=n[1],s=n[2],f=a-i,l=c-o,h=f*f+l*l;if(h<1e-12)r=Math.log(s/u)/Bh,e=function(t){return[i+t*f,o+t*l,u*Math.exp(Bh*t*r)]};else{var p=Math.sqrt(h),d=(s*s-u*u+4*h)/(2*u*2*p),v=(s*s-u*u-4*h)/(2*s*2*p),_=Math.log(Math.sqrt(d*d+1)-d),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-_)/Bh,e=function(t){var n=t*r,e=sn(_),a=u/(2*p)*(e*ln(Bh*n+_)-fn(_));return[i+a*f,o+a*l,u*e/sn(Bh*n+_)]}}return e.duration=1e3*r,e},jh=hn(Kt),Xh=hn(nn),$h=dn(Kt),Vh=dn(nn),Wh=vn(Kt),Zh=vn(nn),Gh=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},Jh=0,Qh=0,Kh=0,tp=1e3,np=0,ep=0,rp=0,ip="object"==typeof performance&&performance.now?performance:Date,op="function"==typeof requestAnimationFrame?requestAnimationFrame:function(t){setTimeout(t,17)};gn.prototype=mn.prototype={constructor:gn,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?_n():+e)+(null==n?0:+n),this._next||bh===this||(bh?bh._next=this:xh=this,bh=this),this._call=t,this._time=e,Tn()},stop:function(){this._call&&(this._call=null,this._time=1/0,Tn())}};var up=function(t,n,e){var r=new gn;return n=null==n?0:+n,r.restart(function(e){r.stop(),t(e+n)},n,e),r},ap=function(t,n,e){var r=new gn,i=n;return null==n?(r.restart(t,n,e),r):(n=+n,e=null==e?_n():+e,r.restart(function o(u){u+=i,r.restart(o,i+=n,e),t(u)},n,e),r)},cp=v("start","end","interrupt"),sp=[],fp=0,lp=1,hp=2,pp=3,dp=4,vp=5,_p=6,yp=function(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};En(t,e,{name:n,index:r,group:i,on:cp,tween:sp,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:fp})},gp=function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){n=null==n?null:n+"";for(i in o)(e=o[i]).name===n?(r=e.state>hp&&e.state<vp,e.state=_p,e.timer.stop(),r&&e.on.call("interrupt",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}},mp=function(t){return this.each(function(){gp(this,t)})},xp=function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Sn(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?An:Cn)(e,t,n))},bp=function(t,n){var e;return("number"==typeof n?Ch:n instanceof Nt?kh:(e=Nt(n))?(n=e,kh):Rh)(t,n)},wp=function(t,n){var e=Ff(t),r="transform"===e?Yh:bp;return this.attrTween(t,"function"==typeof n?(e.local?Dn:Un)(e,r,zn(this,"attr."+t,n)):null==n?(e.local?Ln:Pn)(e):(e.local?qn:Rn)(e,r,n+""))},Mp=function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=Ff(t);return this.tween(e,(r.local?On:Fn)(r,n))},Tp=function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?In:Yn)(n,t)):Sn(this.node(),n).delay},kp=function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?Bn:Hn)(n,t)):Sn(this.node(),n).duration},Np=function(t){var n=this._id;return arguments.length?this.each(jn(n,t)):Sn(this.node(),n).ease},Sp=function(t){"function"!=typeof t&&(t=Xf(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],a=u.length,c=r[i]=[],s=0;s<a;++s)(o=u[s])&&t.call(o,o.__data__,s,u)&&c.push(o);return new ne(r,this._parents,this._name,this._id)},Ep=function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var c,s=n[a],f=e[a],l=s.length,h=u[a]=new Array(l),p=0;p<l;++p)(c=s[p]||f[p])&&(h[p]=c);for(;a<r;++a)u[a]=n[a];return new ne(u,this._parents,this._name,this._id)},Ap=function(t,n){var e=this._id;return arguments.length<2?Sn(this.node(),e).on.on(t):this.each($n(e,t,n))},Cp=function(){return this.on("end.remove",Vn(this._id))},zp=function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Jf(t));for(var r=this._groups,i=r.length,o=new Array(i),u=0;u<i;++u)for(var a,c,s=r[u],f=s.length,l=o[u]=new Array(f),h=0;h<f;++h)(a=s[h])&&(c=t.call(a,a.__data__,h,s))&&("__data__"in a&&(c.__data__=a.__data__),l[h]=c,yp(l[h],n,e,h,l,Sn(a,e)));return new ne(o,this._parents,n,e)},Pp=function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Kf(t));for(var r=this._groups,i=r.length,o=[],u=[],a=0;a<i;++a)for(var c,s=r[a],f=s.length,l=0;l<f;++l)if(c=s[l]){for(var h,p=t.call(c,c.__data__,l,s),d=Sn(c,e),v=0,_=p.length;v<_;++v)(h=p[v])&&yp(h,n,e,v,p,d);o.push(p),u.push(c)}return new ne(o,u,n,e)},Lp=yt.prototype.constructor,Rp=function(){return new Lp(this._groups,this._parents)},qp=function(t,n,e){var r="transform"==(t+="")?Ih:bp;return null==n?this.styleTween(t,Wn(t,r)).on("end.style."+t,Zn(t)):this.styleTween(t,"function"==typeof n?Jn(t,r,zn(this,"style."+t,n)):Gn(t,r,n+""),e)},Up=function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,Qn(t,n,null==e?"":e))},Dp=function(t){return this.tween("text","function"==typeof t?te(zn(this,"text",t)):Kn(null==t?"":t+""))},Op=function(){for(var t=this._name,n=this._id,e=re(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],c=a.length,s=0;s<c;++s)if(u=a[s]){var f=Sn(u,n);yp(u,t,e,s,a,{time:f.time+f.delay+f.duration,delay:0,duration:f.duration,ease:f.ease})}return new ne(r,this._parents,t,e)},Fp=0,Ip=yt.prototype;ne.prototype=ee.prototype={constructor:ne,select:zp,selectAll:Pp,filter:Sp,merge:Ep,selection:Rp,transition:Op,call:Ip.call,nodes:Ip.nodes,node:Ip.node,size:Ip.size,empty:Ip.empty,each:Ip.each,on:Ap,attr:wp,attrTween:Mp,style:qp,styleTween:Up,text:Dp,remove:Cp,tween:xp,delay:Tp,duration:kp,ease:Np};var Yp=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),Bp=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),Hp=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),jp=Math.PI,Xp=jp/2,$p=4/11,Vp=6/11,Wp=8/11,Zp=.75,Gp=9/11,Jp=10/11,Qp=.9375,Kp=21/22,td=63/64,nd=1/$p/$p,ed=function t(n){function e(t){return t*t*((n+1)*t-n)}return n=+n,e.overshoot=t,e}(1.70158),rd=function t(n){function e(t){return--t*t*((n+1)*t+n)+1}return n=+n,e.overshoot=t,e}(1.70158),id=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(1.70158),od=2*Math.PI,ud=function t(n,e){function r(t){return n*Math.pow(2,10*--t)*Math.sin((i-t)/e)}var i=Math.asin(1/(n=Math.max(1,n)))*(e/=od);return r.amplitude=function(n){return t(n,e*od)},r.period=function(e){return t(n,e)},r}(1,.3),ad=function t(n,e){function r(t){return 1-n*Math.pow(2,-10*(t=+t))*Math.sin((t+i)/e)}var i=Math.asin(1/(n=Math.max(1,n)))*(e/=od);return r.amplitude=function(n){return t(n,e*od)},r.period=function(e){return t(n,e)},r}(1,.3),cd=function t(n,e){function r(t){return((t=2*t-1)<0?n*Math.pow(2,10*t)*Math.sin((i-t)/e):2-n*Math.pow(2,-10*t)*Math.sin((i+t)/e))/2}var i=Math.asin(1/(n=Math.max(1,n)))*(e/=od);return r.amplitude=function(n){return t(n,e*od)},r.period=function(e){return t(n,e)},r}(1,.3),sd={time:null,delay:0,duration:250,ease:fe},fd=function(t){var n,e;t instanceof ne?(n=t._id,t=t._name):(n=re(),(e=sd).time=_n(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],c=a.length,s=0;s<c;++s)(u=a[s])&&yp(u,t,n,s,a,e||Me(u,n));return new ne(r,this._parents,t,n)};yt.prototype.interrupt=mp,yt.prototype.transition=fd;var ld=[null],hd=function(t,n){var e,r,i=t.__transition;if(i){n=null==n?null:n+"";for(r in i)if((e=i[r]).state>lp&&e.name===n)return new ne([[t]],ld,n,+r)}return null},pd=function(t){return function(){return t}},dd=function(t,n,e){this.target=t,this.type=n,this.selection=e},vd=function(){t.event.preventDefault(),t.event.stopImmediatePropagation()},_d={name:"drag"},yd={name:"space"},gd={name:"handle"},md={name:"center"},xd={name:"x",handles:["e","w"].map(ke),input:function(t,n){return t&&[[t[0],n[0][1]],[t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},bd={name:"y",handles:["n","s"].map(ke),input:function(t,n){return t&&[[n[0][0],t[0]],[n[1][0],t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},wd={name:"xy",handles:["n","e","s","w","nw","ne","se","sw"].map(ke),input:function(t){return t},output:function(t){return t}},Md={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Td={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},kd={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Nd={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Sd={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1},Ed=function(){return Le(wd)},Ad=Math.cos,Cd=Math.sin,zd=Math.PI,Pd=zd/2,Ld=2*zd,Rd=Math.max,qd=function(){function t(t){var o,u,a,c,s,f,l=t.length,h=[],p=cf(l),d=[],v=[],_=v.groups=new Array(l),y=new Array(l*l);for(o=0,s=-1;++s<l;){for(u=0,f=-1;++f<l;)u+=t[s][f];h.push(u),d.push(cf(l)),o+=u}for(e&&p.sort(function(t,n){return e(h[t],h[n])}),r&&d.forEach(function(n,e){n.sort(function(n,i){return r(t[e][n],t[e][i])})}),o=Rd(0,Ld-n*l)/o,c=o?n:Ld/l,u=0,s=-1;++s<l;){for(a=u,f=-1;++f<l;){var g=p[s],m=d[g][f],x=t[g][m],b=u,w=u+=x*o;y[m*l+g]={index:g,subindex:m,startAngle:b,endAngle:w,value:x}}_[g]={index:g,startAngle:a,endAngle:u,value:h[g]},u+=c}for(s=-1;++s<l;)for(f=s-1;++f<l;){var M=y[f*l+s],T=y[s*l+f];(M.value||T.value)&&v.push(M.value<T.value?{source:T,target:M}:{source:M,target:T})}return i?v.sort(i):v}var n=0,e=null,r=null,i=null;return t.padAngle=function(e){return arguments.length?(n=Rd(0,e),t):n},t.sortGroups=function(n){return arguments.length?(e=n,t):e},t.sortSubgroups=function(n){return arguments.length?(r=n,t):r},t.sortChords=function(n){return arguments.length?(null==n?i=null:(i=Re(n))._=n,t):i&&i._},t},Ud=Array.prototype.slice,Dd=function(t){return function(){return t}},Od=Math.PI,Fd=2*Od,Id=Fd-1e-6;qe.prototype=Ue.prototype={constructor:qe,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,r){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+r)},bezierCurveTo:function(t,n,e,r,i,o){this._+="C"+ +t+","+ +n+","+ +e+","+ +r+","+(this._x1=+i)+","+(this._y1=+o)},arcTo:function(t,n,e,r,i){t=+t,n=+n,e=+e,r=+r,i=+i;var o=this._x1,u=this._y1,a=e-t,c=r-n,s=o-t,f=u-n,l=s*s+f*f;if(i<0)throw new Error("negative radius: "+i);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(l>1e-6)if(Math.abs(f*a-c*s)>1e-6&&i){var h=e-o,p=r-u,d=a*a+c*c,v=h*h+p*p,_=Math.sqrt(d),y=Math.sqrt(l),g=i*Math.tan((Od-Math.acos((d+l-v)/(2*_*y)))/2),m=g/y,x=g/_;Math.abs(m-1)>1e-6&&(this._+="L"+(t+m*s)+","+(n+m*f)),this._+="A"+i+","+i+",0,0,"+ +(f*h>s*p)+","+(this._x1=t+x*a)+","+(this._y1=n+x*c)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,r,i,o){t=+t,n=+n,e=+e;var u=e*Math.cos(r),a=e*Math.sin(r),c=t+u,s=n+a,f=1^o,l=o?r-i:i-r;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+c+","+s:(Math.abs(this._x1-c)>1e-6||Math.abs(this._y1-s)>1e-6)&&(this._+="L"+c+","+s),e&&(l<0&&(l=l%Fd+Fd),l>Id?this._+="A"+e+","+e+",0,1,"+f+","+(t-u)+","+(n-a)+"A"+e+","+e+",0,1,"+f+","+(this._x1=c)+","+(this._y1=s):l>1e-6&&(this._+="A"+e+","+e+",0,"+ +(l>=Od)+","+f+","+(this._x1=t+e*Math.cos(i))+","+(this._y1=n+e*Math.sin(i))))},rect:function(t,n,e,r){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +r+"h"+-e+"Z"},toString:function(){return this._}};var Yd=function(){function t(){var t,a=Ud.call(arguments),c=n.apply(this,a),s=e.apply(this,a),f=+r.apply(this,(a[0]=c,a)),l=i.apply(this,a)-Pd,h=o.apply(this,a)-Pd,p=f*Ad(l),d=f*Cd(l),v=+r.apply(this,(a[0]=s,a)),_=i.apply(this,a)-Pd,y=o.apply(this,a)-Pd;if(u||(u=t=Ue()),u.moveTo(p,d),u.arc(0,0,f,l,h),l===_&&h===y||(u.quadraticCurveTo(0,0,v*Ad(_),v*Cd(_)),u.arc(0,0,v,_,y)),u.quadraticCurveTo(0,0,p,d),u.closePath(),t)return u=null,t+""||null}var n=De,e=Oe,r=Fe,i=Ie,o=Ye,u=null;return t.radius=function(n){return arguments.length?(r="function"==typeof n?n:Dd(+n),t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:Dd(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:Dd(+n),t):o},t.source=function(e){return arguments.length?(n=e,t):n},t.target=function(n){return arguments.length?(e=n,t):e},t.context=function(n){return arguments.length?(u=null==n?null:n,t):u},t};Be.prototype=He.prototype={constructor:Be,has:function(t){return"$"+t in this},get:function(t){return this["$"+t]},set:function(t,n){return this["$"+t]=n,this},remove:function(t){var n="$"+t;return n in this&&delete this[n]},clear:function(){for(var t in this)"$"===t[0]&&delete this[t]},keys:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(n.slice(1));return t},values:function(){var t=[];for(var n in this)"$"===n[0]&&t.push(this[n]);return t},entries:function(){var t=[];for(var n in this)"$"===n[0]&&t.push({key:n.slice(1),value:this[n]});return t},size:function(){var t=0;for(var n in this)"$"===n[0]&&++t;return t},empty:function(){for(var t in this)if("$"===t[0])return!1;return!0},each:function(t){for(var n in this)"$"===n[0]&&t(this[n],n.slice(1),this)}};var Bd=function(){function t(n,i,u,a){if(i>=o.length)return null!=r?r(n):null!=e?n.sort(e):n;for(var c,s,f,l=-1,h=n.length,p=o[i++],d=He(),v=u();++l<h;)(f=d.get(c=p(s=n[l])+""))?f.push(s):d.set(c,[s]);return d.each(function(n,e){a(v,e,t(n,i,u,a))}),v}function n(t,e){if(++e>o.length)return t;var i,a=u[e-1];return null!=r&&e>=o.length?i=t.entries():(i=[],t.each(function(t,r){i.push({key:r,values:n(t,e)})})),null!=a?i.sort(function(t,n){return a(t.key,n.key)}):i}var e,r,i,o=[],u=[];return i={object:function(n){return t(n,0,je,Xe)},map:function(n){return t(n,0,$e,Ve)},entries:function(e){return n(t(e,0,$e,Ve),0)},key:function(t){return o.push(t),i},sortKeys:function(t){return u[o.length-1]=t,i},sortValues:function(t){return e=t,i},rollup:function(t){return r=t,i}}},Hd=He.prototype;We.prototype=Ze.prototype={constructor:We,has:Hd.has,add:function(t){return t+="",this["$"+t]=t,this},remove:Hd.remove,clear:Hd.clear,values:Hd.keys,size:Hd.size,empty:Hd.empty,each:Hd.each};var jd=function(t){var n=[];for(var e in t)n.push(e);return n},Xd=function(t){var n=[];for(var e in t)n.push(t[e]);return n},$d=function(t){var n=[];for(var e in t)n.push({key:e,value:t[e]});return n},Vd=function(t){function n(t,n){var r,i,o=e(t,function(t,e){if(r)return r(t,e-1);i=t,r=n?Je(t,n):Ge(t)});return o.columns=i,o}function e(t,n){function e(){if(f>=s)return u;if(i)return i=!1,o;var n,e=f;if(34===t.charCodeAt(e)){for(var r=e;r++<s;)if(34===t.charCodeAt(r)){if(34!==t.charCodeAt(r+1))break;++r}return f=r+2,n=t.charCodeAt(r+1),13===n?(i=!0,10===t.charCodeAt(r+2)&&++f):10===n&&(i=!0),t.slice(e+1,r).replace(/""/g,'"')}for(;f<s;){var a=1;if(10===(n=t.charCodeAt(f++)))i=!0;else if(13===n)i=!0,10===t.charCodeAt(f)&&(++f,++a);else if(n!==c)continue;return t.slice(e,f-a)}return t.slice(e)}for(var r,i,o={},u={},a=[],s=t.length,f=0,l=0;(r=e())!==u;){for(var h=[];r!==o&&r!==u;)h.push(r),r=e();n&&null==(h=n(h,l++))||a.push(h)}return a}function r(n,e){return null==e&&(e=Qe(n)),[e.map(u).join(t)].concat(n.map(function(n){return e.map(function(t){return u(n[t])}).join(t)})).join("\n")}function i(t){return t.map(o).join("\n")}function o(n){return n.map(u).join(t)}function u(t){return null==t?"":a.test(t+="")?'"'+t.replace(/\"/g,'""')+'"':t}var a=new RegExp('["'+t+"\n\r]"),c=t.charCodeAt(0);return{parse:n,parseRows:e,format:r,formatRows:i}},Wd=Vd(","),Zd=Wd.parse,Gd=Wd.parseRows,Jd=Wd.format,Qd=Wd.formatRows,Kd=Vd("\t"),tv=Kd.parse,nv=Kd.parseRows,ev=Kd.format,rv=Kd.formatRows,iv=function(t,n){function e(){var e,i,o=r.length,u=0,a=0;for(e=0;e<o;++e)i=r[e],u+=i.x,a+=i.y;for(u=u/o-t,a=a/o-n,e=0;e<o;++e)i=r[e],i.x-=u,i.y-=a}var r;return null==t&&(t=0),null==n&&(n=0),e.initialize=function(t){r=t},e.x=function(n){return arguments.length?(t=+n,e):t},e.y=function(t){return arguments.length?(n=+t,e):n},e},ov=function(t){return function(){return t}},uv=function(){return 1e-6*(Math.random()-.5)},av=function(t){var n=+this._x.call(null,t),e=+this._y.call(null,t);return Ke(this.cover(n,e),n,e,t)},cv=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{if(!(e>t||t>i||r>n||n>o))return this;var u,a,c=i-e,s=this._root;switch(a=(n<(r+o)/2)<<1|t<(e+i)/2){case 0:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,o=r+c,t>i||n>o);break;case 1:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,o=r+c,e>t||n>o);break;case 2:do{u=new Array(4),u[a]=s,s=u}while(c*=2,i=e+c,r=o-c,t>i||r>n);break;case 3:do{u=new Array(4),u[a]=s,s=u}while(c*=2,e=i-c,r=o-c,e>t||r>n)}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},sv=function(){var t=[];return this.visit(function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)}),t},fv=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},lv=function(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i},hv=function(t,n,e){var r,i,o,u,a,c,s,f=this._x0,l=this._y0,h=this._x1,p=this._y1,d=[],v=this._root;for(v&&d.push(new lv(v,f,l,h,p)),null==e?e=1/0:(f=t-e,l=n-e,h=t+e,p=n+e,e*=e);c=d.pop();)if(!(!(v=c.node)||(i=c.x0)>h||(o=c.y0)>p||(u=c.x1)<f||(a=c.y1)<l))if(v.length){var _=(i+u)/2,y=(o+a)/2;d.push(new lv(v[3],_,y,u,a),new lv(v[2],i,y,_,a),new lv(v[1],_,o,u,y),new lv(v[0],i,o,_,y)),(s=(n>=y)<<1|t>=_)&&(c=d[d.length-1],d[d.length-1]=d[d.length-1-s],d[d.length-1-s]=c)}else{var g=t-+this._x.call(null,v.data),m=n-+this._y.call(null,v.data),x=g*g+m*m;if(x<e){var b=Math.sqrt(e=x);f=t-b,l=n-b,h=t+b,p=n+b,r=v.data}}return r},pv=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(u=+this._y.call(null,t)))return this;var n,e,r,i,o,u,a,c,s,f,l,h,p=this._root,d=this._x0,v=this._y0,_=this._x1,y=this._y1;if(!p)return this;if(p.length)for(;;){if((s=o>=(a=(d+_)/2))?d=a:_=a,(f=u>=(c=(v+y)/2))?v=c:y=c,n=p,!(p=p[l=f<<1|s]))return this;if(!p.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;p.data!==t;)if(r=p,!(p=p.next))return this;return(i=p.next)&&delete p.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(p=n[0]||n[1]||n[2]||n[3])&&p===(n[3]||n[2]||n[1]||n[0])&&!p.length&&(e?e[h]=p:this._root=p),this):(this._root=i,this)},dv=function(){return this._root},vv=function(){var t=0;return this.visit(function(n){if(!n.length)do{++t}while(n=n.next)}),t},_v=function(t){var n,e,r,i,o,u,a=[],c=this._root;for(c&&a.push(new lv(c,this._x0,this._y0,this._x1,this._y1));n=a.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,u=n.y1)&&c.length){var s=(r+o)/2,f=(i+u)/2;(e=c[3])&&a.push(new lv(e,s,f,o,u)),(e=c[2])&&a.push(new lv(e,r,f,s,u)),(e=c[1])&&a.push(new lv(e,s,i,o,f)),(e=c[0])&&a.push(new lv(e,r,i,s,f))}return this},yv=function(t){var n,e=[],r=[];for(this._root&&e.push(new lv(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,u=n.x0,a=n.y0,c=n.x1,s=n.y1,f=(u+c)/2,l=(a+s)/2;(o=i[0])&&e.push(new lv(o,u,a,f,l)),(o=i[1])&&e.push(new lv(o,f,a,c,l)),(o=i[2])&&e.push(new lv(o,u,l,f,s)),(o=i[3])&&e.push(new lv(o,f,l,c,s))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},gv=function(t){return arguments.length?(this._x=t,this):this._x},mv=function(t){return arguments.length?(this._y=t,this):this._y},xv=ir.prototype=or.prototype;xv.copy=function(){var t,n,e=new or(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=ur(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=ur(n));return e},xv.add=av,xv.addAll=tr,xv.cover=cv,xv.data=sv,xv.extent=fv,xv.find=hv,xv.remove=pv,xv.removeAll=nr,xv.root=dv,xv.size=vv,xv.visit=_v,xv.visitAfter=yv,xv.x=gv,xv.y=mv;var bv,wv=function(t){function n(){function t(t,n,e,r,i){var o=t.data,a=t.r,p=l+a;{if(!o)return n>s+p||r<s-p||e>f+p||i<f-p;if(o.index>c.index){var d=s-o.x-o.vx,v=f-o.y-o.vy,_=d*d+v*v;_<p*p&&(0===d&&(d=uv(),_+=d*d),0===v&&(v=uv(),_+=v*v),_=(p-(_=Math.sqrt(_)))/_*u,c.vx+=(d*=_)*(p=(a*=a)/(h+a)),c.vy+=(v*=_)*p,o.vx-=d*(p=1-p),o.vy-=v*p)}}}for(var n,r,c,s,f,l,h,p=i.length,d=0;d<a;++d)for(r=ir(i,ar,cr).visitAfter(e),n=0;n<p;++n)c=i[n],l=o[c.index],h=l*l,s=c.x+c.vx,f=c.y+c.vy,r.visit(t)}function e(t){if(t.data)return t.r=o[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function r(){if(i){var n,e,r=i.length;for(o=new Array(r),n=0;n<r;++n)e=i[n],o[e.index]=+t(e,n,i)}}var i,o,u=1,a=1
+;return"function"!=typeof t&&(t=ov(null==t?1:+t)),n.initialize=function(t){i=t,r()},n.iterations=function(t){return arguments.length?(a=+t,n):a},n.strength=function(t){return arguments.length?(u=+t,n):u},n.radius=function(e){return arguments.length?(t="function"==typeof e?e:ov(+e),r(),n):t},n},Mv=function(t){function n(t){return 1/Math.min(s[t.source.index],s[t.target.index])}function e(n){for(var e=0,r=t.length;e<d;++e)for(var i,o,c,s,l,h,p,v=0;v<r;++v)i=t[v],o=i.source,c=i.target,s=c.x+c.vx-o.x-o.vx||uv(),l=c.y+c.vy-o.y-o.vy||uv(),h=Math.sqrt(s*s+l*l),h=(h-a[v])/h*n*u[v],s*=h,l*=h,c.vx-=s*(p=f[v]),c.vy-=l*p,o.vx+=s*(p=1-p),o.vy+=l*p}function r(){if(c){var n,e,r=c.length,h=t.length,p=He(c,l);for(n=0,s=new Array(r);n<h;++n)e=t[n],e.index=n,"object"!=typeof e.source&&(e.source=fr(p,e.source)),"object"!=typeof e.target&&(e.target=fr(p,e.target)),s[e.source.index]=(s[e.source.index]||0)+1,s[e.target.index]=(s[e.target.index]||0)+1;for(n=0,f=new Array(h);n<h;++n)e=t[n],f[n]=s[e.source.index]/(s[e.source.index]+s[e.target.index]);u=new Array(h),i(),a=new Array(h),o()}}function i(){if(c)for(var n=0,e=t.length;n<e;++n)u[n]=+h(t[n],n,t)}function o(){if(c)for(var n=0,e=t.length;n<e;++n)a[n]=+p(t[n],n,t)}var u,a,c,s,f,l=sr,h=n,p=ov(30),d=1;return null==t&&(t=[]),e.initialize=function(t){c=t,r()},e.links=function(n){return arguments.length?(t=n,r(),e):t},e.id=function(t){return arguments.length?(l=t,e):l},e.iterations=function(t){return arguments.length?(d=+t,e):d},e.strength=function(t){return arguments.length?(h="function"==typeof t?t:ov(+t),i(),e):h},e.distance=function(t){return arguments.length?(p="function"==typeof t?t:ov(+t),o(),e):p},e},Tv=10,kv=Math.PI*(3-Math.sqrt(5)),Nv=function(t){function n(){e(),p.call("tick",o),u<a&&(h.stop(),p.call("end",o))}function e(){var n,e,r=t.length;for(u+=(s-u)*c,l.each(function(t){t(u)}),n=0;n<r;++n)e=t[n],null==e.fx?e.x+=e.vx*=f:(e.x=e.fx,e.vx=0),null==e.fy?e.y+=e.vy*=f:(e.y=e.fy,e.vy=0)}function r(){for(var n,e=0,r=t.length;e<r;++e){if(n=t[e],n.index=e,isNaN(n.x)||isNaN(n.y)){var i=Tv*Math.sqrt(e),o=e*kv;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function i(n){return n.initialize&&n.initialize(t),n}var o,u=1,a=.001,c=1-Math.pow(a,1/300),s=0,f=.6,l=He(),h=mn(n),p=v("tick","end");return null==t&&(t=[]),r(),o={tick:e,restart:function(){return h.restart(n),o},stop:function(){return h.stop(),o},nodes:function(n){return arguments.length?(t=n,r(),l.each(i),o):t},alpha:function(t){return arguments.length?(u=+t,o):u},alphaMin:function(t){return arguments.length?(a=+t,o):a},alphaDecay:function(t){return arguments.length?(c=+t,o):+c},alphaTarget:function(t){return arguments.length?(s=+t,o):s},velocityDecay:function(t){return arguments.length?(f=1-t,o):1-f},force:function(t,n){return arguments.length>1?(null==n?l.remove(t):l.set(t,i(n)),o):l.get(t)},find:function(n,e,r){var i,o,u,a,c,s=0,f=t.length;for(null==r?r=1/0:r*=r,s=0;s<f;++s)a=t[s],i=n-a.x,o=e-a.y,(u=i*i+o*o)<r&&(c=a,r=u);return c},on:function(t,n){return arguments.length>1?(p.on(t,n),o):p.on(t)}}},Sv=function(){function t(t){var n,a=i.length,c=ir(i,lr,hr).visitAfter(e);for(u=t,n=0;n<a;++n)o=i[n],c.visit(r)}function n(){if(i){var t,n,e=i.length;for(a=new Array(e),t=0;t<e;++t)n=i[t],a[n.index]=+c(n,t,i)}}function e(t){var n,e,r,i,o,u=0;if(t.length){for(r=i=o=0;o<4;++o)(n=t[o])&&(e=n.value)&&(u+=e,r+=e*n.x,i+=e*n.y);t.x=r/u,t.y=i/u}else{n=t,n.x=n.data.x,n.y=n.data.y;do{u+=a[n.data.index]}while(n=n.next)}t.value=u}function r(t,n,e,r){if(!t.value)return!0;var i=t.x-o.x,c=t.y-o.y,h=r-n,p=i*i+c*c;if(h*h/l<p)return p<f&&(0===i&&(i=uv(),p+=i*i),0===c&&(c=uv(),p+=c*c),p<s&&(p=Math.sqrt(s*p)),o.vx+=i*t.value*u/p,o.vy+=c*t.value*u/p),!0;if(!(t.length||p>=f)){(t.data!==o||t.next)&&(0===i&&(i=uv(),p+=i*i),0===c&&(c=uv(),p+=c*c),p<s&&(p=Math.sqrt(s*p)));do{t.data!==o&&(h=a[t.data.index]*u/p,o.vx+=i*h,o.vy+=c*h)}while(t=t.next)}}var i,o,u,a,c=ov(-30),s=1,f=1/0,l=.81;return t.initialize=function(t){i=t,n()},t.strength=function(e){return arguments.length?(c="function"==typeof e?e:ov(+e),n(),t):c},t.distanceMin=function(n){return arguments.length?(s=n*n,t):Math.sqrt(s)},t.distanceMax=function(n){return arguments.length?(f=n*n,t):Math.sqrt(f)},t.theta=function(n){return arguments.length?(l=n*n,t):Math.sqrt(l)},t},Ev=function(t){function n(t){for(var n,e=0,u=r.length;e<u;++e)n=r[e],n.vx+=(o[e]-n.x)*i[e]*t}function e(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)i[n]=isNaN(o[n]=+t(r[n],n,r))?0:+u(r[n],n,r)}}var r,i,o,u=ov(.1);return"function"!=typeof t&&(t=ov(null==t?0:+t)),n.initialize=function(t){r=t,e()},n.strength=function(t){return arguments.length?(u="function"==typeof t?t:ov(+t),e(),n):u},n.x=function(r){return arguments.length?(t="function"==typeof r?r:ov(+r),e(),n):t},n},Av=function(t){function n(t){for(var n,e=0,u=r.length;e<u;++e)n=r[e],n.vy+=(o[e]-n.y)*i[e]*t}function e(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)i[n]=isNaN(o[n]=+t(r[n],n,r))?0:+u(r[n],n,r)}}var r,i,o,u=ov(.1);return"function"!=typeof t&&(t=ov(null==t?0:+t)),n.initialize=function(t){r=t,e()},n.strength=function(t){return arguments.length?(u="function"==typeof t?t:ov(+t),e(),n):u},n.y=function(r){return arguments.length?(t="function"==typeof r?r:ov(+r),e(),n):t},n},Cv=function(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]},zv=function(t){return t=Cv(Math.abs(t)),t?t[1]:NaN},Pv=function(t,n){return function(e,r){for(var i=e.length,o=[],u=0,a=t[0],c=0;i>0&&a>0&&(c+a+1>r&&(a=Math.max(1,r-c)),o.push(e.substring(i-=a,i+a)),!((c+=a+1)>r));)a=t[u=(u+1)%t.length];return o.reverse().join(n)}},Lv=function(t){return function(n){return n.replace(/[0-9]/g,function(n){return t[+n]})}},Rv=function(t,n){t=t.toPrecision(n);t:for(var e,r=t.length,i=1,o=-1;i<r;++i)switch(t[i]){case".":o=e=i;break;case"0":0===o&&(o=i),e=i;break;case"e":break t;default:o>0&&(o=0)}return o>0?t.slice(0,o)+t.slice(e+1):t},qv=function(t,n){var e=Cv(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(bv=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Cv(t,Math.max(0,n+o-1))[0]},Uv=function(t,n){var e=Cv(t,n);if(!e)return t+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")},Dv={"":Rv,"%":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return Uv(100*t,n)},r:Uv,s:qv,X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}},Ov=/^(?:(.)?([<>=^]))?([+\-\( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?([a-z%])?$/i;pr.prototype=dr.prototype,dr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(null==this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(null==this.precision?"":"."+Math.max(0,0|this.precision))+this.type};var Fv,Iv=function(t){return t},Yv=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"],Bv=function(t){function n(t){function n(t){var n,i,a,f=_,x=y;if("c"===v)x=g(t)+x,t="";else{t=+t;var b=t<0;if(t=g(Math.abs(t),d),b&&0==+t&&(b=!1),f=(b?"("===s?s:"-":"-"===s||"("===s?"":s)+f,x=x+("s"===v?Yv[8+bv/3]:"")+(b&&"("===s?")":""),m)for(n=-1,i=t.length;++n<i;)if(48>(a=t.charCodeAt(n))||a>57){x=(46===a?o+t.slice(n+1):t.slice(n))+x,t=t.slice(0,n);break}}p&&!l&&(t=r(t,1/0));var w=f.length+t.length+x.length,M=w<h?new Array(h-w+1).join(e):"";switch(p&&l&&(t=r(M+t,M.length?h-x.length:1/0),M=""),c){case"<":t=f+t+x+M;break;case"=":t=f+M+t+x;break;case"^":t=M.slice(0,w=M.length>>1)+f+t+x+M.slice(w);break;default:t=M+f+t+x}return u(t)}t=pr(t);var e=t.fill,c=t.align,s=t.sign,f=t.symbol,l=t.zero,h=t.width,p=t.comma,d=t.precision,v=t.type,_="$"===f?i[0]:"#"===f&&/[boxX]/.test(v)?"0"+v.toLowerCase():"",y="$"===f?i[1]:/[%p]/.test(v)?a:"",g=Dv[v],m=!v||/[defgprs%]/.test(v);return d=null==d?v?6:12:/[gprs]/.test(v)?Math.max(1,Math.min(21,d)):Math.max(0,Math.min(20,d)),n.toString=function(){return t+""},n}function e(t,e){var r=n((t=pr(t),t.type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(zv(e)/3))),o=Math.pow(10,-i),u=Yv[8+i/3];return function(t){return r(o*t)+u}}var r=t.grouping&&t.thousands?Pv(t.grouping,t.thousands):Iv,i=t.currency,o=t.decimal,u=t.numerals?Lv(t.numerals):Iv,a=t.percent||"%";return{format:n,formatPrefix:e}};vr({decimal:".",thousands:",",grouping:[3],currency:["$",""]});var Hv=function(t){return Math.max(0,-zv(Math.abs(t)))},jv=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(zv(n)/3)))-zv(Math.abs(t)))},Xv=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,zv(n)-zv(t))+1},$v=function(){return new _r};_r.prototype={constructor:_r,reset:function(){this.s=this.t=0},add:function(t){yr(T_,t,this.t),yr(this,T_.s,this.s),this.s?this.t+=T_.t:this.s=T_.t},valueOf:function(){return this.s}};var Vv,Wv,Zv,Gv,Jv,Qv,Kv,t_,n_,e_,r_,i_,o_,u_,a_,c_,s_,f_,l_,h_,p_,d_,v_,__,y_,g_,m_,x_,b_,w_,M_,T_=new _r,k_=1e-6,N_=Math.PI,S_=N_/2,E_=N_/4,A_=2*N_,C_=180/N_,z_=N_/180,P_=Math.abs,L_=Math.atan,R_=Math.atan2,q_=Math.cos,U_=Math.ceil,D_=Math.exp,O_=Math.log,F_=Math.pow,I_=Math.sin,Y_=Math.sign||function(t){return t>0?1:t<0?-1:0},B_=Math.sqrt,H_=Math.tan,j_={Feature:function(t,n){wr(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)wr(e[r].geometry,n)}},X_={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Mr(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Mr(e[r],n,0)},Polygon:function(t,n){Tr(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Tr(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)wr(e[r],n)}},$_=function(t,n){t&&j_.hasOwnProperty(t.type)?j_[t.type](t,n):wr(t,n)},V_=$v(),W_=$v(),Z_={point:br,lineStart:br,lineEnd:br,polygonStart:function(){V_.reset(),Z_.lineStart=kr,Z_.lineEnd=Nr},polygonEnd:function(){var t=+V_;W_.add(t<0?A_+t:t),this.lineStart=this.lineEnd=this.point=br},sphere:function(){W_.add(A_)}},G_=function(t){return W_.reset(),$_(t,Z_),2*W_},J_=$v(),Q_={point:Ur,lineStart:Or,lineEnd:Fr,polygonStart:function(){Q_.point=Ir,Q_.lineStart=Yr,Q_.lineEnd=Br,J_.reset(),Z_.polygonStart()},polygonEnd:function(){Z_.polygonEnd(),Q_.point=Ur,Q_.lineStart=Or,Q_.lineEnd=Fr,V_<0?(Qv=-(t_=180),Kv=-(n_=90)):J_>k_?n_=90:J_<-k_&&(Kv=-90),a_[0]=Qv,a_[1]=t_}},K_=function(t){var n,e,r,i,o,u,a;if(n_=t_=-(Qv=Kv=1/0),u_=[],$_(t,Q_),e=u_.length){for(u_.sort(jr),n=1,r=u_[0],o=[r];n<e;++n)i=u_[n],Xr(r,i[0])||Xr(r,i[1])?(Hr(r[0],i[1])>Hr(r[0],r[1])&&(r[1]=i[1]),Hr(i[0],r[1])>Hr(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(u=-1/0,e=o.length-1,n=0,r=o[e];n<=e;r=i,++n)i=o[n],(a=Hr(r[1],i[0]))>u&&(u=a,Qv=i[0],t_=r[1])}return u_=a_=null,Qv===1/0||Kv===1/0?[[NaN,NaN],[NaN,NaN]]:[[Qv,Kv],[t_,n_]]},ty={sphere:br,point:$r,lineStart:Wr,lineEnd:Jr,polygonStart:function(){ty.lineStart=Qr,ty.lineEnd=Kr},polygonEnd:function(){ty.lineStart=Wr,ty.lineEnd=Jr}},ny=function(t){c_=s_=f_=l_=h_=p_=d_=v_=__=y_=g_=0,$_(t,ty);var n=__,e=y_,r=g_,i=n*n+e*e+r*r;return i<1e-12&&(n=p_,e=d_,r=v_,s_<k_&&(n=f_,e=l_,r=h_),(i=n*n+e*e+r*r)<1e-12)?[NaN,NaN]:[R_(e,n)*C_,mr(r/B_(i))*C_]},ey=function(t){return function(){return t}},ry=function(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e};ei.invert=ei;var iy,oy,uy,ay,cy,sy,fy,ly,hy,py,dy,vy=function(t){function n(n){return n=t(n[0]*z_,n[1]*z_),n[0]*=C_,n[1]*=C_,n}return t=ri(t[0]*z_,t[1]*z_,t.length>2?t[2]*z_:0),n.invert=function(n){return n=t.invert(n[0]*z_,n[1]*z_),n[0]*=C_,n[1]*=C_,n},n},_y=function(){function t(t,n){e.push(t=r(t,n)),t[0]*=C_,t[1]*=C_}function n(){var t=i.apply(this,arguments),n=o.apply(this,arguments)*z_,c=u.apply(this,arguments)*z_;return e=[],r=ri(-t[0]*z_,-t[1]*z_,0).invert,ai(a,n,c,1),t={type:"Polygon",coordinates:[e]},e=r=null,t}var e,r,i=ey([0,0]),o=ey(90),u=ey(6),a={point:t};return n.center=function(t){return arguments.length?(i="function"==typeof t?t:ey([+t[0],+t[1]]),n):i},n.radius=function(t){return arguments.length?(o="function"==typeof t?t:ey(+t),n):o},n.precision=function(t){return arguments.length?(u="function"==typeof t?t:ey(+t),n):u},n},yy=function(){var t,n=[];return{point:function(n,e){t.push([n,e])},lineStart:function(){n.push(t=[])},lineEnd:br,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}},gy=function(t,n,e,r,i,o){var u,a=t[0],c=t[1],s=n[0],f=n[1],l=0,h=1,p=s-a,d=f-c;if(u=e-a,p||!(u>0)){if(u/=p,p<0){if(u<l)return;u<h&&(h=u)}else if(p>0){if(u>h)return;u>l&&(l=u)}if(u=i-a,p||!(u<0)){if(u/=p,p<0){if(u>h)return;u>l&&(l=u)}else if(p>0){if(u<l)return;u<h&&(h=u)}if(u=r-c,d||!(u>0)){if(u/=d,d<0){if(u<l)return;u<h&&(h=u)}else if(d>0){if(u>h)return;u>l&&(l=u)}if(u=o-c,d||!(u<0)){if(u/=d,d<0){if(u>h)return;u>l&&(l=u)}else if(d>0){if(u<l)return;u<h&&(h=u)}return l>0&&(t[0]=a+l*p,t[1]=c+l*d),h<1&&(n[0]=a+h*p,n[1]=c+h*d),!0}}}}},my=function(t,n){return P_(t[0]-n[0])<k_&&P_(t[1]-n[1])<k_},xy=function(t,n,e,r,i){var o,u,a=[],c=[];if(t.forEach(function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],u=t[n];if(my(r,u)){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}a.push(e=new si(r,t,null,!0)),c.push(e.o=new si(r,null,e,!1)),a.push(e=new si(u,t,null,!1)),c.push(e.o=new si(u,null,e,!0))}}),a.length){for(c.sort(n),fi(a),fi(c),o=0,u=c.length;o<u;++o)c[o].e=e=!e;for(var s,f,l=a[0];;){for(var h=l,p=!0;h.v;)if((h=h.n)===l)return;s=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(p)for(o=0,u=s.length;o<u;++o)i.point((f=s[o])[0],f[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(p)for(s=h.p.z,o=s.length-1;o>=0;--o)i.point((f=s[o])[0],f[1]);else r(h.x,h.p.x,-1,i);h=h.p}h=h.o,s=h.z,p=!p}while(!h.v);i.lineEnd()}}},by=1e9,wy=-by,My=function(){var t,n,e,r=0,i=0,o=960,u=500;return e={stream:function(e){return t&&n===e?t:t=li(r,i,o,u)(n=e)},extent:function(a){return arguments.length?(r=+a[0][0],i=+a[0][1],o=+a[1][0],u=+a[1][1],t=n=null,e):[[r,i],[o,u]]}}},Ty=$v(),ky=function(t,n){var e=n[0],r=n[1],i=[I_(e),-q_(e),0],o=0,u=0;Ty.reset();for(var a=0,c=t.length;a<c;++a)if(f=(s=t[a]).length)for(var s,f,l=s[f-1],h=l[0],p=l[1]/2+E_,d=I_(p),v=q_(p),_=0;_<f;++_,h=g,d=x,v=b,l=y){var y=s[_],g=y[0],m=y[1]/2+E_,x=I_(m),b=q_(m),w=g-h,M=w>=0?1:-1,T=M*w,k=T>N_,N=d*x;if(Ty.add(R_(N*M*I_(T),v*b+N*q_(T))),o+=k?w+M*A_:w,k^h>=e^g>=e){var S=Pr(Cr(l),Cr(y));qr(S);var E=Pr(i,S);qr(E);var A=(k^w>=0?-1:1)*mr(E[2]);(r>A||r===A&&(S[0]||S[1]))&&(u+=k^w>=0?1:-1)}}return(o<-k_||o<k_&&Ty<-k_)^1&u},Ny=$v(),Sy={sphere:br,point:br,lineStart:hi,lineEnd:br,polygonStart:br,polygonEnd:br},Ey=function(t){return Ny.reset(),$_(t,Sy),+Ny},Ay=[null,null],Cy={type:"LineString",coordinates:Ay},zy=function(t,n){return Ay[0]=t,Ay[1]=n,Ey(Cy)},Py={Feature:function(t,n){return _i(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(_i(e[r].geometry,n))return!0;return!1}},Ly={Sphere:function(){return!0},Point:function(t,n){return yi(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(yi(e[r],n))return!0;return!1},LineString:function(t,n){return gi(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(gi(e[r],n))return!0;return!1},Polygon:function(t,n){return mi(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(mi(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(_i(e[r],n))return!0;return!1}},Ry=function(t,n){return(t&&Py.hasOwnProperty(t.type)?Py[t.type]:_i)(t,n)},qy=function(t,n){var e=t[0]*z_,r=t[1]*z_,i=n[0]*z_,o=n[1]*z_,u=q_(r),a=I_(r),c=q_(o),s=I_(o),f=u*q_(e),l=u*I_(e),h=c*q_(i),p=c*I_(i),d=2*mr(B_(xr(o-r)+u*c*xr(i-e))),v=I_(d),_=d?function(t){var n=I_(t*=d)/v,e=I_(d-t)/v,r=e*f+n*h,i=e*l+n*p,o=e*a+n*s;return[R_(i,r)*C_,R_(o,B_(r*r+i*i))*C_]}:function(){return[e*C_,r*C_]};return _.distance=d,_},Uy=function(t){return t},Dy=$v(),Oy=$v(),Fy={point:br,lineStart:br,lineEnd:br,polygonStart:function(){Fy.lineStart=Ni,Fy.lineEnd=Ai},polygonEnd:function(){Fy.lineStart=Fy.lineEnd=Fy.point=br,Dy.add(P_(Oy)),Oy.reset()},result:function(){var t=Dy/2;return Dy.reset(),t}},Iy=1/0,Yy=Iy,By=-Iy,Hy=By,jy={point:Ci,lineStart:br,lineEnd:br,polygonStart:br,polygonEnd:br,result:function(){var t=[[Iy,Yy],[By,Hy]];return By=Hy=-(Yy=Iy=1/0),t}},Xy=0,$y=0,Vy=0,Wy=0,Zy=0,Gy=0,Jy=0,Qy=0,Ky=0,tg={point:zi,lineStart:Pi,lineEnd:qi,polygonStart:function(){tg.lineStart=Ui,tg.lineEnd=Di},polygonEnd:function(){tg.point=zi,tg.lineStart=Pi,tg.lineEnd=qi},result:function(){var t=Ky?[Jy/Ky,Qy/Ky]:Gy?[Wy/Gy,Zy/Gy]:Vy?[Xy/Vy,$y/Vy]:[NaN,NaN];return Xy=$y=Vy=Wy=Zy=Gy=Jy=Qy=Ky=0,t}};Ii.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,A_)}},result:br};var ng,eg,rg,ig,og,ug=$v(),ag={point:br,lineStart:function(){ag.point=Yi},lineEnd:function(){ng&&Bi(eg,rg),ag.point=br},polygonStart:function(){ng=!0},polygonEnd:function(){ng=null},result:function(){var t=+ug;return ug.reset(),t}};Hi.prototype={_radius:4.5,_circle:ji(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._string.push("M",t,",",n),this._point=1;break;case 1:this._string.push("L",t,",",n);break;default:null==this._circle&&(this._circle=ji(this._radius)),this._string.push("M",t,",",n,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}};var cg=function(t,n){function e(t){return t&&("function"==typeof o&&i.pointRadius(+o.apply(this,arguments)),$_(t,r(i))),i.result()}var r,i,o=4.5;return e.area=function(t){return $_(t,r(Fy)),Fy.result()},e.measure=function(t){return $_(t,r(ag)),ag.result()},e.bounds=function(t){return $_(t,r(jy)),jy.result()},e.centroid=function(t){return $_(t,r(tg)),tg.result()},e.projection=function(n){return arguments.length?(r=null==n?(t=null,Uy):(t=n).stream,e):t},e.context=function(t){return arguments.length?(i=null==t?(n=null,new Hi):new Ii(n=t),"function"!=typeof o&&i.pointRadius(o),e):n},e.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(i.pointRadius(+t),+t),e):o},e.projection(t).context(n)},sg=function(t,n,e,r){return function(i,o){function u(n,e){var r=i(n,e);t(n=r[0],e=r[1])&&o.point(n,e)}function a(t,n){var e=i(t,n);_.point(e[0],e[1])}function c(){b.point=a,_.lineStart()}function s(){b.point=u,_.lineEnd()}function f(t,n){v.push([t,n]);var e=i(t,n);m.point(e[0],e[1])}function l(){m.lineStart(),v=[]}function h(){f(v[0][0],v[0][1]),m.lineEnd();var t,n,e,r,i=m.clean(),u=g.result(),a=u.length;if(v.pop(),p.push(v),v=null,a)if(1&i){if(e=u[0],(n=e.length-1)>0){for(x||(o.polygonStart(),x=!0),o.lineStart(),t=0;t<n;++t)o.point((r=e[t])[0],r[1]);o.lineEnd()}}else a>1&&2&i&&u.push(u.pop().concat(u.shift())),d.push(u.filter(Xi))}var p,d,v,_=n(o),y=i.invert(r[0],r[1]),g=yy(),m=n(g),x=!1,b={point:u,lineStart:c,lineEnd:s,polygonStart:function(){b.point=f,b.lineStart=l,b.lineEnd=h,d=[],p=[]},polygonEnd:function(){b.point=u,b.lineStart=c,b.lineEnd=s,d=bf(d);var t=ky(p,y);d.length?(x||(o.polygonStart(),x=!0),xy(d,$i,t,e,o)):t&&(x||(o.polygonStart(),x=!0),o.lineStart(),e(null,null,1,o),o.lineEnd()),x&&(o.polygonEnd(),x=!1),d=p=null},sphere:function(){o.polygonStart(),o.lineStart(),e(null,null,1,o),o.lineEnd(),o.polygonEnd()}};return b}},fg=sg(function(){return!0},Vi,Zi,[-N_,-S_]),lg=function(t,n){function e(e,r,i,o){ai(o,t,n,i,e,r)}function r(t,n){return q_(t)*q_(n)>a}function i(t){var n,e,i,a,f;return{lineStart:function(){a=i=!1,f=1},point:function(l,h){var p,d=[l,h],v=r(l,h),_=c?v?0:u(l,h):v?u(l+(l<0?N_:-N_),h):0;if(!n&&(a=i=v)&&t.lineStart(),v!==i&&(!(p=o(n,d))||my(n,p)||my(d,p))&&(d[0]+=k_,d[1]+=k_,v=r(d[0],d[1])),v!==i)f=0,v?(t.lineStart(),p=o(d,n),t.point(p[0],p[1])):(p=o(n,d),t.point(p[0],p[1]),t.lineEnd()),n=p;else if(s&&n&&c^v){var y;_&e||!(y=o(d,n,!0))||(f=0,c?(t.lineStart(),t.point(y[0][0],y[0][1]),t.point(y[1][0],y[1][1]),t.lineEnd()):(t.point(y[1][0],y[1][1]),t.lineEnd(),t.lineStart(),t.point(y[0][0],y[0][1])))}!v||n&&my(n,d)||t.point(d[0],d[1]),n=d,i=v,e=_},lineEnd:function(){i&&t.lineEnd(),n=null},clean:function(){return f|(a&&i)<<1}}}function o(t,n,e){var r=Cr(t),i=Cr(n),o=[1,0,0],u=Pr(r,i),c=zr(u,u),s=u[0],f=c-s*s;if(!f)return!e&&t;var l=a*c/f,h=-a*s/f,p=Pr(o,u),d=Rr(o,l);Lr(d,Rr(u,h));var v=p,_=zr(d,v),y=zr(v,v),g=_*_-y*(zr(d,d)-1);if(!(g<0)){var m=B_(g),x=Rr(v,(-_-m)/y);if(Lr(x,d),x=Ar(x),!e)return x;var b,w=t[0],M=n[0],T=t[1],k=n[1];M<w&&(b=w,w=M,M=b);var N=M-w,S=P_(N-N_)<k_,E=S||N<k_;if(!S&&k<T&&(b=T,T=k,k=b),E?S?T+k>0^x[1]<(P_(x[0]-w)<k_?T:k):T<=x[1]&&x[1]<=k:N>N_^(w<=x[0]&&x[0]<=M)){var A=Rr(v,(-_+m)/y);return Lr(A,d),[x,Ar(A)]}}}function u(n,e){var r=c?t:N_-t,i=0;return n<-r?i|=1:n>r&&(i|=2),e<-r?i|=4:e>r&&(i|=8),i}var a=q_(t),c=a>0,s=P_(a)>k_;return sg(r,i,e,c?[0,-t]:[-N_,t-N_])},hg=function(t){return{stream:Gi(t)}};Ji.prototype={constructor:Ji,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var pg=16,dg=q_(30*z_),vg=function(t,n){return+n?no(t,n):to(t)},_g=Gi({point:function(t,n){this.stream.point(t*z_,n*z_)}}),yg=function(){return io(uo).scale(155.424).center([0,33.6442])},gg=function(){return yg().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])},mg=function(){function t(t){var n=t[0],e=t[1];return a=null,i.point(n,e),a||(o.point(n,e),a)||(u.point(n,e),a)}function n(){return e=r=null,t}var e,r,i,o,u,a,c=gg(),s=yg().rotate([154,0]).center([-2,58.5]).parallels([55,65]),f=yg().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,n){a=[t,n]}};return t.invert=function(t){var n=c.scale(),e=c.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?s:i>=.166&&i<.234&&r>=-.214&&r<-.115?f:c).invert(t)},t.stream=function(t){return e&&r===t?e:e=ao([c.stream(r=t),s.stream(t),f.stream(t)])},t.precision=function(t){return arguments.length?(c.precision(t),s.precision(t),f.precision(t),n()):c.precision()},t.scale=function(n){return arguments.length?(c.scale(n),s.scale(.35*n),f.scale(n),t.translate(c.translate())):c.scale()},t.translate=function(t){if(!arguments.length)return c.translate();var e=c.scale(),r=+t[0],a=+t[1];return i=c.translate(t).clipExtent([[r-.455*e,a-.238*e],[r+.455*e,a+.238*e]]).stream(l),o=s.translate([r-.307*e,a+.201*e]).clipExtent([[r-.425*e+k_,a+.12*e+k_],[r-.214*e-k_,a+.234*e-k_]]).stream(l),u=f.translate([r-.205*e,a+.212*e]).clipExtent([[r-.214*e+k_,a+.166*e+k_],[r-.115*e-k_,a+.234*e-k_]]).stream(l),n()},t.fitExtent=function(n,e){return Qi(t,n,e)},t.fitSize=function(n,e){return Ki(t,n,e)},t.scale(1070)},xg=co(function(t){return B_(2/(1+t))});xg.invert=so(function(t){return 2*mr(t/2)});var bg=function(){return eo(xg).scale(124.75).clipAngle(179.999)},wg=co(function(t){return(t=gr(t))&&t/I_(t)});wg.invert=so(function(t){return t});var Mg=function(){return eo(wg).scale(79.4188).clipAngle(179.999)};fo.invert=function(t,n){return[t,2*L_(D_(n))-S_]};var Tg=function(){return lo(fo).scale(961/A_)},kg=function(){return io(po).scale(109.5).parallels([30,30])};vo.invert=vo;var Ng=function(){return eo(vo).scale(152.63)},Sg=function(){return io(_o).scale(131.154).center([0,13.9389])};yo.invert=so(L_);var Eg=function(){return eo(yo).scale(144.049).clipAngle(60)},Ag=function(){function t(){return i=o=null,u}var n,e,r,i,o,u,a=1,c=0,s=0,f=1,l=1,h=Uy,p=null,d=Uy;return u={stream:function(t){return i&&o===t?i:i=h(d(o=t))},clipExtent:function(i){return arguments.length?(d=null==i?(p=n=e=r=null,Uy):li(p=+i[0][0],n=+i[0][1],e=+i[1][0],r=+i[1][1]),t()):null==p?null:[[p,n],[e,r]]},scale:function(n){return arguments.length?(h=go((a=+n)*f,a*l,c,s),t()):a},translate:function(n){return arguments.length?(h=go(a*f,a*l,c=+n[0],s=+n[1]),t()):[c,s]},reflectX:function(n){return arguments.length?(h=go(a*(f=n?-1:1),a*l,c,s),t()):f<0},reflectY:function(n){return arguments.length?(h=go(a*f,a*(l=n?-1:1),c,s),t()):l<0},fitExtent:function(t,n){return Qi(u,t,n)},fitSize:function(t,n){return Ki(u,t,n)}}};mo.invert=so(mr);var Cg=function(){return eo(mo).scale(249.5).clipAngle(90+k_)};xo.invert=so(function(t){return 2*L_(t)});var zg=function(){return eo(xo).scale(250).clipAngle(142)};bo.invert=function(t,n){return[-n,2*L_(D_(t))-S_]};var Pg=function(){var t=lo(bo),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):(t=n(),[t[1],-t[0]])},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):(t=e(),[t[0],t[1],t[2]-90])},e([0,0,90]).scale(159.155)},Lg=function(){function t(t){var o,u=0;t.eachAfter(function(t){var e=t.children;e?(t.x=Mo(e),t.y=ko(e)):(t.x=o?u+=n(t,o):0,t.y=0,o=t)});var a=So(t),c=Eo(t),s=a.x-n(a,c)/2,f=c.x+n(c,a)/2;return t.eachAfter(i?function(n){n.x=(n.x-t.x)*e,n.y=(t.y-n.y)*r}:function(n){n.x=(n.x-s)/(f-s)*e,n.y=(1-(t.y?n.y/t.y:1))*r})}var n=wo,e=1,r=1,i=!1;return t.separation=function(e){return arguments.length?(n=e,t):n},t.size=function(n){return arguments.length?(i=!1,e=+n[0],r=+n[1],t):i?null:[e,r]},t.nodeSize=function(n){return arguments.length?(i=!0,e=+n[0],r=+n[1],t):i?[e,r]:null},t},Rg=function(){return this.eachAfter(Ao)},qg=function(t){var n,e,r,i,o=this,u=[o];do{for(n=u.reverse(),u=[];o=n.pop();)if(t(o),e=o.children)for(r=0,i=e.length;r<i;++r)u.push(e[r])}while(u.length);return this},Ug=function(t){for(var n,e,r=this,i=[r];r=i.pop();)if(t(r),n=r.children)for(e=n.length-1;e>=0;--e)i.push(n[e]);return this},Dg=function(t){for(var n,e,r,i=this,o=[i],u=[];i=o.pop();)if(u.push(i),n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e]);for(;i=u.pop();)t(i);return this},Og=function(t){return this.eachAfter(function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e})},Fg=function(t){return this.eachBefore(function(n){n.children&&n.children.sort(t)})},Ig=function(t){for(var n=this,e=Co(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},Yg=function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},Bg=function(){var t=[];return this.each(function(n){t.push(n)}),t},Hg=function(){var t=[];return this.eachBefore(function(n){n.children||t.push(n)}),t},jg=function(){var t=this,n=[];return t.each(function(e){e!==t&&n.push({source:e.parent,target:e})}),n};Uo.prototype=zo.prototype={constructor:Uo,count:Rg,each:qg,eachAfter:Dg,eachBefore:Ug,sum:Og,sort:Fg,path:Ig,ancestors:Yg,descendants:Bg,leaves:Hg,links:jg,copy:Po};var Xg=function(t){for(var n=(t=t.slice()).length,e=null,r=e;n;){var i=new Do(t[n-1]);r=r?r.next=i:e=i,t[void 0]=t[--n]}return{head:e,tail:r}},$g=function(t){return Fo(Xg(t),[])},Vg=function(t){return Vo(t),t},Wg=function(t){return function(){return t}},Zg=function(){function t(t){return t.x=e/2,t.y=r/2,n?t.eachBefore(Qo(n)).eachAfter(Ko(i,.5)).eachBefore(tu(1)):t.eachBefore(Qo(Jo)).eachAfter(Ko(Go,1)).eachAfter(Ko(i,t.r/Math.min(e,r))).eachBefore(tu(Math.min(e,r)/(2*t.r))),t}var n=null,e=1,r=1,i=Go;return t.radius=function(e){return arguments.length?(n=Wo(e),t):n},t.size=function(n){return arguments.length?(e=+n[0],r=+n[1],t):[e,r]},t.padding=function(n){return arguments.length?(i="function"==typeof n?n:Wg(+n),t):i},t},Gg=function(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)},Jg=function(t,n,e,r,i){for(var o,u=t.children,a=-1,c=u.length,s=t.value&&(r-n)/t.value;++a<c;)o=u[a],o.y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*s},Qg=function(){function t(t){var u=t.height+1;return t.x0=t.y0=i,t.x1=e,t.y1=r/u,t.eachBefore(n(r,u)),o&&t.eachBefore(Gg),t}function n(t,n){return function(e){e.children&&Jg(e,e.x0,t*(e.depth+1)/n,e.x1,t*(e.depth+2)/n);var r=e.x0,o=e.y0,u=e.x1-i,a=e.y1-i;u<r&&(r=u=(r+u)/2),a<o&&(o=a=(o+a)/2),e.x0=r,e.y0=o,e.x1=u,e.y1=a}}var e=1,r=1,i=0,o=!1;return t.round=function(n){return arguments.length?(o=!!n,t):o},t.size=function(n){return arguments.length?(e=+n[0],r=+n[1],t):[e,r]},t.padding=function(n){return arguments.length?(i=+n,t):i},t},Kg="$",tm={depth:-1},nm={},em=function(){function t(t){var r,i,o,u,a,c,s,f=t.length,l=new Array(f),h={};for(i=0;i<f;++i)r=t[i],a=l[i]=new Uo(r),null!=(c=n(r,i,t))&&(c+="")&&(s=Kg+(a.id=c),h[s]=s in h?nm:a);for(i=0;i<f;++i)if(a=l[i],null!=(c=e(t[i],i,t))&&(c+="")){if(!(u=h[Kg+c]))throw new Error("missing: "+c);if(u===nm)throw new Error("ambiguous: "+c);u.children?u.children.push(a):u.children=[a],a.parent=u}else{if(o)throw new Error("multiple roots");o=a}if(!o)throw new Error("no root");if(o.parent=tm,o.eachBefore(function(t){t.depth=t.parent.depth+1,--f}).eachBefore(qo),o.parent=null,f>0)throw new Error("cycle");return o}var n=nu,e=eu;return t.id=function(e){return arguments.length?(n=Zo(e),t):n},t.parentId=function(n){return arguments.length?(e=Zo(n),t):e},t};su.prototype=Object.create(Uo.prototype);var rm=function(){function t(t){var r=fu(t);if(r.eachAfter(n),r.parent.m=-r.z,r.eachBefore(e),c)t.eachBefore(i);else{var s=t,f=t,l=t;t.eachBefore(function(t){t.x<s.x&&(s=t),t.x>f.x&&(f=t),t.depth>l.depth&&(l=t)});var h=s===f?1:o(s,f)/2,p=h-s.x,d=u/(f.x+h+p),v=a/(l.depth||1);t.eachBefore(function(t){t.x=(t.x+p)*d,t.y=t.depth*v})}return t}function n(t){var n=t.children,e=t.parent.children,i=t.i?e[t.i-1]:null;if(n){au(t);var u=(n[0].z+n[n.length-1].z)/2;i?(t.z=i.z+o(t._,i._),t.m=t.z-u):t.z=u}else i&&(t.z=i.z+o(t._,i._));t.parent.A=r(t,i,t.parent.A||e[0])}function e(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function r(t,n,e){if(n){for(var r,i=t,u=t,a=n,c=i.parent.children[0],s=i.m,f=u.m,l=a.m,h=c.m;a=ou(a),i=iu(i),a&&i;)c=iu(c),u=ou(u),u.a=t,r=a.z+l-i.z-s+o(a._,i._),r>0&&(uu(cu(a,t,e),t,r),s+=r,f+=r),l+=a.m,s+=i.m,h+=c.m,f+=u.m;a&&!ou(u)&&(u.t=a,u.m+=l-f),i&&!iu(c)&&(c.t=i,c.m+=s-h,e=t)}return e}function i(t){t.x*=u,t.y=t.depth*a}var o=ru,u=1,a=1,c=null;return t.separation=function(n){return arguments.length?(o=n,t):o},t.size=function(n){return arguments.length?(c=!1,u=+n[0],a=+n[1],t):c?null:[u,a]},t.nodeSize=function(n){return arguments.length?(c=!0,u=+n[0],a=+n[1],t):c?[u,a]:null},t},im=function(t,n,e,r,i){for(var o,u=t.children,a=-1,c=u.length,s=t.value&&(i-e)/t.value;++a<c;)o=u[a],o.x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*s},om=(1+Math.sqrt(5))/2,um=function t(n){function e(t,e,r,i,o){lu(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(om),am=function(){function t(t){return t.x0=t.y0=0,t.x1=i,t.y1=o,t.eachBefore(n),u=[0],r&&t.eachBefore(Gg),t}function n(t){var n=u[t.depth],r=t.x0+n,i=t.y0+n,o=t.x1-n,h=t.y1-n;o<r&&(r=o=(r+o)/2),h<i&&(i=h=(i+h)/2),t.x0=r,t.y0=i,t.x1=o,t.y1=h,
+t.children&&(n=u[t.depth+1]=a(t)/2,r+=l(t)-n,i+=c(t)-n,o-=s(t)-n,h-=f(t)-n,o<r&&(r=o=(r+o)/2),h<i&&(i=h=(i+h)/2),e(t,r,i,o,h))}var e=um,r=!1,i=1,o=1,u=[0],a=Go,c=Go,s=Go,f=Go,l=Go;return t.round=function(n){return arguments.length?(r=!!n,t):r},t.size=function(n){return arguments.length?(i=+n[0],o=+n[1],t):[i,o]},t.tile=function(n){return arguments.length?(e=Zo(n),t):e},t.padding=function(n){return arguments.length?t.paddingInner(n).paddingOuter(n):t.paddingInner()},t.paddingInner=function(n){return arguments.length?(a="function"==typeof n?n:Wg(+n),t):a},t.paddingOuter=function(n){return arguments.length?t.paddingTop(n).paddingRight(n).paddingBottom(n).paddingLeft(n):t.paddingTop()},t.paddingTop=function(n){return arguments.length?(c="function"==typeof n?n:Wg(+n),t):c},t.paddingRight=function(n){return arguments.length?(s="function"==typeof n?n:Wg(+n),t):s},t.paddingBottom=function(n){return arguments.length?(f="function"==typeof n?n:Wg(+n),t):f},t.paddingLeft=function(n){return arguments.length?(l="function"==typeof n?n:Wg(+n),t):l},t},cm=function(t,n,e,r,i){function o(t,n,e,r,i,u,a){if(t>=n-1){var s=c[t];return s.x0=r,s.y0=i,s.x1=u,s.y1=a,void 0}for(var l=f[t],h=e/2+l,p=t+1,d=n-1;p<d;){var v=p+d>>>1;f[v]<h?p=v+1:d=v}h-f[p-1]<f[p]-h&&t+1<p&&--p;var _=f[p]-l,y=e-_;if(u-r>a-i){var g=(r*y+u*_)/e;o(t,p,_,r,i,g,a),o(p,n,y,g,i,u,a)}else{var m=(i*y+a*_)/e;o(t,p,_,r,i,u,m),o(p,n,y,r,m,u,a)}}var u,a,c=t.children,s=c.length,f=new Array(s+1);for(f[0]=a=u=0;u<s;++u)f[u+1]=a+=c[u].value;o(0,s,t.value,n,e,r,i)},sm=function(t,n,e,r,i){(1&t.depth?im:Jg)(t,n,e,r,i)},fm=function t(n){function e(t,e,r,i,o){if((u=t._squarify)&&u.ratio===n)for(var u,a,c,s,f,l=-1,h=u.length,p=t.value;++l<h;){for(a=u[l],c=a.children,s=a.value=0,f=c.length;s<f;++s)a.value+=c[s].value;a.dice?Jg(a,e,r,i,r+=(o-r)*a.value/p):im(a,e,r,e+=(i-e)*a.value/p,o),p-=a.value}else t._squarify=u=lu(n,t,e,r,i,o),u.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(om),lm=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},hm=function(t){for(var n,e,r=-1,i=t.length,o=0,u=0,a=t[i-1],c=0;++r<i;)n=a,a=t[r],c+=e=n[0]*a[1]-a[0]*n[1],o+=(n[0]+a[0])*e,u+=(n[1]+a[1])*e;return c*=3,[o/c,u/c]},pm=function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])},dm=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(hu),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=pu(r),u=pu(i),a=u[0]===o[0],c=u[u.length-1]===o[o.length-1],s=[];for(n=o.length-1;n>=0;--n)s.push(t[r[o[n]][2]]);for(n=+a;n<u.length-c;++n)s.push(t[r[u[n]][2]]);return s},vm=function(t,n){for(var e,r,i=t.length,o=t[i-1],u=n[0],a=n[1],c=o[0],s=o[1],f=!1,l=0;l<i;++l)o=t[l],e=o[0],r=o[1],r>a!=s>a&&u<(c-e)*(a-r)/(s-r)+e&&(f=!f),c=e,s=r;return f},_m=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],u=o[0],a=o[1],c=0;++r<i;)n=u,e=a,o=t[r],u=o[0],a=o[1],n-=u,e-=a,c+=Math.sqrt(n*n+e*e);return c},ym=[].slice,gm={};du.prototype=xu.prototype={constructor:du,defer:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("defer after await");if(null!=this._error)return this;var n=ym.call(arguments,1);return n.push(t),++this._waiting,this._tasks.push(n),vu(this),this},abort:function(){return null==this._error&&gu(this,new Error("abort")),this},await:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=function(n,e){t.apply(null,[n].concat(e))},mu(this),this},awaitAll:function(t){if("function"!=typeof t)throw new Error("invalid callback");if(this._call)throw new Error("multiple await");return this._call=t,mu(this),this}};var mm=function(){return Math.random()},xm=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(mm),bm=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(mm),wm=function t(n){function e(){var t=bm.source(n).apply(this,arguments);return function(){return Math.exp(t())}}return e.source=t,e}(mm),Mm=function t(n){function e(t){return function(){for(var e=0,r=0;r<t;++r)e+=n();return e}}return e.source=t,e}(mm),Tm=function t(n){function e(t){var e=Mm.source(n)(t);return function(){return e()/t}}return e.source=t,e}(mm),km=function t(n){function e(t){return function(){return-Math.log(1-n())/t}}return e.source=t,e}(mm),Nm=function(t,n){function e(t){var n,e=s.status;if(!e&&wu(s)||e>=200&&e<300||304===e){if(o)try{n=o.call(r,s)}catch(t){return void a.call("error",r,t)}else n=s;a.call("load",r,n)}else a.call("error",r,t)}var r,i,o,u,a=v("beforesend","progress","load","error"),c=He(),s=new XMLHttpRequest,f=null,l=null,h=0;if("undefined"==typeof XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(t)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=s.ontimeout=e:s.onreadystatechange=function(t){s.readyState>3&&e(t)},s.onprogress=function(t){a.call("progress",r,t)},r={header:function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?c.get(t):(null==n?c.remove(t):c.set(t,n+""),r)},mimeType:function(t){return arguments.length?(i=null==t?null:t+"",r):i},responseType:function(t){return arguments.length?(u=t,r):u},timeout:function(t){return arguments.length?(h=+t,r):h},user:function(t){return arguments.length<1?f:(f=null==t?null:t+"",r)},password:function(t){return arguments.length<1?l:(l=null==t?null:t+"",r)},response:function(t){return o=t,r},get:function(t,n){return r.send("GET",t,n)},post:function(t,n){return r.send("POST",t,n)},send:function(n,e,o){return s.open(n,t,!0,f,l),null==i||c.has("accept")||c.set("accept",i+",*/*"),s.setRequestHeader&&c.each(function(t,n){s.setRequestHeader(n,t)}),null!=i&&s.overrideMimeType&&s.overrideMimeType(i),null!=u&&(s.responseType=u),h>0&&(s.timeout=h),null==o&&"function"==typeof e&&(o=e,e=null),null!=o&&1===o.length&&(o=bu(o)),null!=o&&r.on("error",o).on("load",function(t){o(null,t)}),a.call("beforesend",r,s),s.send(null==e?null:e),r},abort:function(){return s.abort(),r},on:function(){var t=a.on.apply(a,arguments);return t===a?r:t}},null!=n){if("function"!=typeof n)throw new Error("invalid callback: "+n);return r.get(n)}return r},Sm=function(t,n){return function(e,r){var i=Nm(e).mimeType(t).response(n);if(null!=r){if("function"!=typeof r)throw new Error("invalid callback: "+r);return i.get(r)}return i}},Em=Sm("text/html",function(t){return document.createRange().createContextualFragment(t.responseText)}),Am=Sm("application/json",function(t){return JSON.parse(t.responseText)}),Cm=Sm("text/plain",function(t){return t.responseText}),zm=Sm("application/xml",function(t){var n=t.responseXML;if(!n)throw new Error("parse error");return n}),Pm=function(t,n){return function(e,r,i){arguments.length<3&&(i=r,r=null);var o=Nm(e).mimeType(t);return o.row=function(t){return arguments.length?o.response(Mu(n,r=t)):r},o.row(r),i?o.get(i):o}},Lm=Pm("text/csv",Zd),Rm=Pm("text/tab-separated-values",tv),qm=Array.prototype,Um=qm.map,Dm=qm.slice,Om={name:"implicit"},Fm=function(t){return function(){return t}},Im=function(t){return+t},Ym=[0,1],Bm=function(n,e,r){var o,u=n[0],a=n[n.length-1],c=i(u,a,null==e?10:e);switch(r=pr(null==r?",f":r),r.type){case"s":var s=Math.max(Math.abs(u),Math.abs(a));return null!=r.precision||isNaN(o=jv(c,s))||(r.precision=o),t.formatPrefix(r,s);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(o=Xv(c,Math.max(Math.abs(u),Math.abs(a))))||(r.precision=o-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(o=Hv(c))||(r.precision=o-2*("%"===r.type))}return t.format(r)},Hm=function(t,n){t=t.slice();var e,r=0,i=t.length-1,o=t[r],u=t[i];return u<o&&(e=r,r=i,i=e,e=o,o=u,u=e),t[r]=n.floor(o),t[i]=n.ceil(u),t},jm=new Date,Xm=new Date,$m=Ju(function(){},function(t,n){t.setTime(+t+n)},function(t,n){return n-t});$m.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Ju(function(n){n.setTime(Math.floor(n/t)*t)},function(n,e){n.setTime(+n+e*t)},function(n,e){return(e-n)/t}):$m:null};var Vm=$m.range,Wm=6e4,Zm=6048e5,Gm=Ju(function(t){t.setTime(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(+t+1e3*n)},function(t,n){return(n-t)/1e3},function(t){return t.getUTCSeconds()}),Jm=Gm.range,Qm=Ju(function(t){t.setTime(Math.floor(t/Wm)*Wm)},function(t,n){t.setTime(+t+n*Wm)},function(t,n){return(n-t)/Wm},function(t){return t.getMinutes()}),Km=Qm.range,tx=Ju(function(t){var n=t.getTimezoneOffset()*Wm%36e5;n<0&&(n+=36e5),t.setTime(36e5*Math.floor((+t-n)/36e5)+n)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getHours()}),nx=tx.range,ex=Ju(function(t){t.setHours(0,0,0,0)},function(t,n){t.setDate(t.getDate()+n)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Wm)/864e5},function(t){return t.getDate()-1}),rx=ex.range,ix=Qu(0),ox=Qu(1),ux=Qu(2),ax=Qu(3),cx=Qu(4),sx=Qu(5),fx=Qu(6),lx=ix.range,hx=ox.range,px=ux.range,dx=ax.range,vx=cx.range,_x=sx.range,yx=fx.range,gx=Ju(function(t){t.setDate(1),t.setHours(0,0,0,0)},function(t,n){t.setMonth(t.getMonth()+n)},function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())},function(t){return t.getMonth()}),mx=gx.range,xx=Ju(function(t){t.setMonth(0,1),t.setHours(0,0,0,0)},function(t,n){t.setFullYear(t.getFullYear()+n)},function(t,n){return n.getFullYear()-t.getFullYear()},function(t){return t.getFullYear()});xx.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ju(function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)},function(n,e){n.setFullYear(n.getFullYear()+e*t)}):null};var bx=xx.range,wx=Ju(function(t){t.setUTCSeconds(0,0)},function(t,n){t.setTime(+t+n*Wm)},function(t,n){return(n-t)/Wm},function(t){return t.getUTCMinutes()}),Mx=wx.range,Tx=Ju(function(t){t.setUTCMinutes(0,0,0)},function(t,n){t.setTime(+t+36e5*n)},function(t,n){return(n-t)/36e5},function(t){return t.getUTCHours()}),kx=Tx.range,Nx=Ju(function(t){t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCDate(t.getUTCDate()+n)},function(t,n){return(n-t)/864e5},function(t){return t.getUTCDate()-1}),Sx=Nx.range,Ex=Ku(0),Ax=Ku(1),Cx=Ku(2),zx=Ku(3),Px=Ku(4),Lx=Ku(5),Rx=Ku(6),qx=Ex.range,Ux=Ax.range,Dx=Cx.range,Ox=zx.range,Fx=Px.range,Ix=Lx.range,Yx=Rx.range,Bx=Ju(function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCMonth(t.getUTCMonth()+n)},function(t,n){return n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())},function(t){return t.getUTCMonth()}),Hx=Bx.range,jx=Ju(function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n)},function(t,n){return n.getUTCFullYear()-t.getUTCFullYear()},function(t){return t.getUTCFullYear()});jx.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Ju(function(n){n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},function(n,e){n.setUTCFullYear(n.getUTCFullYear()+e*t)}):null};var Xx,$x=jx.range,Vx={"-":"",_:" ",0:"0"},Wx=/^\s*\d+/,Zx=/^%/,Gx=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;Ja({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Jx=Date.prototype.toISOString?Qa:t.utcFormat("%Y-%m-%dT%H:%M:%S.%LZ"),Qx=+new Date("2000-01-01T00:00:00.000Z")?Ka:t.utcParse("%Y-%m-%dT%H:%M:%S.%LZ"),Kx=1e3,tb=60*Kx,nb=60*tb,eb=24*nb,rb=7*eb,ib=30*eb,ob=365*eb,ub=function(){return ec(xx,gx,ix,ex,tx,Qm,Gm,$m,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)])},ab=function(){return ec(jx,Bx,Ex,Nx,Tx,wx,Gm,$m,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)])},cb=function(t){return t.match(/.{6}/g).map(function(t){return"#"+t})},sb=cb("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),fb=cb("393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6"),lb=cb("3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9"),hb=cb("1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5"),pb=Zh(Wt(300,.5,0),Wt(-240,.5,1)),db=Zh(Wt(-100,.75,.35),Wt(80,1.5,.8)),vb=Zh(Wt(260,.75,.35),Wt(80,1.5,.8)),_b=Wt(),yb=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return _b.h=360*t-100,_b.s=1.5-1.5*n,_b.l=.8-.9*n,_b+""},gb=rc(cb("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),mb=rc(cb("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),xb=rc(cb("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),bb=rc(cb("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921")),wb=function(t){return function(){return t}},Mb=Math.abs,Tb=Math.atan2,kb=Math.cos,Nb=Math.max,Sb=Math.min,Eb=Math.sin,Ab=Math.sqrt,Cb=1e-12,zb=Math.PI,Pb=zb/2,Lb=2*zb,Rb=function(){function t(){var t,s,f=+n.apply(this,arguments),l=+e.apply(this,arguments),h=o.apply(this,arguments)-Pb,p=u.apply(this,arguments)-Pb,d=Mb(p-h),v=p>h;if(c||(c=t=Ue()),l<f&&(s=l,l=f,f=s),l>Cb)if(d>Lb-Cb)c.moveTo(l*kb(h),l*Eb(h)),c.arc(0,0,l,h,p,!v),f>Cb&&(c.moveTo(f*kb(p),f*Eb(p)),c.arc(0,0,f,p,h,v));else{var _,y,g=h,m=p,x=h,b=p,w=d,M=d,T=a.apply(this,arguments)/2,k=T>Cb&&(i?+i.apply(this,arguments):Ab(f*f+l*l)),N=Sb(Mb(l-f)/2,+r.apply(this,arguments)),S=N,E=N;if(k>Cb){var A=uc(k/f*Eb(T)),C=uc(k/l*Eb(T));(w-=2*A)>Cb?(A*=v?1:-1,x+=A,b-=A):(w=0,x=b=(h+p)/2),(M-=2*C)>Cb?(C*=v?1:-1,g+=C,m-=C):(M=0,g=m=(h+p)/2)}var z=l*kb(g),P=l*Eb(g),L=f*kb(b),R=f*Eb(b);if(N>Cb){var q=l*kb(m),U=l*Eb(m),D=f*kb(x),O=f*Eb(x);if(d<zb){var F=w>Cb?hc(z,P,D,O,q,U,L,R):[L,R],I=z-F[0],Y=P-F[1],B=q-F[0],H=U-F[1],j=1/Eb(oc((I*B+Y*H)/(Ab(I*I+Y*Y)*Ab(B*B+H*H)))/2),X=Ab(F[0]*F[0]+F[1]*F[1]);S=Sb(N,(f-X)/(j-1)),E=Sb(N,(l-X)/(j+1))}}M>Cb?E>Cb?(_=pc(D,O,z,P,l,E,v),y=pc(q,U,L,R,l,E,v),c.moveTo(_.cx+_.x01,_.cy+_.y01),E<N?c.arc(_.cx,_.cy,E,Tb(_.y01,_.x01),Tb(y.y01,y.x01),!v):(c.arc(_.cx,_.cy,E,Tb(_.y01,_.x01),Tb(_.y11,_.x11),!v),c.arc(0,0,l,Tb(_.cy+_.y11,_.cx+_.x11),Tb(y.cy+y.y11,y.cx+y.x11),!v),c.arc(y.cx,y.cy,E,Tb(y.y11,y.x11),Tb(y.y01,y.x01),!v))):(c.moveTo(z,P),c.arc(0,0,l,g,m,!v)):c.moveTo(z,P),f>Cb&&w>Cb?S>Cb?(_=pc(L,R,q,U,f,-S,v),y=pc(z,P,D,O,f,-S,v),c.lineTo(_.cx+_.x01,_.cy+_.y01),S<N?c.arc(_.cx,_.cy,S,Tb(_.y01,_.x01),Tb(y.y01,y.x01),!v):(c.arc(_.cx,_.cy,S,Tb(_.y01,_.x01),Tb(_.y11,_.x11),!v),c.arc(0,0,f,Tb(_.cy+_.y11,_.cx+_.x11),Tb(y.cy+y.y11,y.cx+y.x11),v),c.arc(y.cx,y.cy,S,Tb(y.y11,y.x11),Tb(y.y01,y.x01),!v))):c.arc(0,0,f,b,x,v):c.lineTo(L,R)}else c.moveTo(0,0);if(c.closePath(),t)return c=null,t+""||null}var n=ac,e=cc,r=wb(0),i=null,o=sc,u=fc,a=lc,c=null;return t.centroid=function(){var t=(+n.apply(this,arguments)+ +e.apply(this,arguments))/2,r=(+o.apply(this,arguments)+ +u.apply(this,arguments))/2-zb/2;return[kb(r)*t,Eb(r)*t]},t.innerRadius=function(e){return arguments.length?(n="function"==typeof e?e:wb(+e),t):n},t.outerRadius=function(n){return arguments.length?(e="function"==typeof n?n:wb(+n),t):e},t.cornerRadius=function(n){return arguments.length?(r="function"==typeof n?n:wb(+n),t):r},t.padRadius=function(n){return arguments.length?(i=null==n?null:"function"==typeof n?n:wb(+n),t):i},t.startAngle=function(n){return arguments.length?(o="function"==typeof n?n:wb(+n),t):o},t.endAngle=function(n){return arguments.length?(u="function"==typeof n?n:wb(+n),t):u},t.padAngle=function(n){return arguments.length?(a="function"==typeof n?n:wb(+n),t):a},t.context=function(n){return arguments.length?(c=null==n?null:n,t):c},t};dc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var qb=function(t){return new dc(t)},Ub=function(){function t(t){var a,c,s,f=t.length,l=!1;for(null==i&&(u=o(s=Ue())),a=0;a<=f;++a)!(a<f&&r(c=t[a],a,t))===l&&((l=!l)?u.lineStart():u.lineEnd()),l&&u.point(+n(c,a,t),+e(c,a,t));if(s)return u=null,s+""||null}var n=vc,e=_c,r=wb(!0),i=null,o=qb,u=null;return t.x=function(e){return arguments.length?(n="function"==typeof e?e:wb(+e),t):n},t.y=function(n){return arguments.length?(e="function"==typeof n?n:wb(+n),t):e},t.defined=function(n){return arguments.length?(r="function"==typeof n?n:wb(!!n),t):r},t.curve=function(n){return arguments.length?(o=n,null!=i&&(u=o(i)),t):o},t.context=function(n){return arguments.length?(null==n?i=u=null:u=o(i=n),t):i},t},Db=function(){function t(t){var n,f,l,h,p,d=t.length,v=!1,_=new Array(d),y=new Array(d);for(null==a&&(s=c(p=Ue())),n=0;n<=d;++n){if(!(n<d&&u(h=t[n],n,t))===v)if(v=!v)f=n,s.areaStart(),s.lineStart();else{for(s.lineEnd(),s.lineStart(),l=n-1;l>=f;--l)s.point(_[l],y[l]);s.lineEnd(),s.areaEnd()}v&&(_[n]=+e(h,n,t),y[n]=+i(h,n,t),s.point(r?+r(h,n,t):_[n],o?+o(h,n,t):y[n]))}if(p)return s=null,p+""||null}function n(){return Ub().defined(u).curve(c).context(a)}var e=vc,r=null,i=wb(0),o=_c,u=wb(!0),a=null,c=qb,s=null;return t.x=function(n){return arguments.length?(e="function"==typeof n?n:wb(+n),r=null,t):e},t.x0=function(n){return arguments.length?(e="function"==typeof n?n:wb(+n),t):e},t.x1=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:wb(+n),t):r},t.y=function(n){return arguments.length?(i="function"==typeof n?n:wb(+n),o=null,t):i},t.y0=function(n){return arguments.length?(i="function"==typeof n?n:wb(+n),t):i},t.y1=function(n){return arguments.length?(o=null==n?null:"function"==typeof n?n:wb(+n),t):o},t.lineX0=t.lineY0=function(){return n().x(e).y(i)},t.lineY1=function(){return n().x(e).y(o)},t.lineX1=function(){return n().x(r).y(i)},t.defined=function(n){return arguments.length?(u="function"==typeof n?n:wb(!!n),t):u},t.curve=function(n){return arguments.length?(c=n,null!=a&&(s=c(a)),t):c},t.context=function(n){return arguments.length?(null==n?a=s=null:s=c(a=n),t):a},t},Ob=function(t,n){return n<t?-1:n>t?1:n>=t?0:NaN},Fb=function(t){return t},Ib=function(){function t(t){var a,c,s,f,l,h=t.length,p=0,d=new Array(h),v=new Array(h),_=+i.apply(this,arguments),y=Math.min(Lb,Math.max(-Lb,o.apply(this,arguments)-_)),g=Math.min(Math.abs(y)/h,u.apply(this,arguments)),m=g*(y<0?-1:1);for(a=0;a<h;++a)(l=v[d[a]=a]=+n(t[a],a,t))>0&&(p+=l);for(null!=e?d.sort(function(t,n){return e(v[t],v[n])}):null!=r&&d.sort(function(n,e){return r(t[n],t[e])}),a=0,s=p?(y-h*m)/p:0;a<h;++a,_=f)c=d[a],l=v[c],f=_+(l>0?l*s:0)+m,v[c]={data:t[c],index:a,value:l,startAngle:_,endAngle:f,padAngle:g};return v}var n=Fb,e=Ob,r=null,i=wb(0),o=wb(Lb),u=wb(0);return t.value=function(e){return arguments.length?(n="function"==typeof e?e:wb(+e),t):n},t.sortValues=function(n){return arguments.length?(e=n,r=null,t):e},t.sort=function(n){return arguments.length?(r=n,e=null,t):r},t.startAngle=function(n){return arguments.length?(i="function"==typeof n?n:wb(+n),t):i},t.endAngle=function(n){return arguments.length?(o="function"==typeof n?n:wb(+n),t):o},t.padAngle=function(n){return arguments.length?(u="function"==typeof n?n:wb(+n),t):u},t},Yb=gc(qb);yc.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};var Bb=function(){return mc(Ub().curve(Yb))},Hb=function(){var t=Db().curve(Yb),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return mc(e())},delete t.lineX0,t.lineEndAngle=function(){return mc(r())},delete t.lineX1,t.lineInnerRadius=function(){return mc(i())},delete t.lineY0,t.lineOuterRadius=function(){return mc(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(gc(t)):n()._curve},t},jb=Array.prototype.slice,Xb=function(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]},$b={draw:function(t,n){var e=Math.sqrt(n/zb);t.moveTo(e,0),t.arc(0,0,e,0,Lb)}},Vb={draw:function(t,n){var e=Math.sqrt(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}},Wb=Math.sqrt(1/3),Zb=2*Wb,Gb={draw:function(t,n){var e=Math.sqrt(n/Zb),r=e*Wb;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},Jb=Math.sin(zb/10)/Math.sin(7*zb/10),Qb=Math.sin(Lb/10)*Jb,Kb=-Math.cos(Lb/10)*Jb,tw={draw:function(t,n){var e=Math.sqrt(.8908130915292852*n),r=Qb*e,i=Kb*e;t.moveTo(0,-e),t.lineTo(r,i);for(var o=1;o<5;++o){var u=Lb*o/5,a=Math.cos(u),c=Math.sin(u);t.lineTo(c*e,-a*e),t.lineTo(a*r-c*i,c*r+a*i)}t.closePath()}},nw={draw:function(t,n){var e=Math.sqrt(n),r=-e/2;t.rect(r,r,e,e)}},ew=Math.sqrt(3),rw={draw:function(t,n){var e=-Math.sqrt(n/(3*ew));t.moveTo(0,2*e),t.lineTo(-ew*e,-e),t.lineTo(ew*e,-e),t.closePath()}},iw=-.5,ow=Math.sqrt(3)/2,uw=1/Math.sqrt(12),aw=3*(uw/2+1),cw={draw:function(t,n){var e=Math.sqrt(n/aw),r=e/2,i=e*uw,o=r,u=e*uw+e,a=-o,c=u;t.moveTo(r,i),t.lineTo(o,u),t.lineTo(a,c),t.lineTo(iw*r-ow*i,ow*r+iw*i),t.lineTo(iw*o-ow*u,ow*o+iw*u),t.lineTo(iw*a-ow*c,ow*a+iw*c),t.lineTo(iw*r+ow*i,iw*i-ow*r),t.lineTo(iw*o+ow*u,iw*u-ow*o),t.lineTo(iw*a+ow*c,iw*c-ow*a),t.closePath()}},sw=[$b,Vb,Gb,nw,tw,rw,cw],fw=function(){function t(){var t;if(r||(r=t=Ue()),n.apply(this,arguments).draw(r,+e.apply(this,arguments)),t)return r=null,t+""||null}var n=wb($b),e=wb(64),r=null;return t.type=function(e){return arguments.length?(n="function"==typeof e?e:wb(e),t):n},t.size=function(n){return arguments.length?(e="function"==typeof n?n:wb(+n),t):e},t.context=function(n){return arguments.length?(r=null==n?null:n,t):r},t},lw=function(){};Cc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ac(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ac(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};var hw=function(t){return new Cc(t)};zc.prototype={areaStart:lw,areaEnd:lw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Ac(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};var pw=function(t){return new zc(t)};Pc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Ac(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}};var dw=function(t){return new Pc(t)};Lc.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],u=t[e]-i,a=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*u),this._beta*n[c]+(1-this._beta)*(o+r*a));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var vw=function t(n){function e(t){return 1===n?new Cc(t):new Lc(t,n)}return e.beta=function(n){return t(+n)},e}(.85);qc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Rc(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Rc(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,
+this._y1=this._y2,this._y2=n}};var _w=function t(n){function e(t){return new qc(t,n)}return e.tension=function(n){return t(+n)},e}(0);Uc.prototype={areaStart:lw,areaEnd:lw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Rc(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var yw=function t(n){function e(t){return new Uc(t,n)}return e.tension=function(n){return t(+n)},e}(0);Dc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Rc(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var gw=function t(n){function e(t){return new Dc(t,n)}return e.tension=function(n){return t(+n)},e}(0);Fc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Oc(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var mw=function t(n){function e(t){return n?new Fc(t,n):new qc(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Ic.prototype={areaStart:lw,areaEnd:lw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Oc(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var xw=function t(n){function e(t){return n?new Ic(t,n):new Uc(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Yc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Oc(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var bw=function t(n){function e(t){return n?new Yc(t,n):new Dc(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);Bc.prototype={areaStart:lw,areaEnd:lw,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}};var ww=function(t){return new Bc(t)};Vc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:$c(this,this._t0,Xc(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(t=+t,n=+n,t!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,$c(this,Xc(this,e=jc(this,t,n)),e);break;default:$c(this,this._t0,e=jc(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(Wc.prototype=Object.create(Vc.prototype)).point=function(t,n){Vc.prototype.point.call(this,n,t)},Zc.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},Qc.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=Kc(t),i=Kc(n),o=0,u=1;u<e;++o,++u)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[u],n[u]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Mw=function(t){return new Qc(t)};ts.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var Tw=function(t){return new ts(t,.5)},kw=function(t,n){if((i=t.length)>1)for(var e,r,i,o=1,u=t[n[0]],a=u.length;o<i;++o)for(r=u,u=t[n[o]],e=0;e<a;++e)u[e][1]+=u[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]},Nw=function(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e},Sw=function(){function t(t){var o,u,a=n.apply(this,arguments),c=t.length,s=a.length,f=new Array(s);for(o=0;o<s;++o){for(var l,h=a[o],p=f[o]=new Array(c),d=0;d<c;++d)p[d]=l=[0,+i(t[d],h,d,t)],l.data=t[d];p.key=h}for(o=0,u=e(f);o<s;++o)f[u[o]].index=o;return r(f,u),f}var n=wb([]),e=Nw,r=kw,i=rs;return t.keys=function(e){return arguments.length?(n="function"==typeof e?e:wb(jb.call(e)),t):n},t.value=function(n){return arguments.length?(i="function"==typeof n?n:wb(+n),t):i},t.order=function(n){return arguments.length?(e=null==n?Nw:"function"==typeof n?n:wb(jb.call(n)),t):e},t.offset=function(n){return arguments.length?(r=null==n?kw:n,t):r},t},Ew=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,u=t[0].length;o<u;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}kw(t,n)}},Aw=function(t,n){if((a=t.length)>1)for(var e,r,i,o,u,a,c=0,s=t[n[0]].length;c<s;++c)for(o=u=0,e=0;e<a;++e)(i=(r=t[n[e]][c])[1]-r[0])>=0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=u,r[0]=u+=i):r[0]=o},Cw=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var u=0,a=0;u<e;++u)a+=t[u][r][1]||0;i[r][1]+=i[r][0]=-a/2}kw(t,n)}},zw=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,u=1;u<r;++u){for(var a=0,c=0,s=0;a<i;++a){for(var f=t[n[a]],l=f[u][1]||0,h=f[u-1][1]||0,p=(l-h)/2,d=0;d<a;++d){var v=t[n[d]];p+=(v[u][1]||0)-(v[u-1][1]||0)}c+=l,s+=p*l}e[u-1][1]+=e[u-1][0]=o,c&&(o-=s/c)}e[u-1][1]+=e[u-1][0]=o,kw(t,n)}},Pw=function(t){var n=t.map(is);return Nw(t).sort(function(t,e){return n[t]-n[e]})},Lw=function(t){return Pw(t).reverse()},Rw=function(t){var n,e,r=t.length,i=t.map(is),o=Nw(t).sort(function(t,n){return i[n]-i[t]}),u=0,a=0,c=[],s=[];for(n=0;n<r;++n)e=o[n],u<a?(u+=i[e],c.push(e)):(a+=i[e],s.push(e));return s.reverse().concat(c)},qw=function(t){return Nw(t).reverse()},Uw=function(t){return function(){return t}};as.prototype={constructor:as,insert:function(t,n){var e,r,i;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=ls(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)r=e.U,e===r.L?(i=r.R,i&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.R&&(ss(this,e),t=e,e=t.U),e.C=!1,r.C=!0,fs(this,r))):(i=r.L,i&&i.C?(e.C=i.C=!1,r.C=!0,t=r):(t===e.L&&(fs(this,e),t=e,e=t.U),e.C=!1,r.C=!0,ss(this,r))),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,r,i=t.U,o=t.L,u=t.R;if(e=o?u?ls(u):o:u,i?i.L===t?i.L=e:i.R=e:this._=e,o&&u?(r=e.C,e.C=t.C,e.L=o,o.U=e,e!==u?(i=e.U,e.U=t.U,t=e.R,i.L=t,e.R=u,u.U=e):(e.U=i,i=e,t=e.R)):(r=t.C,t=e),t&&(t.U=i),!r){if(t&&t.C)return void(t.C=!1);do{if(t===this._)break;if(t===i.L){if(n=i.R,n.C&&(n.C=!1,i.C=!0,ss(this,i),n=i.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,fs(this,n),n=i.R),n.C=i.C,i.C=n.R.C=!1,ss(this,i),t=this._;break}}else if(n=i.L,n.C&&(n.C=!1,i.C=!0,fs(this,i),n=i.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,ss(this,n),n=i.L),n.C=i.C,i.C=n.L.C=!1,fs(this,i),t=this._;break}n.C=!0,t=i,i=i.U}while(!t.C);t&&(t.C=!1)}}};var Dw,Ow,Fw,Iw,Yw,Bw=[],Hw=[],jw=1e-6,Xw=1e-12;Us.prototype={constructor:Us,polygons:function(){var t=this.edges;return this.cells.map(function(n){var e=n.halfedges.map(function(e){return xs(n,t[e])});return e.data=n.site.data,e})},triangles:function(){var t=[],n=this.edges;return this.cells.forEach(function(e,r){if(o=(i=e.halfedges).length)for(var i,o,u,a=e.site,c=-1,s=n[i[o-1]],f=s.left===a?s.right:s.left;++c<o;)u=f,s=n[i[c]],f=s.left===a?s.right:s.left,u&&f&&r<u.index&&r<f.index&&Rs(a,u,f)<0&&t.push([a.data,u.data,f.data])}),t},links:function(){return this.edges.filter(function(t){return t.right}).map(function(t){return{source:t.left.data,target:t.right.data}})},find:function(t,n,e){for(var r,i,o=this,u=o._found||0,a=o.cells.length;!(i=o.cells[u]);)if(++u>=a)return null;var c=t-i.site[0],s=n-i.site[1],f=c*c+s*s;do{i=o.cells[r=u],u=null,i.halfedges.forEach(function(e){var r=o.edges[e],a=r.left;if(a!==i.site&&a||(a=r.right)){var c=t-a[0],s=n-a[1],l=c*c+s*s;l<f&&(f=l,u=a.index)}})}while(null!==u);return o._found=r,null==e||f<=e*e?i.site:null}};var $w=function(){function t(t){return new Us(t.map(function(r,i){var o=[Math.round(n(r,i,t)/jw)*jw,Math.round(e(r,i,t)/jw)*jw];return o.index=i,o.data=r,o}),r)}var n=os,e=us,r=null;return t.polygons=function(n){return t(n).polygons()},t.links=function(n){return t(n).links()},t.triangles=function(n){return t(n).triangles()},t.x=function(e){return arguments.length?(n="function"==typeof e?e:Uw(+e),t):n},t.y=function(n){return arguments.length?(e="function"==typeof n?n:Uw(+n),t):e},t.extent=function(n){return arguments.length?(r=null==n?null:[[+n[0][0],+n[0][1]],[+n[1][0],+n[1][1]]],t):r&&[[r[0][0],r[0][1]],[r[1][0],r[1][1]]]},t.size=function(n){return arguments.length?(r=null==n?null:[[0,0],[+n[0],+n[1]]],t):r&&[r[1][0]-r[0][0],r[1][1]-r[0][1]]},t},Vw=function(t){return function(){return t}};Os.prototype={constructor:Os,scale:function(t){return 1===t?this:new Os(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new Os(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Ww=new Os(1,0,0);Fs.prototype=Os.prototype;var Zw=function(){t.event.preventDefault(),t.event.stopImmediatePropagation()},Gw=function(){function n(t){t.on("wheel.zoom",s).on("mousedown.zoom",f).on("dblclick.zoom",l).on("touchstart.zoom",h).on("touchmove.zoom",p).on("touchend.zoom touchcancel.zoom",d).style("-webkit-tap-highlight-color","rgba(0,0,0,0)").property("__zoom",Hs)}function e(t,n){return n=Math.max(x,Math.min(b,n)),n===t.k?t:new Os(n,t.x,t.y)}function r(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new Os(t.k,r,i)}function i(t,n){var e=t.invertX(n[0][0])-w,r=t.invertX(n[1][0])-M,i=t.invertY(n[0][1])-T,o=t.invertY(n[1][1])-k;return t.translate(r>e?(e+r)/2:Math.min(0,e)||Math.max(0,r),o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o))}function o(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function u(t,n,e){t.on("start.zoom",function(){a(this,arguments).start()}).on("interrupt.zoom end.zoom",function(){a(this,arguments).end()}).tween("zoom",function(){var t=this,r=arguments,i=a(t,r),u=m.apply(t,r),c=e||o(u),s=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),f=t.__zoom,l="function"==typeof n?n.apply(t,r):n,h=S(f.invert(c).concat(s/f.k),l.invert(c).concat(s/l.k));return function(t){if(1===t)t=l;else{var n=h(t),e=s/n[2];t=new Os(e,c[0]-n[0]*e,c[1]-n[1]*e)}i.zoom(null,t)}})}function a(t,n){for(var e,r=0,i=E.length;r<i;++r)if((e=E[r]).that===t)return e;return new c(t,n)}function c(t,n){this.that=t,this.args=n,this.index=-1,this.active=0,this.extent=m.apply(t,n)}function s(){function n(){o.wheel=null,o.end()}if(g.apply(this,arguments)){var o=a(this,arguments),u=this.__zoom,c=Math.max(x,Math.min(b,u.k*Math.pow(2,-t.event.deltaY*(t.event.deltaMode?120:1)/500))),s=Gf(this);if(o.wheel)o.mouse[0][0]===s[0]&&o.mouse[0][1]===s[1]||(o.mouse[1]=u.invert(o.mouse[0]=s)),clearTimeout(o.wheel);else{if(u.k===c)return;o.mouse=[s,u.invert(s)],gp(this),o.start()}Zw(),o.wheel=setTimeout(n,P),o.zoom("mouse",i(r(e(u,c),o.mouse[0],o.mouse[1]),o.extent))}}function f(){function n(){if(Zw(),!o.moved){var n=t.event.clientX-s,e=t.event.clientY-f;o.moved=n*n+e*e>L}o.zoom("mouse",i(r(o.that.__zoom,o.mouse[0]=Gf(o.that),o.mouse[1]),o.extent))}function e(){u.on("mousemove.zoom mouseup.zoom",null),mt(t.event.view,o.moved),Zw(),o.end()}if(!y&&g.apply(this,arguments)){var o=a(this,arguments),u=Pl(t.event.view).on("mousemove.zoom",n,!0).on("mouseup.zoom",e,!0),c=Gf(this),s=t.event.clientX,f=t.event.clientY;Dl(t.event.view),Is(),o.mouse=[c,this.__zoom.invert(c)],gp(this),o.start()}}function l(){if(g.apply(this,arguments)){var o=this.__zoom,a=Gf(this),c=o.invert(a),s=o.k*(t.event.shiftKey?.5:2),f=i(r(e(o,s),a,c),m.apply(this,arguments));Zw(),N>0?Pl(this).transition().duration(N).call(u,f,a):Pl(this).call(n.transform,f)}}function h(){if(g.apply(this,arguments)){var n,e,r,i,o=a(this,arguments),u=t.event.changedTouches,c=u.length;for(Is(),e=0;e<c;++e)r=u[e],i=Rl(this,u,r.identifier),i=[i,this.__zoom.invert(i),r.identifier],o.touch0?o.touch1||(o.touch1=i):(o.touch0=i,n=!0);if(_&&(_=clearTimeout(_),!o.touch1))return o.end(),void((i=Pl(this).on("dblclick.zoom"))&&i.apply(this,arguments));n&&(_=setTimeout(function(){_=null},z),gp(this),o.start())}}function p(){var n,o,u,c,s=a(this,arguments),f=t.event.changedTouches,l=f.length;for(Zw(),_&&(_=clearTimeout(_)),n=0;n<l;++n)o=f[n],u=Rl(this,f,o.identifier),s.touch0&&s.touch0[2]===o.identifier?s.touch0[0]=u:s.touch1&&s.touch1[2]===o.identifier&&(s.touch1[0]=u);if(o=s.that.__zoom,s.touch1){var h=s.touch0[0],p=s.touch0[1],d=s.touch1[0],v=s.touch1[1],y=(y=d[0]-h[0])*y+(y=d[1]-h[1])*y,g=(g=v[0]-p[0])*g+(g=v[1]-p[1])*g;o=e(o,Math.sqrt(y/g)),u=[(h[0]+d[0])/2,(h[1]+d[1])/2],c=[(p[0]+v[0])/2,(p[1]+v[1])/2]}else{if(!s.touch0)return;u=s.touch0[0],c=s.touch0[1]}s.zoom("touch",i(r(o,u,c),s.extent))}function d(){var n,e,r=a(this,arguments),i=t.event.changedTouches,o=i.length;for(Is(),y&&clearTimeout(y),y=setTimeout(function(){y=null},z),n=0;n<o;++n)e=i[n],r.touch0&&r.touch0[2]===e.identifier?delete r.touch0:r.touch1&&r.touch1[2]===e.identifier&&delete r.touch1;r.touch1&&!r.touch0&&(r.touch0=r.touch1,delete r.touch1),r.touch0?r.touch0[1]=this.__zoom.invert(r.touch0[0]):r.end()}var _,y,g=Ys,m=Bs,x=0,b=1/0,w=-b,M=b,T=w,k=M,N=250,S=Hh,E=[],C=v("start","zoom","end"),z=500,P=150,L=0;return n.transform=function(t,n){var e=t.selection?t.selection():t;e.property("__zoom",Hs),t!==e?u(t,n):e.interrupt().each(function(){a(this,arguments).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()})},n.scaleBy=function(t,e){n.scaleTo(t,function(){return this.__zoom.k*("function"==typeof e?e.apply(this,arguments):e)})},n.scaleTo=function(t,u){n.transform(t,function(){var t=m.apply(this,arguments),n=this.__zoom,a=o(t),c=n.invert(a);return i(r(e(n,"function"==typeof u?u.apply(this,arguments):u),a,c),t)})},n.translateBy=function(t,e,r){n.transform(t,function(){return i(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof r?r.apply(this,arguments):r),m.apply(this,arguments))})},c.prototype={start:function(){return 1==++this.active&&(this.index=E.push(this)-1,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(E.splice(this.index,1),this.index=-1,this.emit("end")),this},emit:function(t){A(new Ds(n,t,this.that.__zoom),C.apply,C,[t,this.that,this.args])}},n.filter=function(t){return arguments.length?(g="function"==typeof t?t:Vw(!!t),n):g},n.extent=function(t){return arguments.length?(m="function"==typeof t?t:Vw([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),n):m},n.scaleExtent=function(t){return arguments.length?(x=+t[0],b=+t[1],n):[x,b]},n.translateExtent=function(t){return arguments.length?(w=+t[0][0],M=+t[1][0],T=+t[0][1],k=+t[1][1],n):[[w,T],[M,k]]},n.duration=function(t){return arguments.length?(N=+t,n):N},n.interpolate=function(t){return arguments.length?(S=t,n):S},n.on=function(){var t=C.on.apply(C,arguments);return t===C?n:t},n.clickDistance=function(t){return arguments.length?(L=(t=+t)*t,n):Math.sqrt(L)},n};t.version="4.9.1",t.bisect=Vs,t.bisectRight=Vs,t.bisectLeft=Ws,t.ascending=js,t.bisector=Xs,t.cross=Gs,t.descending=Js,t.deviation=tf,t.extent=nf,t.histogram=df,t.thresholdFreedmanDiaconis=_f,t.thresholdScott=yf,t.thresholdSturges=pf,t.max=gf,t.mean=mf,t.median=xf,t.merge=bf,t.min=wf,t.pairs=Zs,t.permute=Mf,t.quantile=vf,t.range=cf,t.scan=Tf,t.shuffle=kf,t.sum=Nf,t.ticks=hf,t.tickIncrement=r,t.tickStep=i,t.transpose=Sf,t.variance=Ks,t.zip=Ef,t.axisTop=l,t.axisRight=h,t.axisBottom=p,t.axisLeft=d,t.brush=Ed,t.brushX=ze,t.brushY=Pe,t.brushSelection=Ce,t.chord=qd,t.ribbon=Yd,t.nest=Bd,t.set=Ze,t.map=He,t.keys=jd,t.values=Xd,t.entries=$d,t.color=Nt,t.rgb=Ct,t.hsl=Rt,t.lab=Ot,t.hcl=Xt,t.cubehelix=Wt,t.dispatch=v,t.drag=Fl,t.dragDisable=Dl,t.dragEnable=mt,t.dsvFormat=Vd,t.csvParse=Zd,t.csvParseRows=Gd,t.csvFormat=Jd,t.csvFormatRows=Qd,t.tsvParse=tv,t.tsvParseRows=nv,t.tsvFormat=ev,t.tsvFormatRows=rv,t.easeLinear=ie,t.easeQuad=ae,t.easeQuadIn=oe,t.easeQuadOut=ue,t.easeQuadInOut=ae,t.easeCubic=fe,t.easeCubicIn=ce,t.easeCubicOut=se,t.easeCubicInOut=fe,t.easePoly=Hp,t.easePolyIn=Yp,t.easePolyOut=Bp,t.easePolyInOut=Hp,t.easeSin=pe,t.easeSinIn=le,t.easeSinOut=he,t.easeSinInOut=pe,t.easeExp=_e,t.easeExpIn=de,t.easeExpOut=ve,t.easeExpInOut=_e,t.easeCircle=me,t.easeCircleIn=ye,t.easeCircleOut=ge,t.easeCircleInOut=me,t.easeBounce=be,t.easeBounceIn=xe,t.easeBounceOut=be,t.easeBounceInOut=we,t.easeBack=id,t.easeBackIn=ed,t.easeBackOut=rd,t.easeBackInOut=id,t.easeElastic=ad,t.easeElasticIn=ud,t.easeElasticOut=ad,t.easeElasticInOut=cd,t.forceCenter=iv,t.forceCollide=wv,t.forceLink=Mv,t.forceManyBody=Sv,t.forceSimulation=Nv,t.forceX=Ev,t.forceY=Av,t.formatDefaultLocale=vr,t.formatLocale=Bv,t.formatSpecifier=pr,t.precisionFixed=Hv,t.precisionPrefix=jv,t.precisionRound=Xv,t.geoArea=G_,t.geoBounds=K_,t.geoCentroid=ny,t.geoCircle=_y,t.geoClipExtent=My,t.geoContains=Ry,t.geoDistance=zy,t.geoGraticule=Ti,t.geoGraticule10=ki,t.geoInterpolate=qy,t.geoLength=Ey,t.geoPath=cg,t.geoAlbers=gg,t.geoAlbersUsa=mg,t.geoAzimuthalEqualArea=bg,t.geoAzimuthalEqualAreaRaw=xg,t.geoAzimuthalEquidistant=Mg,t.geoAzimuthalEquidistantRaw=wg,t.geoConicConformal=kg,t.geoConicConformalRaw=po,t.geoConicEqualArea=yg,t.geoConicEqualAreaRaw=uo,t.geoConicEquidistant=Sg,t.geoConicEquidistantRaw=_o,t.geoEquirectangular=Ng,t.geoEquirectangularRaw=vo,t.geoGnomonic=Eg,t.geoGnomonicRaw=yo,t.geoIdentity=Ag,t.geoProjection=eo,t.geoProjectionMutator=ro,t.geoMercator=Tg,t.geoMercatorRaw=fo,t.geoOrthographic=Cg,t.geoOrthographicRaw=mo,t.geoStereographic=zg,t.geoStereographicRaw=xo,t.geoTransverseMercator=Pg,t.geoTransverseMercatorRaw=bo,t.geoRotation=vy,t.geoStream=$_,t.geoTransform=hg,t.cluster=Lg,t.hierarchy=zo,t.pack=Zg,t.packSiblings=Vg,t.packEnclose=$g,t.partition=Qg,t.stratify=em,t.tree=rm,t.treemap=am,t.treemapBinary=cm,t.treemapDice=Jg,t.treemapSlice=im,t.treemapSliceDice=sm,t.treemapSquarify=um,t.treemapResquarify=fm,t.interpolate=qh,t.interpolateArray=Eh,t.interpolateBasis=wh,t.interpolateBasisClosed=Mh,t.interpolateDate=Ah,t.interpolateNumber=Ch,t.interpolateObject=zh,t.interpolateRound=Uh,t.interpolateString=Rh,t.interpolateTransformCss=Ih,t.interpolateTransformSvg=Yh,t.interpolateZoom=Hh,t.interpolateRgb=kh,t.interpolateRgbBasis=Nh,t.interpolateRgbBasisClosed=Sh,t.interpolateHsl=jh,t.interpolateHslLong=Xh,t.interpolateLab=pn,t.interpolateHcl=$h,t.interpolateHclLong=Vh,t.interpolateCubehelix=Wh,t.interpolateCubehelixLong=Zh,t.quantize=Gh,t.path=Ue,t.polygonArea=lm,t.polygonCentroid=hm;t.polygonHull=dm,t.polygonContains=vm,t.polygonLength=_m,t.quadtree=ir,t.queue=xu,t.randomUniform=xm,t.randomNormal=bm,t.randomLogNormal=wm,t.randomBates=Tm,t.randomIrwinHall=Mm,t.randomExponential=km,t.request=Nm,t.html=Em,t.json=Am,t.text=Cm,t.xml=zm,t.csv=Lm,t.tsv=Rm,t.scaleBand=ku,t.scalePoint=Su,t.scaleIdentity=Du,t.scaleLinear=Uu,t.scaleLog=ju,t.scaleOrdinal=Tu,t.scaleImplicit=Om,t.scalePow=$u,t.scaleSqrt=Vu,t.scaleQuantile=Wu,t.scaleQuantize=Zu,t.scaleThreshold=Gu,t.scaleTime=ub,t.scaleUtc=ab,t.schemeCategory10=sb,t.schemeCategory20b=fb,t.schemeCategory20c=lb,t.schemeCategory20=hb,t.interpolateCubehelixDefault=pb,t.interpolateRainbow=yb,t.interpolateWarm=db,t.interpolateCool=vb,t.interpolateViridis=gb,t.interpolateMagma=mb,t.interpolateInferno=xb,t.interpolatePlasma=bb,t.scaleSequential=ic,t.creator=If,t.local=w,t.matcher=Xf,t.mouse=Gf,t.namespace=Ff,t.namespaces=Of,t.select=Pl,t.selectAll=Ll,t.selection=yt,t.selector=Jf,t.selectorAll=Kf,t.style=X,t.touch=Rl,t.touches=ql,t.window=gl,t.customEvent=A,t.arc=Rb,t.area=Db,t.line=Ub,t.pie=Ib,t.radialArea=Hb,t.radialLine=Bb,t.linkHorizontal=Nc,t.linkVertical=Sc,t.linkRadial=Ec,t.symbol=fw,t.symbols=sw,t.symbolCircle=$b,t.symbolCross=Vb,t.symbolDiamond=Gb,t.symbolSquare=nw,t.symbolStar=tw,t.symbolTriangle=rw,t.symbolWye=cw,t.curveBasisClosed=pw,t.curveBasisOpen=dw,t.curveBasis=hw,t.curveBundle=vw,t.curveCardinalClosed=yw,t.curveCardinalOpen=gw,t.curveCardinal=_w,t.curveCatmullRomClosed=xw,t.curveCatmullRomOpen=bw,t.curveCatmullRom=mw,t.curveLinearClosed=ww,t.curveLinear=qb,t.curveMonotoneX=Gc,t.curveMonotoneY=Jc,t.curveNatural=Mw,t.curveStep=Tw,t.curveStepAfter=es,t.curveStepBefore=ns,t.stack=Sw,t.stackOffsetExpand=Ew,t.stackOffsetDiverging=Aw,t.stackOffsetNone=kw,t.stackOffsetSilhouette=Cw,t.stackOffsetWiggle=zw,t.stackOrderAscending=Pw,t.stackOrderDescending=Lw,t.stackOrderInsideOut=Rw,t.stackOrderNone=Nw,t.stackOrderReverse=qw,t.timeInterval=Ju,t.timeMillisecond=$m,t.timeMilliseconds=Vm,t.utcMillisecond=$m,t.utcMilliseconds=Vm,t.timeSecond=Gm,t.timeSeconds=Jm,t.utcSecond=Gm,t.utcSeconds=Jm,t.timeMinute=Qm,t.timeMinutes=Km,t.timeHour=tx,t.timeHours=nx,t.timeDay=ex,t.timeDays=rx,t.timeWeek=ix,t.timeWeeks=lx,t.timeSunday=ix,t.timeSundays=lx,t.timeMonday=ox,t.timeMondays=hx,t.timeTuesday=ux,t.timeTuesdays=px,t.timeWednesday=ax,t.timeWednesdays=dx,t.timeThursday=cx,t.timeThursdays=vx,t.timeFriday=sx,t.timeFridays=_x,t.timeSaturday=fx,t.timeSaturdays=yx,t.timeMonth=gx,t.timeMonths=mx,t.timeYear=xx,t.timeYears=bx,t.utcMinute=wx,t.utcMinutes=Mx,t.utcHour=Tx,t.utcHours=kx,t.utcDay=Nx,t.utcDays=Sx,t.utcWeek=Ex,t.utcWeeks=qx,t.utcSunday=Ex,t.utcSundays=qx,t.utcMonday=Ax,t.utcMondays=Ux,t.utcTuesday=Cx,t.utcTuesdays=Dx,t.utcWednesday=zx,t.utcWednesdays=Ox,t.utcThursday=Px,t.utcThursdays=Fx,t.utcFriday=Lx,t.utcFridays=Ix,t.utcSaturday=Rx,t.utcSaturdays=Yx,t.utcMonth=Bx,t.utcMonths=Hx,t.utcYear=jx,t.utcYears=$x,t.timeFormatDefaultLocale=Ja,t.timeFormatLocale=ra,t.isoFormat=Jx,t.isoParse=Qx,t.now=_n,t.timer=mn,t.timerFlush=xn,t.timeout=up,t.interval=ap,t.transition=ee,t.active=hd,t.interrupt=gp,t.voronoi=$w,t.zoom=Gw,t.zoomTransform=Fs,t.zoomIdentity=Ww,Object.defineProperty(t,"__esModule",{value:!0})});
\ No newline at end of file
diff --git a/js/element.js b/js/element.js
new file mode 100644
index 0000000..f5fc75b
--- /dev/null
+++ b/js/element.js
@@ -0,0 +1,145 @@
+Element.prototype.toggle = function() {
+  if (this.state != "shown") {
+    this.show();
+  } else {
+    this.hide();
+  }
+}
+
+Element.prototype.show = function() {
+  if (this.state == "empty") {
+    this.load();
+  }
+  this.tag.show();
+  this.state = "shown";
+}
+
+Element.prototype.hide = function() {
+  if (this.state == "empty") {
+    this.load();
+  }
+  this.tag.hide();
+  this.state = "hidden";
+}
+
+Element.prototype.showHTML = function() {
+  this.tag.html(this.data.results);
+
+  if (this.id in Element.visualisers) {
+    var visual = new Element.visualisers[this.id](this.data.results);
+  }
+
+  var elems = this.tag.find("a[type='lexp']"),
+      _this = this;
+
+  elems.attr("source",_this.id);
+  elems.click(this.lexp.localHref);
+  this.tag.find(".can-collapse").hide();
+
+  this.tag.find("a[href^='#']").click(function(e) {
+    var id = $(this).attr("href").substr(1);
+    var target = $("div.can-collapse[id='" + id + "']", _this.tag);
+    target.toggle();
+    target.parent(".can-collapse").show();
+  });
+}
+
+Element.prototype.showJSON = function() {
+  if (this.id != 'walenty') {
+    if (this.id in Element.visualisers) {
+      var visual = new Element.visualisers[this.id](this.data.results);
+      if(!visual.showHTML(this.tag)) {
+        return;
+      }
+    }
+  }
+
+  this.tag.width("90%");
+  this.tag.height(300);
+  var editor = ace.edit(this.tag.get(0).id);
+
+  editor.getSession().setMode("ace/mode/json");
+  editor.setOptions({
+    wrap: true,
+    readOnly: true,
+    highlightActiveLine: false,
+    highlightGutterLine: false
+  });
+  editor.$blockScrolling = Infinity;
+  editor.setShowPrintMargin(false);
+  editor.renderer.$cursorLayer.element.style.opacity = 0;
+  editor.setValue(JSON.stringify(this.data.results, null, 2), 1);
+
+  if (this.id == 'walenty') {
+    if (this.id in Element.visualisers) {
+      var visual = new Element.visualisers[this.id](this.data.results);
+      if(!visual.showHTML(this.tag)) {
+        return;
+      }
+    }
+  }
+}
+
+Element.prototype.showElement = function() {
+  if (typeof this.data.results === 'string' || this.data.results instanceof String) {
+    this.showHTML();
+  } else {
+    this.showJSON();
+  }
+}
+
+Element.prototype.load = function() {
+  var loading = '<img src="/img/loading.gif" height="40" width="40"></img>';
+  this.tag.html(loading);
+  var _what = "/lexp/";
+  var _this = this;
+  //console.log(this.lexp);
+  var _task = {"function":"get","element":this.lexp.element,"resource":this.id};
+  // console.log(_what);
+  // console.log(_this);
+  // console.log(_task);
+  console.log(JSON.stringify(_task));
+  $.ajax({
+    type: "POST",
+    contentType: 'application/json',
+    data: JSON.stringify(_task),
+    url: _what,
+    cache: false,
+    processData: false,
+    dataType: "json",
+    success: function(res) {
+      console.log(res);
+      _this.data = res;
+      _this.showElement();
+    },
+    error: function(jqXHR, exception) {
+      nlp_error(jqXHR, exception);
+      return;
+    }
+  });
+}
+
+Element.prototype.setTag = function(tag) {
+  this.tag = tag;
+}
+
+function Element(tag, id, infoData, lexp) {
+  // console.log(tag);
+  // console.log(id);
+  // console.log(infoData);
+  // console.log(lexp);
+  this.tag = tag;
+  this.id = id;
+  this.formats = infoData.formats;
+  this.state = "empty";
+  this.lexp = lexp;
+}
+
+Element.addVisualizer = function(name, callback) {
+  /*console.log("dodałem: " + name);
+  console.log("CALLBACK");
+  console.log(callback);*/
+  Element.visualisers[name] = callback;
+}
+
+Element.visualisers = new Object();
\ No newline at end of file
diff --git a/js/graph-creator.js b/js/graph-creator.js
new file mode 100644
index 0000000..9466974
--- /dev/null
+++ b/js/graph-creator.js
@@ -0,0 +1,5 @@
+var GraphCreator=function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:o})},n.r=function(t){Object.defineProperty(t,"__esModule",{value:!0})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=9)}([function(t,e,n){"use strict";n.r(e),n.d(e,"apiConnector",function(){return i});const o=function(t){this.url="http://graph-slowosiec.clarin-pl.eu/wordnetloom/resources/",this.cache=new Map,this.possibleLangs=["pl","en"],this.lang=t||"pl"};o.prototype.setLang=function(t){const e=this;e.possibleLangs.indexOf(t)<0?console.error('Err, Language can only be chosen to be "pl" or "en"'):e.lang!==t&&(e.cache=new Map,e.lang=t)},o.prototype.entryPoints={settings:"settings/",graph:"graphs/synsets/{id}",synsetFromSense:"senses/{id}/synset",synsetFromLemma:"synsets/search?lemma={lemma}",relationTypes:"relation-types/{id}"},o.prototype._getJson=function(t,e){const n=this;if(!e)return n._getJsonPromise(t);n.cache.has(t)?e(n.cache.get(t)):d3.request(n.url+t).header("Content-Type","application/json").header("Accept-Language",n.lang).get((o,i)=>{i=JSON.parse(i.response),n.cache.set(t,i),e(i)})},o.prototype._getJsonPromise=function(t){const e=this;let n=new class{constructor(){this.promise=new Promise((t,e)=>{this.reject=e,this.resolve=t})}};return e.cache.has(t)?n.resolve(e.cache.get(t)):d3.request(e.url+t).header("Content-Type","application/json").header("Accept-Language",e.lang).get((o,i)=>{i=JSON.parse(i.response),e.cache.set(t,i),n.resolve(i)}),n.promise},o.prototype.getRelationTypes=function(t,e){return t=t||"",this._getJson(this.entryPoints.relationTypes.replace("{id}",t),e)},o.prototype.getSettings=function(t){return this._getJson(this.entryPoints.settings,t)},o.prototype.hasInCache=function(t){return this.cache.has(t)},o.prototype.getFromCache=function(t){return this.cache.has(t)?this.cache.get(t):null},o.prototype.getGraph=function(t,e){this._getJson(this.entryPoints.graph.replace("{id}",t),function(t){e(t||null)})},o.prototype.getSynsetFromSenseId=function(t,e){const n=function(t){e(t)};d3.json(this.url+this.entryPoints.synsetFromSense.replace("{id}",t),function(t,e){n(e||null)})},o.prototype.getSensesFromLemma=function(t,e){d3.json(this.url+this.entryPoints.synsetFromLemma.replace("{lemma}",t),function(t,n){e(n||null)})};const i=new o},function(t,e,n){"use strict";n.r(e),n.d(e,"Edge",function(){return i}),n.d(e,"EdgeContainer",function(){return r});var o=n(0);function i(t,e,n,o,i,r){this.connectionPoints=n,this.pathTextSrc=o[0],this.pathTextTarget=o[1],this.color=i||"#000",this.dotted=r||!1,this.source=t,this.target=e,this.id=this.getUniqueIdentifier(),this.initColor(),this.initDotted()}function r(){this.map=new Map,this[Symbol.iterator]=this.values}i.prototype.api=o.apiConnector,i.prototype.settings=o.apiConnector.getSettings(),i.prototype.initColor=function(){const t=this;if(!t.pathTextSrc&&!t.pathTextTarget)return;const e=e=>{const n=e.relations[t.pathTextSrc]||e.relations[t.pathTextTarget];try{t.color=n.color}catch(e){console.log(e),console.log(t)}};t.api.hasInCache(t.api.entryPoints.settings)?e(t.api.getFromCache(t.api.entryPoints.settings)):t.settings.then(t=>{e(t)})},i.prototype.initDotted=function(){const t=this;if(!t.pathTextSrc&&!t.pathTextTarget)return;const e=e=>{const n=e.relations[t.pathTextSrc]||e.relations[t.pathTextTarget];try{t.dotted=n.dotted}catch(e){console.log(e),console.log(t)}};t.api.hasInCache(t.api.entryPoints.settings)?e(t.api.getFromCache(t.api.entryPoints.settings)):t.settings.then(t=>{e(t)})},i.prototype.getUniqueIdentifier=function(){return this.source.id<this.target.id?this.source.id+"|"+this.target.id:this.target.id+"|"+this.source.id},r.prototype.add=function(t){t&&this.map.set(t.id,t)},r.prototype.values=function(){return this.map.values()},r.prototype.deleteNodeEdges=function(t){let e=this;e.map.forEach(n=>{n.source!==t&&n.target!==t||e.map.delete(n.id)})}},function(t,e,n){"use strict";n.r(e),n.d(e,"consts",function(){return h}),n.d(e,"GraphCreator",function(){return p});var o=n(0),r=n(1),s=n(3),a=n(4);const d=".inner-graph-container",l=".possible-senses",c=".graph-loader",h={partOfSpeech:{1:{color:"#FED25C"},2:{color:"#ABFFAE"},3:{color:"#ABFFAE"},4:{color:"#ACFFEA"}}},p=function(t,e,n,i){const s=this;s.width=n,s.height=i;let a='<div class="graph-loader" style="display: none"></div><div class="inner-graph-container"></div>';e&&(a+='<div id="toolbox"><form id="inspected-word-form"><button type="submit" value="Submit" id="inspected-word-btn">Szukaj</button><input type="text" id="inspected-word" placeholder="Słowo którego szukasz&hellip;"></form><ul class="possible-senses" style="display: none"></ul></div>'),a+='<button id="download-picture"></button>';const p=d3.select("#"+t).html(a);s.container=p;const u=p.select(d).append("svg").attr("width",n).attr("height",i).attr("id","graph-svg");s.hiddenList=d3.select(d).append("div").attr("pointer-events","none").attr("class","hidden-list tooltip").style("opacity",1).html("FIRST LINE <br> SECOND LINE").style("display","none"),s.sensesList=d3.select(l),s.tooltip=d3.select(d).append("div").attr("id","node-tooltip").style("opacity",0),s.loadingAnimationHandle=d3.select(c).style("display","none"),s.idct=0,s.nodes=new Map,s.edges=new r.EdgeContainer,s.transformed={x:0,y:0,k:1},s.state={selectedNode:null,selectedEdge:null,mouseDownNode:null,mouseDownLink:null,justDragged:!1,justScaleTransGraph:!1,lastKeyDown:-1,shiftNodeDrag:!1,selectedText:null,brushSelect:!1},s.api=o.apiConnector,s.settings=s.api.getSettings(),s.settings.then(t=>{h.partOfSpeech=t.partsOfSpeech}),s.relationTypes=s.api.getRelationTypes();const f=u.append("svg:defs");f.append("svg:marker").attr("id","end-arrow").attr("viewBox","0 -5 10 10").attr("refX","8").attr("markerWidth",10).attr("markerHeight",10).attr("orient","auto").append("svg:path").attr("d","M0,-5L10,0L0,5L5,0"),f.append("svg:marker").attr("id","start-arrow").attr("viewBox","0 0 10 10").attr("refX",2).attr("refY",5).attr("markerWidth",10).attr("markerHeight",10).attr("orient","auto").append("svg:path").attr("d","M0,5L10,0L5,5L10,10"),f.append("pattern").attr("id","flag-pl").html('<svg xmlns="http://www.w3.org/2000/svg" width="16" height="10" id="Flag of Poland" viewBox="0 0 16 10"><rect width="16" height="4" fill="#fff"/><rect width="16" height="5" fill="#dc143c" y="4"/></svg>').attr("width",16).attr("height",16),f.append("pattern").attr("id","flag-en").attr("width",16).attr("height",16).html('<svg x="-1.5" viewBox="0 0 60 30" width="16" height="8">\n    <clipPath id="t">\n        <path d="M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z"/>\n    </clipPath>\n    <path d="M0,0 v30 h60 v-30 z" fill="#00247d"/>\n    <path d="M0,0 L60,30 M60,0 L0,30" stroke="#fff" stroke-width="6"/>\n    <path d="M0,0 L60,30 M60,0 L0,30" clip-path="url(#t)" stroke="#cf142b" stroke-width="4"/>\n    <path d="M30,0 v30 M0,15 h60" stroke="#fff" stroke-width="10"/>\n    <path d="M30,0 v30 M0,15 h60" stroke="#cf142b" stroke-width="6"/>\n</svg>'),s.svg=u,s.svgOuter=u.append("g").classed("outer-zoom",!0).attr("transform","translate(0,0) scale(1)"),s.svgG=s.svgOuter.append("g").classed(s.consts.graphClass,!0).attr("id","wordnet-graph-g-element");const g=s.svgG;s.paths=g.append("g").attr("id","all-paths-id").selectAll("g"),s.pathsText=g.append("g").attr("id","all-paths-text-id").selectAll("g"),s.boats=g.append("g").attr("id","all-boats-id").selectAll("g"),s.drag=d3.drag().subject(function(t){return s.range.x.max=Math.max(t.x,s.range.x.max),s.range.y.max=Math.max(t.y,s.range.y.max),s.range.x.min=Math.min(t.x,s.range.x.min),s.range.y.min=Math.min(t.y,s.range.y.min),{x:t.x,y:t.y}}).on("drag",function(t){s.state.justDragged=!0,s.dragmove.call(s,t)}),d3.select(window).on("keydown",function(){s.svgKeyDown.call(s)}).on("keyup",function(){s.svgKeyUp.call(s)}),u.on("mousedown",function(t){s.svgMouseDown.call(s,t)}),u.on("mouseup",function(t){s.svgMouseUp.call(s,t)});const y=d3.zoom().on("zoom",function(){return!d3.event.sourceEvent.shiftKey&&(s.zoomed.call(s),!0)}).on("start",function(){var t=d3.select("#"+s.consts.activeEditId).node();t&&t.blur(),d3.event.sourceEvent.shiftKey||d3.select("body").style("cursor","move")}).on("end",function(){d3.select("body").style("cursor","auto")});s.zoom=y,u.call(y).on("dblclick.zoom",null),window.onresize=function(){s.updateWindow(u)};s.brush=d3.brush(),s.brush.graph=this,s.brush.on("brush",function(){s.brushed()}),d3.select("#inspected-word-form").on("submit",function(){d3.event.preventDefault(),console.log("on submit");let t=d3.select("#inspected-word");s.loadNewWord(t.node().value)}),d3.select("#download-picture").on("click",function(){s.exportVisualization()}),s.range={x:{min:Number.MAX_SAFE_INTEGER,max:Number.MIN_SAFE_INTEGER},y:{min:Number.MAX_SAFE_INTEGER,max:Number.MIN_SAFE_INTEGER}}};p.prototype.setLanguage=function(t){this.api.setLang(t)},p.prototype.showMiniMap=function(t,e,n,o,i,r){t=t||.25,(e=e||this.container)!==this.container&&(e=d3.select(e)),n&&i&&(i=null),null===n&&null===i&&(n=0),o&&r&&(r=null),null===o&&null===r&&(r=0);let s=d3.select("#graph-svg"),a=t;this.minimap=d3.minimap().host(this).target(s).targetShadowId("#all-boats-id").targetShadowId("#all-paths-id").minimapScale(a).x(0).y(0);let d=e.append("svg").attr("class","svg canvas").attr("width",this.width*t).attr("height",this.height*t).attr("shape-rendering","auto").style("position","absolute");null!==n&&void 0!==n&&d.style("top",n),null!==o&&void 0!==o&&d.style("right",o),null!==i&&void 0!==i&&d.style("bottom",i),null!==r&&void 0!==r&&d.style("left",r),d.call(this.minimap),this.minimap.render()},p.prototype.getHeight=function(){return this.height},p.prototype.getWidth=function(){return this.width},p.prototype.update=function(t){this.zoom.transform(this.svg,t),this.svg.property("__zoom",t)},p.prototype.updateCanvasZoomExtents=function(){var t=this.svg.property("__zoom").k,e=this.svg.attr("width"),n=this.svg.attr("height"),o=this.width,i=this.height;this.zoom.translateExtent([[-o/t,-i/t],[o/t+e,i/t+n]])},p.prototype.showLoadingAnimation=function(){this.loadingAnimationHandle.style("display","block")},p.prototype.hideLoadingAnimation=function(){this.loadingAnimationHandle.style("display","none")},p.prototype.listPossibleSenses=function(t){const e=this;if(e.hideLoadingAnimation(),t){const n=function(t){t&&e.initializeFromSynsetId(t.id)};if(0===t.length)e.sensesList.style("display","block").html("").html("<li>nic nie znaleziono</li>");else if(1===t.length)e.api.getSynsetFromSenseId(t[0].id,n);else{let o="";for(let e=0;e<t.length;e++)o+='<li class="hidden-list-item" data-sense-id="'+t[e].id+'">'+t[e].lemma.word+"</li>\n";e.sensesList.style("display","block").html("").html(o),d3.selectAll(".hidden-list-item").on("click",function(){let t=d3.select(this).attr("data-sense-id");e.api.getSynsetFromSenseId(t,n)})}}},p.prototype.loadNewWord=function(t){this.showLoadingAnimation(),this.api.getSensesFromLemma(t,this.listPossibleSenses.bind(this))},p.prototype.initFromJson=function(t){const e=this;try{e.deleteGraph(!0);const n=e.width/2-25,o=e.height/2-100,i=new s.GraphNode(t,n,o,{},e,!0,!0,!0,!0);i.childrenDownloaded=!0,e.nodes.set(i.id,i),e.updateWithChildrenNodes(i)}catch(t){console.log(t),window.alert("Error parsing json\nerror message: "+t.message)}},p.prototype.edgeNotExisting=function(t,e,n){const o=this;for(let n=0;n<o.edges.length;n++){let i=o.edges[n];if(i.source===t&&i.target===e)return!1;if(i.source===e&&i.target===t)return!1}if(void 0!==n)for(i=0;i<n.length;i++){let o=n[i];if(o.source===t&&o.target===e)return!1;if(o.source===e&&o.target===t)return!1}return!0},p.prototype.addEdgesBetweenNewNodes=function(t){const e=this;let n=function(t,n){e.edges.add(t.getConnectionWithNode(n)),e.edges.add(n.getConnectionWithNode(t))};var o;(o=t).forEach(t=>{o.forEach(e=>{t!==e&&n(t,e)})}),function(t){e.nodes.forEach(e=>{t.forEach(t=>{e!==t&&n(e,t)})})}(t)},p.prototype.updateWithChildrenNodes=function(t){const e=this;let n=[];function o(o,i,s){o&&t[i].forEach((o,a)=>{o=t[i][a],e.nodes.has(o.id)||(e.nodes.set(o.id,o),n.push(o)),o.isNodeCumulator()&&e.edges.add(new r.Edge(t,o,s,o.parentRel))})}o(t.expandedTop,"childrenTopRef",[0,2]),o(t.expandedRight,"childrenRightRef",[1,3]),o(t.expandedBottom,"childrenBottomRef",[2,0]),o(t.expandedLeft,"childrenLeftRef",[3,1]),e.addEdgesBetweenNewNodes(n),e.updateGraph()},p.prototype.consts={selectedClass:"selected",connectClass:"connect-node",boatGClass:"conceptG",graphClass:"graph",activeEditId:"active-editing",BACKSPACE_KEY:8,DELETE_KEY:46,ENTER_KEY:13,CTRL_KEY:17,nodeRadius:50,nodeDistance:225,nodeHeight:35,nodeWidth:50,maxDefaultNodesVertically:6,maxDefaultNodesHorizontally:6},p.prototype.showBrush=function(){const t=this;t.state.brushSelect=!0,t.brushHandle||(t.brushHandle=t.svg.append("g").attr("class","brush").call(t.brush))},p.prototype.destroyBrush=function(){const t=this;t.brushHandle&&(t.brushHandle.remove(),t.brushHandle=null)},p.prototype.exitBrushMode=function(){const t=this;t.state.brushSelect&&(t.unmarkAllNodes(),t.state.brushSelect=!1)},p.prototype.unmarkAllNodes=function(){this.nodes.forEach(function(t){t.unmarkSelected()}),this.updateGraph()},p.prototype.getPointInvertedTranslation=function(t,e,n){return(t-e*(1-n))/n-e},p.prototype.getPointTransform=function(t,e,n){return(t+e)*n+e*(1-n)},p.prototype.getPointTransformX=function(t){return this.getPointTransform(t,this.transformed.x,this.transformed.k)},p.prototype.getPointTransformY=function(t){return this.getPointTransform(t,this.transformed.y,this.transformed.k)},p.prototype.markNodesSelectedInRange=function(t){let e=t[0][0],n=t[1][0],o=t[0][1],i=t[1][1];const r=this.transformed.x,s=this.transformed.y,a=this.transformed.k;e=this.getPointInvertedTranslation(e,r,a),n=this.getPointInvertedTranslation(n,r,a),o=this.getPointInvertedTranslation(o,s,a),i=this.getPointInvertedTranslation(i,s,a),this.nodes.forEach(function(t){t.x>e&&t.x<n&&t.y>o&&t.y<i?t.markSelected():t.unmarkSelected()}),this.updateGraph()},p.prototype.brushed=function(){const t=this,e=d3.event.selection;null===e?t.unmarkAllNodes():t.markNodesSelectedInRange(e)},p.prototype.dragmove=function(t){const e=this;e.state.shiftNodeDrag?e.dragLine.attr("d","M"+t.x+","+t.y+"L"+d3.mouse(e.svgG.node())[0]+","+d3.mouse(this.svgG.node())[1]):(t.selected||e.exitBrushMode(),e.state.brushSelect?e.nodes.forEach(function(t){t.selected&&(t.x+=d3.event.dx,t.y+=d3.event.dy)}):(t.x+=d3.event.dx,t.y+=d3.event.dy),e.updateGraph())},p.prototype.deleteGraph=function(t){const e=this;let n=!0;t||(n=window.confirm("Press OK to delete this graph")),n&&(e.nodes=new Map,e.edges=new r.EdgeContainer,e.resetZoom())},p.prototype.selectElementContents=function(t){var e=document.createRange();e.selectNodeContents(t);var n=window.getSelection();n.removeAllRanges(),n.addRange(e)},p.prototype.getNodeTitle=function(t,e){t.append("text").attr("text-anchor","middle").attr("font-size","10px").text(e.length<18?e:String(e).slice(0,15)+"...").attr("dy","3")},p.prototype.spliceLinksForNode=function(t){const e=this;e.edges.filter(function(e){return e.source===t||e.target===t}).map(function(t){e.edges.splice(e.edges.indexOf(t),1)})},p.prototype.svgMouseDown=function(){this.state.graphMouseDown=!0,this.state.brushSelect=!1,this.sensesList.style("display","none"),this.unmarkAllNodes()},p.prototype.svgMouseUp=function(){const t=this,e=t.state;if(e.justScaleTransGraph)e.justScaleTransGraph=!1;else if(e.graphMouseDown&&d3.event.shiftKey){const e=d3.mouse(t.svgG.node()),n={id:t.idct++,title:h.defaultTitle,x:e[0],y:e[1]};t.nodes.push(n),t.updateGraph()}else e.shiftNodeDrag&&(e.shiftNodeDrag=!1,t.dragLine.classed("hidden",!0));e.graphMouseDown=!1},p.prototype.svgKeyDown=function(){const t=this,e=t.state,n=t.consts;if(-1!==e.lastKeyDown)return;e.lastKeyDown=d3.event.keyCode;const o=e.selectedNode,i=e.selectedEdge;switch(d3.event.keyCode){case n.BACKSPACE_KEY:break;case n.CTRL_KEY:t.showBrush();break;case n.DELETE_KEY:o?(t.nodes.splice(t.nodes.indexOf(o),1),t.spliceLinksForNode(o),e.selectedNode=null,t.updateGraph()):i&&(t.edges.splice(t.edges.indexOf(i),1),e.selectedEdge=null,t.updateGraph())}},p.prototype.svgKeyUp=function(){this.destroyBrush(),this.state.lastKeyDown=-1},p.prototype.removeNodeEdges=function(t){this.edges.deleteNodeEdges(t)},p.prototype.removeNode=function(t){const e=this;e.removeNodeEdges(t);const n=t.getAllChildrenRef();for(let t=0;t<n.length;t++)e.removeNode(n[t]);t.reset(),e.nodes.delete(t.id)},p.prototype.removeNodeChildren=function(t,e){const n=this;let o;o=void 0!==e?t.getChildrenAtPosition(e):t.getAllChildrenRef();for(let t=0;t<o.length;t++)n.removeNode(o[t]);n.updateGraph()},p.prototype.updateGraph=function(){const t=this,e=t.consts,n=t.state,o=Array.from(t.nodes.values());t.boats=d3.select("#all-boats-id").selectAll("g").data(o,function(t){return t.id+t.label}),t.boats.attr("transform",function(t){return"translate("+t.x+","+t.y+")"}).classed("node-selected",function(t){return t.selected}).on("mouseover",function(e){const n=e.x,o=e.y,i=t.transformed;e.label.length>=18&&t.showTooltip(t.getPointTransformX(n)+70*i.k,t.getPointTransformY(o)-15,e.label)}).on("mouseout",function(){t.hideTooltip()});const i=t.boats.enter().append("g");i.classed(e.boatGClass,!0).attr("transform",function(e){return t.range.x.max=Math.max(e.x,t.range.x.max),t.range.y.max=Math.max(e.y,t.range.y.max),t.range.x.min=Math.min(e.x,t.range.x.min),t.range.y.min=Math.min(e.y,t.range.y.min),"translate("+e.x+","+e.y+")"}).call(t.drag),i.filter(t=>t.isNodeCumulator()).append("circle").attr("r",25).attr("stroke-width","1px").attr("stroke","black").attr("fill","#aaffaf").classed("inner-node",!0).on("contextmenu",function(e){d3.event.preventDefault(),t.lastClickedNodeCumulator=e;let n=e.getHiddenListHtml();t.hiddenList.style("left",t.transformed.x+(e.x+30)*t.transformed.k+"px").style("top",t.transformed.y+(e.y+15)*t.transformed.k+"px").style("display","block").html(n.html),e.addOnclickToCreatedNodes(t,n.createdIds,n.hiddenRef)});let r=i.filter(t=>!t.isNodeCumulator());r.append("polyline").classed("inner-node",!0).attr("points","-50,10 -10,15 10,15 50,10 50,-10 10,-15 -10,-15 -50,-10 -50,10").attr("stroke-width","1px").attr("stroke","black").attr("fill",function(t){return t.type.color||"red"}).on("click",function(t){let e=new CustomEvent("nodeClicked",{detail:{node:t}});document.dispatchEvent(e)}),t.settings.then(t=>{r.append("rect").attr("x",-37).attr("y",-13).attr("width",13).attr("height",8).attr("stroke","black").attr("stroke-width",.4).attr("fill",e=>{return`url('#flag-${t.lexicons[e.lexicon].icon}')`})}),i.each(function(e){t.appendChildrenButtons(d3.select(this),e)}),i.each(function(e){t.getNodeTitle(d3.select(this),e.label)});try{t.boats.enter().merge(d3.select("#all-boats-id").selectAll("text"))}catch(t){console.log(t)}t.boats.exit().remove();let s=Array.from(t.edges.values());const a=d3.select("#all-paths-id").selectAll("path").data(s,function(t){return t.id}).classed(e.selectedClass,function(t){return t===n.selectedEdge}).attr("d",function(t){return"M"+t.source.x+","+t.source.y+"L"+t.target.x+","+t.target.y});a.exit().remove(),a.enter().append("path").merge(a).style("marker-end","url(#end-arrow)").style("marker-start","url(#start-arrow)").style("stroke-width","1.25").classed("link",!0).classed("dotted",function(t){return t.dotted}).attr("stroke",function(t){return t.color}).attr("d",function(e){const n=t.getConnectionPoints(e);return e.target.isNodeCumulator()?"M"+n.source.x+","+n.source.y+"L"+e.target.x+","+e.target.y:"M"+n.source.x+","+n.source.y+"L"+n.target.x+","+n.target.y}).attr("id",function(t,e){return"path_"+String(t.source.id)+"-"+String(t.target.id)});const d=d3.select("#all-paths-text-id").selectAll("text").data(s,function(t,e){return String(t.source.id)+"-"+String(t.target.id)}),l=d.enter().append("text").classed("relation-text",!0).attr("dy",-5);l.exit().remove(),l.append("textPath").on("mouseover",e=>{let n=t.getRelationTooltipCoordinates(e.source,e.connectionPoints[0]);t.relationTypes.then(o=>{let i=o.find(t=>t.short_name===e.pathTextSrc);t.showTooltip(n.x,n.y,i.description)})}).on("mouseout",function(){t.hideTooltip()}).attr("startOffset","5%").attr("xlink:href",function(t){return"#path_"+String(t.source.id)+"-"+String(t.target.id)}).append("tspan").text(function(t){return t.pathTextSrc}),l.append("textPath").on("mouseover",e=>{let n=t.getRelationTooltipCoordinates(e.target,e.connectionPoints[1]);t.relationTypes.then(o=>{let i=o.find(t=>t.short_name===e.pathTextTarget);t.showTooltip(n.x,n.y,i.description)})}).on("mouseout",function(){t.hideTooltip()}).attr("startOffset","95%").attr("text-anchor","end").attr("xlink:href",function(t){return"#path_"+String(t.source.id)+"-"+String(t.target.id)}).append("tspan").text(function(t){return t.pathTextTarget}),d.exit().remove(),t.minimap&&(t.minimap.updateMaxValues(t.range),t.minimap.render())},p.prototype.showTooltip=function(t,e,n){this.tooltip.transition().duration(100).style("opacity",.9),this.tooltip.html(n).style("left",t+"px").style("top",e+"px")},p.prototype.hideTooltip=function(){this.tooltip.transition().duration(200).style("opacity",0)},p.prototype.getRelationTooltipCoordinates=function(t,e){const n=this;let o={x:n.getPointTransformX(t.x),y:n.getPointTransformY(t.y)};switch(e){case 0:o.x+=30*n.transformed.k,o.y-=70*n.transformed.k;break;case 1:o.x+=70*n.transformed.k,o.y-=15*n.transformed.k;break;case 2:o.x+=30*n.transformed.k;break;case 3:o.x-=30*n.transformed.k,o.y-=15*n.transformed.k}return o},p.prototype.appendChildrenButtons=function(t,e){const n=this;if(e.childrenTop.length>0){t.append("polyline").attr("points","-13 -15, 13 -15, 0 -5, -13 -15").attr("stroke-width","1.5px").attr("fill","blue").attr("stroke","black").classed("expanded",function(t){return t.expandedTop}).on("click",function(){e.expandTriangleClick(n,this,0)})}if(e.childrenRight.length>0){t.append("polyline").attr("points","50,10 40 0, 50 -10").attr("stroke-width","1.5px").attr("fill","blue").attr("stroke","black").classed("expanded",function(t){return t.expandedRight}).on("click",function(){e.expandTriangleClick(n,this,1)})}if(e.childrenBottom.length>0){t.append("polyline").attr("points","-13 15, 13 15, 0 5, -13 15").attr("stroke-width","1.5px").attr("fill","blue").attr("stroke","black").classed("expanded",function(t){return t.expandedBottom}).on("click",function(){e.expandTriangleClick(n,this,2)})}if(e.childrenLeft.length>0){t.append("polyline").attr("points","-50,10 -40 0, -50 -10").attr("stroke-width","1.5px").attr("fill","blue").attr("stroke","black").classed("expanded",function(t){return t.expandedLeft}).on("click",function(){e.expandTriangleClick(n,this,3)})}},p.prototype.getConnectionPoints=function(t){const e=this;try{return{source:e.getConnectionPoint(t.connectionPoints[0],t.source.x,t.source.y),target:e.getConnectionPoint(t.connectionPoints[1],t.target.x,t.target.y)}}catch(e){console.log(t)}},p.prototype.getConnectionPoint=function(t,e,n){const o=this,i={x:e,y:n};switch(t){case 0:i.y-=o.consts.nodeHeight/2-1;break;case 1:i.x+=51;break;case 2:i.y+=o.consts.nodeHeight/2-1;break;case 3:i.x-=51}return i},p.prototype.zoomed=function(t){t=t||d3.event.transform,this.state.justScaleTransGraph=!0,d3.select("."+this.consts.graphClass).attr("transform",t),this.transformed=t,this.hiddenList.style("display","none"),this.minimap&&this.minimap.update(t)},p.prototype.updateWindow=function(t){const e=document.documentElement,n=document.getElementsByTagName("body")[0],o=window.innerWidth||e.clientWidth||n.clientWidth,i=window.innerHeight||e.clientHeight||n.clientHeight;t.attr("width",o).attr("height",i)},p.prototype.initializeFromSynsetId=function(t){const e=this;e.api.getGraph(t,function(t){!function(t){t.length<1?window.alert("Sorry, could not display requested data."):e.initFromJson(t)}(t)})},p.prototype.exportVisualization=function(){const t=this.getSVGString(this.svg.node());this.svgString2Image(t,2*this.width,2*this.height,"png",function(t,e){Object(a.saveAs)(t,"wordnet-graph.png")})},p.prototype.getSVGString=function(t){t.setAttribute("xlink","http://www.w3.org/1999/xlink"),function(t,e){const n=document.createElement("style");n.setAttribute("type","text/css"),n.innerHTML=t;const o=e.hasChildNodes()?e.children[0]:null;e.insertBefore(n,o)}(function(t){let e=[];e.push("#"+t.id);for(let n=0;n<t.classList.length;n++)i("."+t.classList[n],e)||e.push("."+t.classList[n]);const n=t.getElementsByTagName("*");for(let t=0;t<n.length;t++){let o=n[t].id;i("#"+o,e)||e.push("#"+o);const r=n[t].classList;for(let t=0;t<r.length;t++)i("."+r[t],e)||e.push("."+r[t])}let o="";for(let t=0;t<document.styleSheets.length;t++){let n=document.styleSheets[t];try{if(!n.cssRules)continue}catch(t){if("SecurityError"!==t.name)throw t;continue}let r=n.cssRules;for(let t=0;t<r.length;t++)i(r[t].selectorText,e)&&(o+=r[t].cssText)}return o;function i(t,e){return!(-1===e.indexOf(t))}}(t),t);let e=(new XMLSerializer).serializeToString(t);return e=(e=e.replace(/(\w+)?:?xlink=/g,"xmlns:xlink=")).replace(/NS\d+:href/g,"xlink:href")},p.prototype.svgString2Image=function(t,e,n,o,i){o=o||"png";const r="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(t))),s=document.createElement("canvas"),a=s.getContext("2d");s.width=e,s.height=n;const d=new Image;d.onload=function(){a.clearRect(0,0,e,n),a.drawImage(d,0,0,e,n),s.toBlob(function(t){const e=Math.round(t.length/1024)+" KB";i&&i(t,e)})},d.src=r},p.prototype.resetZoom=function(){const t=this;let e=d3.zoomIdentity;t.zoomed(e),t.svg.property("__zoom",e),t.minimap&&t.minimap.resetScale()},p.prototype.resizeSVG=function(t,e){this.svg.attr("width",t).attr("height",e)}},function(t,e,n){"use strict";n.r(e),n.d(e,"GraphNode",function(){return a});var o=n(0),i=n(2),r=n(1);let s={calculateEllipseY:function(t,e,n,o,i,r){return r?o+Math.sqrt(e*e-(1-(i-n)*(i-n))/(t*t)):o-Math.sqrt(e*e-(1-(i-n)*(i-n))/(t*t))},calculateEllipseX:function(t,e,n,o,i,r){return r?n-Math.sqrt(e*e-(1-(i-o)*(i-o))/(t*t)):n+Math.sqrt(e*e-(1-(i-o)*(i-o))/(t*t))},distributeNode:function(t,e,n){return-(n*t*2)/2+2*t*(e+1)-t},assignPlace:function(t,e,n,o,r){const a=i.GraphCreator.prototype.consts;switch(r=r>=a.maxDefaultNodesHorizontally?a.maxDefaultNodesHorizontally:r,t){case"top":n.x=e.x+s.distributeNode(a.nodeWidth+2,o,r),n.y=-200+s.calculateEllipseY(8,1,e.x,e.y,n.x,!0);break;case"right":n.y=e.y+s.distributeNode(a.nodeHeight-15,o,r),n.x=200+s.calculateEllipseX(3,1,e.x,e.y,n.y,!0);break;case"bottom":n.x=e.x+s.distributeNode(a.nodeWidth+10,o,r),n.y=e.y+a.nodeDistance,n.y=200+s.calculateEllipseY(8,1,e.x,e.y,n.x,!1);break;case"left":n.x=e.x-a.nodeDistance,n.y=e.y+s.distributeNode(a.nodeHeight-15,o,r),n.x=-200+s.calculateEllipseX(3,1,e.x,e.y,n.y,!1)}}};const a=function(t,e,n,o,i,r,s,a,d){let l=this;l.graph=i,t&&(l.parentId=o.id||null,l.parent=o||null,t=l.prepareJson(t),l.id=t.id,l.label=t.label,l.partOfSpeechId=t.pos,l.lexicon=t.lex,l.assignColorBasedFromPartOfSpeech(),l.x=e||0,l.y=n||0,l.childrenTop=t.top.expanded.concat(t.top.hidden),l.childrenRight=t.right.expanded.concat(t.right.hidden),l.childrenBottom=t.bottom.expanded.concat(t.bottom.hidden),l.childrenLeft=t.left.expanded.concat(t.left.hidden),l.parentRel=t.rel,l.childrenTopRef=[],l.childrenRightRef=[],l.childrenBottomRef=[],l.childrenLeftRef=[],l.cumulativeNodes={},l.addCumulativeChildren(t),l.initChildren(t.top.expanded,t.right.expanded,t.bottom.expanded,t.left.expanded)),l.selected=!1,l.expandedTop=r||!1,l.expandedRight=s||!1,l.expandedLeft=d||!1,l.expandedBottom=a||!1,l.childrenDownloaded=!1};a.prototype.reset=function(){this.expandedTop=!1,this.expandedRight=!1,this.expandedLeft=!1,this.expandedBottom=!1},a.prototype.assignPlace=function(t,e,n){s.assignPlace(t,this.parent,this,e,n)},a.prototype.initChildren=function(t,e,n,o){const i=this;function r(t,e,n){let o,r=t.length+i[e].length;for(let s=0;s<t.length;s++)(o=i.graph.nodes.get(t[s].id))||((o=new a(t[s],0,0,i,i.graph)).assignPlace(n,s,r),i[e].push(o));i.childrenDownloaded=!0}r(t,"childrenTopRef","top"),r(e,"childrenRightRef","right"),r(n,"childrenBottomRef","bottom"),r(o,"childrenLeftRef","left")},a.prototype.prepareJson=function(t){function e(t,e){t[e]||(t[e]={expanded:[],hidden:[]}),t[e].expanded||(t[e].expanded=[]),t[e].hidden||(t[e].hidden=[])}return e(t,"top"),e(t,"right"),e(t,"bottom"),e(t,"left"),t},a.prototype.addCumulativeChildren=function(t){const e=this;function n(n){let o;e.cumulativeNodes[n]=null,t[n].hidden.length>0&&0!==t[n].expanded.length&&((o=new d({id:-t[n].hidden[0].id,type:{color:"green"},rel:[null,null]},e,t[n].hidden,n)).assignPlace(n,e["children"+n.charAt(0).toUpperCase()+n.slice(1)+"Ref"].length+1,e["children"+n.charAt(0).toUpperCase()+n.slice(1)+"Ref"].length-2),e["children"+n.charAt(0).toUpperCase()+n.slice(1)+"Ref"].push(o)),e.cumulativeNodes[n]=o}n("top"),n("right"),n("bottom"),n("left")},a.prototype.addChildrenAtPosIfNotParent=function(t,e){let n=this;n[e]=n[e].concat(t.filter(t=>t.id!==n.parentId))},a.prototype.addToCumulativeNode=function(t,e){const n=this;e=["top","right","bottom","left"][e],t.forEach(t=>{n.cumulativeNodes[e].addHiddenNode(t)})},a.prototype.updateChildrenPosition=function(t){let e=this,n=["Top","Right","Bottom","Left"][t],o=e["children"+n+"Ref"],i=o.slice(5);i.length>0&&e.addToCumulativeNode(i,t),o=o.slice(0,5),e["children"+n+"Ref"]=o,o.forEach((t,e)=>{t.assignPlace(n.toLowerCase(),e,o.length)})},a.prototype.updateChildren=function(t,e){this.childrenDownloaded||(t=this.prepareJson(t),this.addChildrenAtPosIfNotParent(t.top.hidden,"childrenTop"),this.addChildrenAtPosIfNotParent(t.right.hidden,"childrenRight"),this.addChildrenAtPosIfNotParent(t.bottom.hidden,"childrenBottom"),this.addChildrenAtPosIfNotParent(t.left.hidden,"childrenLeft"),this.childrenTopRef=[],this.childrenRightRef=[],this.childrenBottomRef=[],this.childrenLeftRef=[],this.addCumulativeChildren(t),this.initChildren(t.top.expanded,t.right.expanded,t.bottom.expanded,t.left.expanded),this.expandedTop=0===e,this.expandedRight=1===e,this.expandedBottom=2===e,this.expandedLeft=3===e,this.childrenDownloaded=!0)},a.prototype.markSelected=function(){this.selected=!0},a.prototype.unmarkSelected=function(){this.selected=!1},a.prototype.assignColorBasedFromPartOfSpeech=function(){let t;t=i.consts.partOfSpeech[this.partOfSpeechId]?i.consts.partOfSpeech[this.partOfSpeechId].color:"#F0E68C",this.type={color:t}},a.prototype.nodeType="ordinary",a.prototype.getType=function(){return"ordinary"},a.prototype.api=o.apiConnector,a.prototype.consts={DIRECTIONS:{TOP:0,RIGHT:1,BOTTOM:2,LEFT:3}},a.prototype.getChildrenWithCallback=function(t){const e=this;e.childrenDownloaded?t(e.apiData):e.api.getGraph(e.id,function(n){e.apiData=n,t(n)})},a.prototype.expandTopClick=function(t,e){this.expandedTop=!0,this.findNewPlace(t),this.getChildrenWithCallback(e)},a.prototype.expandRightClick=function(t,e){this.expandedRight=!0,this.findNewPlace(t),this.getChildrenWithCallback(e)},a.prototype.expandBottomClick=function(t,e){this.expandedBottom=!0,this.findNewPlace(t),this.getChildrenWithCallback(e)},a.prototype.expandLeftClick=function(t,e){this.expandedLeft=!0,this.findNewPlace(t),this.getChildrenWithCallback(e)},a.prototype.moveChildren=function(t){const e=this.getAllChildrenRef();for(let n=0;n<e.length;n++){let o=[e[n].x-t[0],e[n].y-t[1]];e[n].assignNewPosition(o),e[n].moveChildren(t)}},a.prototype.getChildrenAtPosition=function(t){const e=this;switch(t){case 0:return e.childrenTopRef;case 1:return e.childrenRightRef;case 2:return e.childrenBottomRef;case 3:return e.childrenLeftRef}},a.prototype.connectionPointTypes={0:[0,2],1:[1,3],2:[2,0],3:[3,1],top:[0,2],right:[1,3],bottom:[2,0],left:[3,1]},a.prototype.getConnectionWithNode=function(t){const e=this;for(let[n,o]of["childrenTop","childrenRight","childrenBottom","childrenLeft"].entries()){let i=e[o].filter(e=>e.id===t.id)[0];if(i)return new r.Edge(e,t,e.connectionPointTypes[n],i.rel)}return null},a.prototype.getAllChildren=function(){return this.childrenTop.concat(this.childrenRight,this.childrenBottom,this.childrenLeft)},a.prototype.getAllChildrenRef=function(){return this.childrenTopRef.concat(this.childrenRightRef,this.childrenBottomRef,this.childrenLeftRef)},a.prototype.assignNewPosition=function(t){this.x=t[0],this.y=t[1]},a.prototype.findNewPlace=function(t){const e=this;let n=[e.x,e.y],o=20,i=10;for(;!e.checkIfSpaceInRegion(n,t)&&i>0;)n=e.calculatePossibleNewPosition(o),o+=20,i--;return e.moveChildren([e.x-n[0],e.y-n[1]]),e.assignNewPosition(n),n},a.prototype.checkIfSpaceInRegion=function(t,e){const n=this,o=t[0],i=t[1],r=n.getAllChildrenRef();for(let[t,s]of e){if(r.indexOf(s)>-1)continue;const t=s.x,e=s.y;if(n.expandedTop&&n.checkIfPointInRange(t,e,o-500,o+500,i-500,i))return!1;if(n.expandedRight&&n.checkIfPointInRange(t,e,o,o+1e3,i-250,i+250))return!1;if(n.expandedBottom&&n.checkIfPointInRange(t,e,o-500,o+500,i,i+500))return!1;if(n.expandedLeft&&n.checkIfPointInRange(t,e,o-1e3,o,i-250,i+250))return!1}return!0},a.prototype.checkIfPointInRange=function(t,e,n,o,i,r){return t>n&&t<o&&(e>i&&e<r)},a.prototype.calculatePossibleNewPosition=function(t){const e=this,n=e.parent,o=n.x-e.x,i=n.y-e.y;let r=e.x,s=e.y;if(!e.parent.x||!e.parent.y)return[r,s];const a=i/o;return 0===o||Math.abs(o)<50?s=i>0?e.y-t:e.y+t:0===i&&o<0?r=e.x+t:i<0?a<0?(r=e.x-t,s=e.y-t*a):(r=e.x+t,s=e.y+t*a):a<0?(r=e.x+t,s=e.y+t*a):(r=e.x-t,s=e.y-t*a),[r,s]},a.prototype.isNodeCumulator=function(){return!1},a.prototype.expandTriangleClick=function(t,e,n){const o=this,i=["expandedTop","expandedRight","expandedBottom","expandedLeft"][n],r=["expandTopClick","expandRightClick","expandBottomClick","expandLeftClick"][n];o[i]?(o[i]=!1,t.removeNodeChildren(o,n),d3.select(e).classed("expanded",!1)):o[r](t.nodes,function(i){o.updateChildren(i,n),o.updateChildrenPosition(n),t.updateWithChildrenNodes(o),d3.select(e).classed("expanded",!0)})};const d=function(t,e,n,o){a.call(this,t,100,100,e,e.graph),this.hiddenNodes=n||[],this.positionRelativeToParent=o,this.label=this.hiddenNodes.length,this.hiddenButVisible=0,this.childrenTop=[],this.childrenRight=[],this.childrenBottom=[],this.childrenLeft=[]};d.prototype=new a,d.prototype.constructor=d,d.prototype.nodeType="cumulator",d.prototype.getType=function(){return"cumulator"},d.prototype.getHiddenNodes=function(){return this.hiddenNodes},d.prototype.updateCount=function(){this.label=this.hiddenNodes.length-this.hiddenButVisible},d.prototype.decrementTitle=function(){const t=this;t.label-=1,0===t.label&&this.graph.removeNode(t)},d.prototype.expandHiddenNode=function(t,e){const n=this;n.graph.hiddenList.style("display","none"),n.api.getGraph(t.id,function(e){e.rel=t.rel;let o=new a(e,n.x+100+Math.floor(20*Math.random()-10),n.y+100+ +Math.floor(20*Math.random()-10),n.parent,n.graph);o.childrenDownloaded=!0,n.parent["children"+n.positionRelativeToParent.charAt(0).toUpperCase()+n.positionRelativeToParent.slice(1)+"Ref"].push(o),n.graph.nodes.set(o.id,o);let i=n.connectionPointTypes[n.positionRelativeToParent];n.hiddenNodes.splice(n.hiddenNodes.indexOf(t),1),n.decrementTitle(),n.graph.edges.add(new r.Edge(n.parent,o,i,o.parentRel)),n.graph.addEdgesBetweenNewNodes([o]),n.graph.updateGraph()})},d.prototype.addOnclickToCreatedNodes=function(t,e,n){const o=this;for(let t=0;t<e.length;t++)!function(t){let i=e[t];d3.select(i).on("click",function(){o.expandHiddenNode(n[t],o)})}(t)},d.prototype.isNodeCumulator=function(){return!0},d.prototype.getHiddenListHtml=function(){const t=this;let e={html:"",createdIds:[],hiddenRef:[]};return e.html="<ul class='hidden-nodes-list'>",t.hiddenButVisible=0,t.hiddenNodes.forEach((n,o)=>{t.graph.nodes.has(n.id)?t.hiddenButVisible++:(e.html+="\n<li id='hidden-"+n.id+"'>"+n.label+"</li>",e.createdIds.push("#hidden-"+n.id),e.hiddenRef.push(t.hiddenNodes[o]))}),e.html+="\n</ul>",t.updateCount(),e},d.prototype.addHiddenNode=function(t){this.hiddenNodes.push({id:t.id,label:t.label,rel:t.parentRel,pos:t.partOfSpeechId}),this.label+=1}},function(t,e,n){"use strict";n.r(e),function(t){n.d(e,"saveAs",function(){return o});
+/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+var o=o||function(t){if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var e=function(){return t.URL||t.webkitURL||t},n=t.document.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in n,i=/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),r=t.webkitRequestFileSystem,s=t.requestFileSystem||r||t.mozRequestFileSystem,a=function(e){(t.setImmediate||t.setTimeout)(function(){throw e},0)},d="application/octet-stream",l=0,c=function(t){setTimeout(function(){"string"==typeof t?e().revokeObjectURL(t):t.remove()},4e4)},h=function(t,e,n){for(var o=(e=[].concat(e)).length;o--;){var i=t["on"+e[o]];if("function"==typeof i)try{i.call(t,n||t)}catch(t){a(t)}}},p=function(t){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\ufeff",t],{type:t.type}):t},u=function(a,u,f){f||(a=p(a));var g,y,m,x=this,v=a.type,w=!1,b=function(){h(x,"writestart progress write writeend".split(" "))},k=function(){if(y&&i&&"undefined"!=typeof FileReader){var n=new FileReader;return n.onloadend=function(){var t=n.result;y.location.href="data:attachment/file"+t.slice(t.search(/[,;]/)),x.readyState=x.DONE,b()},n.readAsDataURL(a),void(x.readyState=x.INIT)}((w||!g)&&(g=e().createObjectURL(a)),y)?y.location.href=g:void 0===t.open(g,"_blank")&&i&&(t.location.href=g);x.readyState=x.DONE,b(),c(g)},C=function(t){return function(){return x.readyState!==x.DONE?t.apply(this,arguments):void 0}},T={create:!0,exclusive:!1};return x.readyState=x.INIT,u||(u="download"),o?(g=e().createObjectURL(a),void setTimeout(function(){var t,e;n.href=g,n.download=u,t=n,e=new MouseEvent("click"),t.dispatchEvent(e),b(),c(g),x.readyState=x.DONE})):(t.chrome&&v&&v!==d&&(m=a.slice||a.webkitSlice,a=m.call(a,0,a.size,d),w=!0),r&&"download"!==u&&(u+=".download"),(v===d||r)&&(y=t),s?(l+=a.size,void s(t.TEMPORARY,l,C(function(t){t.root.getDirectory("saved",T,C(function(t){var e=function(){t.getFile(u,T,C(function(t){t.createWriter(C(function(e){e.onwriteend=function(e){y.location.href=t.toURL(),x.readyState=x.DONE,h(x,"writeend",e),c(t)},e.onerror=function(){var t=e.error;t.code!==t.ABORT_ERR&&k()},"writestart progress write abort".split(" ").forEach(function(t){e["on"+t]=x["on"+t]}),e.write(a),x.abort=function(){e.abort(),x.readyState=x.DONE},x.readyState=x.WRITING}),k)}),k)};t.getFile(u,{create:!1},C(function(t){t.remove(),e()}),C(function(t){t.code===t.NOT_FOUND_ERR?e():k()}))}),k)}),k)):void k())},f=u.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(t,e,n){return n||(t=p(t)),navigator.msSaveOrOpenBlob(t,e||"download")}:(f.abort=function(){var t=this;t.readyState=t.DONE,h(t,"abort")},f.readyState=f.INIT=0,f.WRITING=1,f.DONE=2,f.error=f.onwritestart=f.onprogress=f.onwrite=f.onabort=f.onerror=f.onwriteend=null,function(t,e,n){return new u(t,e,n)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||(void 0).content);void 0!==t&&t.exports?t.exports.saveAs=o:"undefined"!=typeof define&&null!==define&&null!==n(6)&&define([],function(){return o})}.call(this,n(7)(t))},function(t,e){d3.minimap=function(){"use strict";var t=.15,e=.15,n=null,o=null,i=100,r=100,s=100,a=100,d=0,l=0,c=[];function h(p){p;var u=d3.zoom().scaleExtent([.5,5]),f=function(){var t=g.property("__zoom").k,e=parseInt(o.attr("width")),i=parseInt(o.attr("height")),r=n.getWidth(),s=n.getHeight();u.translateExtent([[-r/t,-s/t],[r/t+e,s/t+i]])};u.on("zoom",function(){if(y.attr("transform",d3.event.transform),d3.event.sourceEvent instanceof MouseEvent||d3.event.sourceEvent instanceof WheelEvent){var t=d3.event.transform,e=d3.zoomIdentity.scale(1/t.k).translate(-t.x,-t.y);n.update(e)}f()});var g=p.append("g").attr("class","minimap");g.call(u),h.node=g.node();var y=g.append("g").attr("class","frame");y.append("rect").attr("class","background").attr("width",i).attr("height",r),c.forEach(t=>{g.append("use").attr("xlink:href",t)}),h.update=function(t){var e=d3.zoomIdentity.scale(1/t.k).translate(-t.x,-t.y);u.transform(y,e),g.property("__zoom",e),f()};let m={x:null,y:null,xRatio:null,yRatio:null,widthRatio:null,heightRatio:null};h.resetScale=function(){m={x:null,y:null,xRatio:null,yRatio:null,widthRatio:null,heightRatio:null},t=e,d=0,l=0,i=s,r=a},h.render=function(){g.attr("transform","translate("+d+","+l+")scale("+t+")"),y.select(".background").attr("width",i).attr("height",r),y.node().parentNode.appendChild(y.node())},h.updateMaxValues=function(n){let o=n.x.max-n.x.min,s=n.y.max-n.y.min;if(!m.x||!m.y)return m.x=o,m.y=s,m.xRatio=o*t,void(m.yRatio=s*t);let a=Math.min(m.xRatio/o,m.yRatio/s);a<t&&(d=(i*e-i*a)/2,l=(r*e-r*a)/2,t=a)},f()}return h.targetShadowId=function(t){return c.push(t),this},h.width=function(t){return arguments.length?(i=parseInt(t,10),this):i},h.height=function(t){return arguments.length?(r=parseInt(t,10),this):r},h.x=function(t){return arguments.length?(d=parseInt(t,10),this):d},h.y=function(t){return arguments.length?(l=parseInt(t,10),this):l},h.host=function(t){return arguments.length?(n=t,this):n},h.minimapScale=function(n){return arguments.length?(e=t=n,this):t},h.target=function(t){return arguments.length?(o=t,s=i=parseInt(o.attr("width"),10),a=r=parseInt(o.attr("height"),10),this):o},h}},function(t,e){(function(e){t.exports=e}).call(this,{})},function(t,e){t.exports=function(t){if(!t.webpackPolyfill){var e=Object.create(t);e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(e,"exports",{enumerable:!0}),e.webpackPolyfill=1}return e}},function(t,e){
+/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */
+!function(t){"use strict";var e,n=t.Uint8Array,o=t.HTMLCanvasElement,i=o&&o.prototype,r=/\s*;\s*base64\s*(?:;|$)/i,s="toDataURL";n&&(e=new n([62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,0,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51])),!o||i.toBlob&&i.toBlobHD||(i.toBlob||(i.toBlob=function(t,o){if(o||(o="image/png"),this.mozGetAsFile)t(this.mozGetAsFile("canvas",o));else if(this.msToBlob&&/^\s*image\/png\s*(?:$|;)/i.test(o))t(this.msToBlob());else{var i,a=Array.prototype.slice.call(arguments,1),d=this[s].apply(this,a),l=d.indexOf(","),c=d.substring(l+1),h=r.test(d.substring(0,l));Blob.fake?((i=new Blob).encoding=h?"base64":"URI",i.data=c,i.size=c.length):n&&(i=h?new Blob([function(t){for(var o,i,r=t.length,s=new n(r/4*3|0),a=0,d=0,l=[0,0],c=0,h=0;r--;)i=t.charCodeAt(a++),255!==(o=e[i-43])&&void 0!==o&&(l[1]=l[0],l[0]=i,h=h<<6|o,4==++c&&(s[d++]=h>>>16,61!==l[1]&&(s[d++]=h>>>8),61!==l[0]&&(s[d++]=h),c=0));return s}(c)],{type:o}):new Blob([decodeURIComponent(c)],{type:o})),t(i)}}),!i.toBlobHD&&i.toDataURLHD?i.toBlobHD=function(){s="toDataURLHD";var t=this.toBlob();return s="toDataURL",t}:i.toBlobHD=i.toBlob)}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content||this)},function(t,e,n){n(8),n(4),n(0),n(1),n(3),n(5),t.exports=n(2)}]);
\ No newline at end of file
diff --git a/js/languageSettings.js b/js/languageSettings.js
new file mode 100644
index 0000000..58aca26
--- /dev/null
+++ b/js/languageSettings.js
@@ -0,0 +1,80 @@
+$(function() {
+  expandNavOnLowResolutions();
+  
+
+  $.widget( "custom.iconselectmenu", $.ui.selectmenu, {
+    _renderItem: function(ul, item) {
+      var li = $("<li>"),
+      wrapper = $("<div>", {text: item.label});
+
+      if (item.disabled) {
+        li.addClass("ui-state-disabled");
+      }
+
+      $("<span>", {
+        style: item.element.attr("data-style"),
+        "class": "ui-icon " + item.element.attr("data-class")
+      }) 
+      .appendTo(wrapper);
+
+      return li.append(wrapper).appendTo(ul);
+    } 
+  });
+
+  $("#languages")
+  .iconselectmenu()
+  .iconselectmenu("menuWidget")
+  .addClass("ui-menu-icons customicons");
+
+  $( "#languages" ).on('iconselectmenuchange', function() {
+    var option = this.value;
+     setLang(option);
+   
+  });
+  
+  let lang=window.localStorage.getItem('lexp.clarin-pl.eu.lang');
+  
+  $("#languages-button .ui-selectmenu-text").html("  ");
+  console.log($("#languages-button .ui-selectmenu-text").get()[0])
+  setLang(lang);
+  
+  function setLang(option)
+  { //console.log(option);
+    window.localStorage.setItem('lexp.clarin-pl.eu.lang', option); 
+    $( "#languages" ).val(option).change();
+    //console.log("val"+$( "#languages" ).val()); 
+    switch(option) {
+      case 'lang-pl':
+        document.body.className = 'pl';
+        document.body.lang = 'pl';
+        
+        $('#languages-button').css('background-image', 'url("/img/lang-pl-32.png")');
+        break;
+      case 'lang-en':
+        document.body.className = 'en';
+        document.body.lang = 'en';
+        $('#languages-button').css('background-image', 'url("/img/lang-en-32.png")');
+        
+        break;
+      case 'lang-de':
+        document.body.className = 'de';
+        document.body.lang = 'de';
+        break;
+      case 'lang-hu':
+        document.body.className = 'hu';
+        document.body.lang = 'hu';
+        break;
+      case 'lang-es':
+        document.body.className = 'es';
+        document.body.lang = 'es';
+        break;
+      case 'lang-ru':
+        document.body.className = 'ru';
+        document.body.lang = 'ru';
+        break;
+      default:
+        setLang('lang-pl') 
+    }
+  };
+
+});
\ No newline at end of file
diff --git a/js/lexp.js b/js/lexp.js
new file mode 100644
index 0000000..71861cb
--- /dev/null
+++ b/js/lexp.js
@@ -0,0 +1,230 @@
+var Lexp = new Object();
+
+Lexp.localHref = function(event) {
+  var target = this.getAttribute("href");
+  Lexp.target = this.getAttribute("source");
+  Lexp.go2URL(target);
+
+  return false;
+}
+
+Lexp.showIndexResults = function (results) {
+  $(Lexp.lexp_placeholder).html("");
+
+  for(var _result in results.results) {
+    var _res = new Resource(_result, results.results[_result], $(Lexp.lexp_placeholder), Lexp);
+    /*console.log("ID:::");
+    console.log(_result);
+    console.log("INFO DATA:::");
+    console.log(results.results[_result]);
+    console.log("TAG:::");
+    console.log($(Lexp.lexp_placeholder));
+    console.log("LEXP:::");
+    console.log(Lexp);*/
+    Lexp.lexpResources[_result] = _res;
+    if (_result == Lexp.target) {
+      _res.element.show();
+      var arrow = $('#lexpresource_' + _result).find('.arrow');
+      if(_res.element.state == "hidden" || _res.element.state == "empty") {
+        $(arrow[0]).removeClass("glyphicon-chevron-up");
+        $(arrow[0]).addClass("glyphicon-chevron-down");
+      } else {
+        $(arrow[0]).removeClass("glyphicon-chevron-down");
+        $(arrow[0]).addClass("glyphicon-chevron-up");
+      }
+    }
+    if (Object.keys(results.results).length == 1) {
+      _res.element.show();
+    }
+  }
+  Lexp.moveHeaders(['plwordnet', 'morfeusz', 'walenty', 'omwn', 'hask', 'spxvi', 'spxvii', 'eswil', 'word2vec']);
+}
+
+Lexp.moveHeaders = function (order) {
+  $('#lexp_results .decoration-box').each(function() {
+    $(this).remove();
+  });
+
+  $(order).each(function(index, element) {
+    if ($('#lexpresource_' + element).length > 0) {
+      $('#lexpresource_' + element).appendTo('#lexp_results');
+      $('#lexpelement_' + element).appendTo('#lexp_results');
+      $('<div class="decoration-box"><div class="decoration"></div></div>').appendTo('#lexp_results');
+    }
+  });
+}
+
+Lexp.lexCall = function (task) {
+  var _what = "/lexp/";
+
+  //only on lexp-dev page !!!!!!!!!
+  task["dev"] = true;
+
+  console.log("_____________________________");
+  console.log("  Task: " + JSON.stringify(task));
+  $("#result").hide();
+  $.ajax({
+    type: "POST",
+    contentType: 'application/json',
+    data: JSON.stringify(task),
+    url: _what,
+    cache: false,
+    processData: false,
+    dataType: "json",
+    success: function(res) {
+      Lexp.urlChange();
+      Lexp.showIndexResults(res);
+    },
+    error:function(jqXHR, exception) {
+      nlp_error(jqXHR,exception);
+      return;
+    }
+  });
+}
+
+Lexp.lexpResources = new Array();
+
+Lexp.setURL = function() {
+  var _stateObj = {foo: "bar"}, _type;
+
+  if(!Lexp.element.type) {
+    _type = "orth";
+  } else {
+    _type = Lexp.element.type;
+  }
+
+  var _url = '';
+  if (Lexp.element.type == 'synsetid') {
+    _url = "/" + Lexp.element.type + "/" + Lexp.element.typeOfSynset + "/" + Lexp.element.val;
+  } else {
+    _url = "/" + Lexp.element.type + "/" + Lexp.element.lang + "/" + Lexp.element.val;
+  }
+
+  history.pushState(_stateObj, "", _url);
+}
+
+Lexp.go2URL = function(pathname) {
+  let decodedPathName = decodeURIComponent(pathname);
+  var _paths = pathname.split("/");
+  if (_paths.length < 4) {
+    return;
+  }
+  var _type = _paths[1],
+      _lang = _paths[2],
+      _typeOfSynset = _paths[2];
+  $("#lang").val(_lang);
+  var _phrase = decodeURIComponent(_paths[3]);
+  $("#phrase").val(_phrase);
+
+  var _element = {"lang" : $("#lang").val()};
+      _element[$("#type").val()] = $("#phrase").val();
+  var _function = "list",
+      _task = {"function" : _function, "element" : _element},
+      lang = $("#lang").val(),
+      type = $("#type").val(),
+      phrase = $("#phrase").val();
+  Lexp.element.path = decodedPathName;
+  // Lexp.element.lemma = _phrase;
+  Lexp.element.type = _type;
+  if (_type == 'lemma') {
+    delete Lexp.element.synsetid;
+    delete Lexp.element.typeOfSynset;
+    Lexp.element.lang = _lang;
+    Lexp.element.lemma = _phrase;
+  }
+  if (_type == 'orth') {
+    delete Lexp.element.lemma;
+    delete Lexp.element.synsetid;
+    delete Lexp.element.typeOfSynset;
+    Lexp.element.lang = _lang;
+    Lexp.element.orth = _phrase;
+  }
+  if (_type == 'synsetid') {
+    delete Lexp.element.lemma;
+    Lexp.element.lang = 'pl';
+    Lexp.element.synsetid = _phrase;
+    Lexp.element.typeOfSynset = _typeOfSynset;
+  }
+  Lexp.element.val = _phrase;
+  Lexp.setURL();
+  var _task = {"function" : _function, "element" : Lexp.element};
+  Lexp.lexCall(_task);
+}
+
+Lexp.init = function(lexp_placeholder) {
+  Lexp.lexp_placeholder = lexp_placeholder;
+  Lexp.target = "";
+  Lexp.element = {'lang' : 'pl', 'lemma' : 'jenerał'};
+  var _pathname = window.location.pathname;
+
+  let decodedPathName = decodeURIComponent(_pathname);
+
+  $("#startlex").click(function() {
+    var _element = {"lang" : $("#lang").val()};
+        _element[$("#type").val()] = $("#phrase").val();
+    var _function = "list",
+        _task = {"function" : _function, "element" : _element},
+        // lang = '',
+        lang = $("#lang").val() || 'pl',
+        typeOfSynset = $('#type-of-synset').val(),
+        type = $("#type").val(),
+        phrase = $("#phrase").val();
+
+    // if ($("#lang").val() != null) {
+    //   lang = $("#lang").val();
+    // } else {
+    //   lang = 'pl';
+    // }
+    Lexp.element = _element;
+    Lexp.element.path = decodedPathName;
+    Lexp.element.type = type;
+    // Lexp.element.lang = lang;
+    if ($('#lang').is(':visible')) {
+      Lexp.element.lang = lang;
+      delete Lexp.element.synsetid;
+      delete Lexp.element.typeOfSynset;
+    }
+    if ($('#type-of-synset').is(':visible')) {
+      // delete Lexp.element.lang;
+      delete Lexp.element.lemma;
+      Lexp.element.synsetid = phrase;
+      Lexp.element.typeOfSynset = typeOfSynset;
+    }
+    Lexp.element.val = phrase;
+    Lexp.setURL();
+    Lexp.lexCall(_task);
+
+    return false;
+  });
+  if (_pathname != '/') {
+    Lexp.go2URL(_pathname);
+  }
+}
+
+Lexp.urlChange = function() {
+  // Language
+  if (window.location.href.indexOf("/pl/") > -1) {
+    $('#lang').val("pl");
+  } else if (window.location.href.indexOf("/en/") > -1) {
+    $('#lang').val("en");
+  } else if (window.location.href.indexOf("/es/") > -1) {
+    $('#lang').val("es");
+  }
+
+  // Type of element
+  if (window.location.href.indexOf("/lemma/") > -1) {
+    $('#lang-box').show();
+    $('#synset-box').hide();
+    $('#type').val("lemma");
+  } else if (window.location.href.indexOf("/orth/") > -1) {
+    $('#lang-box').show();
+    $('#synset-box').hide();
+    $('#type').val("orth");
+  } else if (window.location.href.indexOf("/synsetid/") > -1) {
+    $('#lang-box').hide();
+    $('#synset-box').show();
+    $('#type').val("synsetid");
+  } else {
+    $('#type').val("lemma");
+  }
+}
\ No newline at end of file
diff --git a/js/nav-expand.js b/js/nav-expand.js
new file mode 100644
index 0000000..8677609
--- /dev/null
+++ b/js/nav-expand.js
@@ -0,0 +1,19 @@
+function expandNavOnLowResolutions() {
+  $("html").click(function(e) {
+    var container = $("#nav");
+    if (!container.is(e.target) && container.has(e.target).length === 0) {
+      $("#navbar-collapse-1").css("display", "none").removeClass("in").attr("aria-expanded", false);
+      $("#add-margin-on-nav-expand").stop(true, true).removeClass("hamburger-expanded");
+    }
+  });
+
+  $("#hamburger").click(function(event) {
+    if($("#navbar-collapse-1").hasClass("in")) {
+      $("#navbar-collapse-1").fadeOut();
+      $("#add-margin-on-nav-expand").stop(true, true).removeClass("hamburger-expanded");
+    } else {
+      $("#navbar-collapse-1").fadeIn();
+      $("#add-margin-on-nav-expand").stop(true, true).addClass("hamburger-expanded");
+    }
+  });
+}
\ No newline at end of file
diff --git a/js/options.js b/js/options.js
new file mode 100644
index 0000000..33445a1
--- /dev/null
+++ b/js/options.js
@@ -0,0 +1,97 @@
+$(function() {
+  if (window.location.href.indexOf("/synsetid/") == -1) {
+    $('#synset-box').hide();
+  } else {
+    $('#synset-box').show();
+    $('#type').val("synsetid");
+  }
+
+  $('#type').on('change', function() {
+    let option = $(this).val();
+
+    switch(option) {
+      case 'lemma':
+        $('#synset-box').hide();
+        $('#lang-box').show();
+        break;
+      case 'orth':
+        $('#synset-box').hide();
+        $('#lang-box').show();
+        break;
+      case 'synsetid':
+        $('#lang-box').hide();
+        $('#synset-box').show();
+        break;
+    }
+  });
+});
+
+function selectWord() {
+  let text = "";
+
+  if (window.getSelection) {
+    text = window.getSelection().toString();
+  } else if (document.selection && document.selection.type != "Control") {
+    text = document.selection.createRange().text;
+  }
+
+  // if (text == '' || text == undefined || text == null || text.indexOf(' ') > -1) {
+  if (text == '' || text == undefined || text == null || text.trim().match(' ')) {
+    return;
+  }
+
+  let range = window.getSelection().getRangeAt(0);
+
+  while (range.toString()[0].match(/[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]/)) {
+    if (range.startOffset > 0) {
+      range.setStart(range.startContainer, range.startOffset - 1);
+    }
+    if (range.startOffset == 0) {
+      break;
+    }
+  }
+
+  while (range.toString()[range.toString().length - 1].match(/[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ]/)) {
+    if (range.endOffset >= range.endContainer.length) {
+      break;
+    }
+    range.setEnd(range.endContainer, range.endOffset + 1);
+  }
+
+  if (range.startContainer.data[range.startOffset] == ' ') {
+    range.setStart(range.startContainer, range.startOffset + 1);
+  }
+
+  if (range.endOffset != range.endContainer.length || range.endContainer.data[range.endOffset - 1].match(/[^\sa-zA-Z]/) != null) {
+    range.setEnd(range.endContainer, range.endOffset - 1);
+  }
+
+  let modifiedText = window.getSelection().toString().replace(/[^a-zA-Ząćęłńóśźż]/gi, '');
+
+  return modifiedText;
+}
+
+function positionTooltip(data) {
+  data.lemma = data.lemma.trim().toLowerCase();
+
+  if (data.lemma.length <= 0) {
+    $('#tooltip-test').css('display', 'none');
+    return;
+  }
+
+  if (data.lemma.indexOf(' ') <= -1) {
+    $('#tooltip-test').html('<span lang="pl">Forma wyrazowa: </span><span lang="en">Word form: </span><a style="color: #5AB4FF" href="/orth/' + data.lang + '/' + data.lemma + '">' + data.lemma + '</a>');
+    $('#tooltip-test').css('display', 'inline-block').css('left', data.left).css('top', data.top);
+  }
+
+  hideTooltipOnScrollAndResize();
+}
+
+function hideTooltipOnScrollAndResize() {
+  $(window).scroll(function() {
+    $('#tooltip-test').hide();
+  });
+  $(window).resize(function() {
+    $('#tooltip-test').hide();
+  });
+}
\ No newline at end of file
diff --git a/js/populate-selects.js b/js/populate-selects.js
new file mode 100644
index 0000000..9574c1e
--- /dev/null
+++ b/js/populate-selects.js
@@ -0,0 +1,68 @@
+AppSelect.prototype.fulfillmentOfSelect = function(data) {
+  // 1) Remember options
+  appSelect.rememberStateOfSelect(data);
+  // 2) Delete options
+  appSelect.depopulateSelect(data.selectID);
+  // 3) Set options
+  appSelect.populateSelect(data);
+}
+
+AppSelect.prototype.rememberStateOfSelect = function(data) {
+  var indexOfCurrentlySelectedOption = $('#' + data.selectID).prop('selectedIndex');
+  if (indexOfCurrentlySelectedOption != -1) {
+    data.selected = indexOfCurrentlySelectedOption;
+  }
+}
+
+AppSelect.prototype.populateSelect = function(data) {
+  if(!data.hasOwnProperty('selected')) {
+    data.selected = 0;
+  }
+
+  if(!data.hasOwnProperty('title')) {
+    data.title = {
+      'pl': data.text.pl,
+      'en': data.text.en
+    };
+  }
+
+  if(document.body.className == 'pl') {
+    $.each(data.value, function(i, val) {
+      if(i == data.selected) {
+        $('#' + data.selectID).append(
+          '<option selected title="' + data.title.pl[i] + '" value="' + val + '">' + data.text.pl[i] + '</option>'
+        );
+      } else {
+        $('#' + data.selectID).append(
+          '<option title="' + data.title.pl[i] + '" value="' + val + '">' + data.text.pl[i] + '</option>'
+        );
+      }
+    });
+  } else if (document.body.className == 'en') {
+    $.each(data.value, function(i, val) {
+      if(i == data.selected) {
+        $('#' + data.selectID).append(
+          '<option selected title="' + data.title.en[i] + '" value="' + val + '">' + data.text.en[i] + '</option>'
+        );
+      } else {
+        $('#' + data.selectID).append(
+          '<option title="' + data.title.en[i] + '" value="' + val + '">' + data.text.en[i] + '</option>'
+        );
+      }
+    });
+  }
+}
+
+AppSelect.prototype.depopulateSelect = function(id) {
+  $('#' + id).empty();
+}
+
+AppSelect.prototype.clearCheckedFields = function(id) {
+  $('#' + id).find('input').each(function() {
+    this.checked = false;
+  });
+}
+
+function AppSelect() {}
+
+var appSelect = new AppSelect();
\ No newline at end of file
diff --git a/js/resource.js b/js/resource.js
new file mode 100644
index 0000000..7092b56
--- /dev/null
+++ b/js/resource.js
@@ -0,0 +1,82 @@
+$(function() {
+  var template = $('#handlebars_resource_index').html();
+  Resource.handlebars_resource_index_script = Handlebars.compile(template);
+
+  $( "#languages" ).on('iconselectmenuchange', function() {
+    var option = this.value;
+
+    switch(option) {
+      case 'lang-pl':
+        Resource.handlebars_resource_index_script = Handlebars.compile(template);
+        break;
+      case 'lang-en':
+        Resource.handlebars_resource_index_script = Handlebars.compile(template);
+        break;
+    }
+  });
+
+});
+
+Resource.showModal = function(title, body) {
+  $('#info_modal_title').html("" + title);
+  $('#info_modal_body').html("" + body);
+
+  return true;
+}
+
+Resource.prototype.showInfo = function() {
+  if (document.body.className == 'pl') {
+    Resource.showModal(this.infoData.description.pl.fullName, this.infoData.description.pl.description);
+  } else {
+    console.log(this.infoData.description.en);
+    Resource.showModal(this.infoData.description.en.fullName, this.infoData.description.en.description);
+  }
+}
+
+Resource.prototype.showIndexElement = function () {
+  var _html;
+
+  this.infoData.description.pl.idn = this.id;
+  this.infoData.description.pl.url = this.infoData.url;
+  this.infoData.description.pl.imgSrc = this.id + ".png";
+  this.infoData.description.en.idn = this.id;
+  this.infoData.description.en.url = this.infoData.url;
+  this.infoData.description.en.imgSrc = this.id + ".png";
+  _html = Resource.handlebars_resource_index_script(this.infoData.description);
+
+  // var _html = Resource.handlebars_resource_index_script(this.infoData.description.pl);
+  /*console.log("THIS INFODATA DESCRIPTION PL:::");
+  console.log(this.infoData.description.pl);
+  _html += "<div>Test</div>";*/
+  el = this.tag.append(_html);
+  el = el.children("div#lexpresource_" + this.id);
+  $("[rel=tooltip]").tooltip({html:true});
+  var _this = this,
+      counter = 0;
+
+  el.click(function (event) {
+    var arrow = $(this).find('.arrow');
+    var specificClass = 'arrow';
+    var checkIfTargetHasSpecificClass = event.target.className.indexOf(specificClass) > -1;
+
+    if(event.target.nodeName != "SPAN" || checkIfTargetHasSpecificClass) {
+      if(_this.element.state == "hidden" || _this.element.state == "empty") {
+        $(arrow[0]).removeClass("glyphicon-chevron-down");
+        $(arrow[0]).addClass("glyphicon-chevron-up");
+      } else {
+        $(arrow[0]).removeClass("glyphicon-chevron-up");
+        $(arrow[0]).addClass("glyphicon-chevron-down");
+      }
+      _this.element.toggle();
+    }
+  });
+}
+
+function Resource(id, infoData, tag, lexp) {
+  this.tag = tag;
+  this.id = id;
+  this.infoData = infoData;
+  this.lexp = lexp;
+  this.showIndexElement();
+  this.element = new Element($("#lexpelement_" + this.id), this.id, this.infoData, this.lexp);
+}
\ No newline at end of file
diff --git a/js/selects/basic-options.js b/js/selects/basic-options.js
new file mode 100644
index 0000000..546dd96
--- /dev/null
+++ b/js/selects/basic-options.js
@@ -0,0 +1,48 @@
+$(function() {
+  var typeOfElementSelectData = new Object();
+
+  typeOfElementSelectData.selectID = 'type';
+  typeOfElementSelectData.value = ['lemma', 'orth', 'synsetid'];
+  typeOfElementSelectData.text = {
+    'pl': ['Forma bazowa', 'Forma wyrazowa', 'Identyfikator synsetu'],
+    'en': ['Base form', 'Word form', 'Synset id']
+  };
+
+  var typeOfElementSelectDataString = JSON.stringify(typeOfElementSelectData),
+      typeOfElementSelect = JSON.parse(typeOfElementSelectDataString);
+
+  var languageSelectData = new Object();
+
+  languageSelectData.selectID = 'lang';
+  languageSelectData.value = ['pl', 'en', 'es'];
+  languageSelectData.text = {
+    'pl': ['Polski', 'Angielski', 'Hiszpański'],
+    'en': ['Polish', 'English', 'Spanish']
+  };
+
+  var languageSelectDataString = JSON.stringify(languageSelectData),
+      languageSelect = JSON.parse(languageSelectDataString);
+
+  var typeOfSynsetSelectData = new Object();
+
+  typeOfSynsetSelectData.selectID = 'type-of-synset';
+  typeOfSynsetSelectData.value = ['plwordnet'];
+  typeOfSynsetSelectData.text = {
+    'pl': ['plWordnet'],
+    'en': ['plWordnet']
+  };
+
+  var typeOfSynsetSelectDataString = JSON.stringify(typeOfSynsetSelectData),
+      typeOfSynsetSelect = JSON.parse(typeOfSynsetSelectDataString);
+
+  appSelect.fulfillmentOfSelect(typeOfElementSelect);
+  appSelect.fulfillmentOfSelect(languageSelect);
+  appSelect.fulfillmentOfSelect(typeOfSynsetSelect);
+
+  $( "#languages" ).on('iconselectmenuchange', function() {
+    appSelect.fulfillmentOfSelect(typeOfElementSelect);
+    appSelect.fulfillmentOfSelect(languageSelect);
+    appSelect.fulfillmentOfSelect(typeOfSynsetSelect);
+  });
+
+});
\ No newline at end of file
diff --git a/js/table/bootstrap-table-locale-all.js b/js/table/bootstrap-table-locale-all.js
new file mode 100644
index 0000000..b24b44f
--- /dev/null
+++ b/js/table/bootstrap-table-locale-all.js
@@ -0,0 +1,1592 @@
+/**
+ * Bootstrap Table Afrikaans translation
+ * Author: Phillip Kruger <phillip.kruger@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['af-ZA'] = {
+        formatLoadingMessage: function () {
+            return 'Besig om te laai, wag asseblief ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekords per bladsy';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Resultate ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' rye';
+        },
+        formatSearch: function () {
+            return 'Soek';
+        },
+        formatNoMatches: function () {
+            return 'Geen rekords gevind nie';
+        },
+        formatPaginationSwitch: function () {
+            return 'Wys/verberg bladsy nummering';
+        },
+        formatRefresh: function () {
+            return 'Herlaai';
+        },
+        formatToggle: function () {
+            return 'Wissel';
+        },
+        formatColumns: function () {
+            return 'Kolomme';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['af-ZA']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table English translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ar-SA'] = {
+        formatLoadingMessage: function () {
+            return 'جاري التحميل, يرجى الإنتظار...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' سجل لكل صفحة';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'الظاهر ' + pageFrom + ' إلى ' + pageTo + ' من ' + totalRows + ' سجل';
+        },
+        formatSearch: function () {
+            return 'بحث';
+        },
+        formatNoMatches: function () {
+            return 'لا توجد نتائج مطابقة للبحث';
+        },
+        formatPaginationSwitch: function () {
+            return 'إخفاء\إظهار ترقيم الصفحات';
+        },
+        formatRefresh: function () {
+            return 'تحديث';
+        },
+        formatToggle: function () {
+            return 'تغيير';
+        },
+        formatColumns: function () {
+            return 'أعمدة';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ar-SA']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Catalan translation
+ * Author: Marc Pina<iwalkalone69@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ca-ES'] = {
+        formatLoadingMessage: function () {
+            return 'Si us plau esperi...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' resultats per pàgina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrant de ' + pageFrom + ' fins ' + pageTo + ' - total ' + totalRows + ' resultats';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No s\'han trobat resultats';
+        },
+        formatPaginationSwitch: function () {
+            return 'Amagar/Mostrar paginació';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Amagar/Mostrar';
+        },
+        formatColumns: function () {
+            return 'Columnes';
+        },
+        formatAllRows: function () {
+            return 'Tots';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ca-ES']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Czech translation
+ * Author: Lukas Kral (monarcha@seznam.cz)
+ * Author: Jakub Svestka <svestka1999@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['cs-CZ'] = {
+        formatLoadingMessage: function () {
+            return 'Čekejte, prosím...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' položek na stránku';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Zobrazena ' + pageFrom + '. - ' + pageTo + '. položka z celkových ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Vyhledávání';
+        },
+        formatNoMatches: function () {
+            return 'Nenalezena žádná vyhovující položka';
+        },
+        formatPaginationSwitch: function () {
+            return 'Skrýt/Zobrazit stránkování';
+        },
+        formatRefresh: function () {
+            return 'Aktualizovat';
+        },
+        formatToggle: function () {
+            return 'Přepni';
+        },
+        formatColumns: function () {
+            return 'Sloupce';
+        },
+        formatAllRows: function () {
+            return 'Vše';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['cs-CZ']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table danish translation
+ * Author: Your Name Jan Borup Coyle, github@coyle.dk
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['da-DK'] = {
+        formatLoadingMessage: function () {
+            return 'Indlæser, vent venligst...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' poster pr side';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Viser ' + pageFrom + ' til ' + pageTo + ' af ' + totalRows + ' rækker';
+        },
+        formatSearch: function () {
+            return 'Søg';
+        },
+        formatNoMatches: function () {
+            return 'Ingen poster fundet';
+        },
+        formatRefresh: function () {
+            return 'Opdater';
+        },
+        formatToggle: function () {
+            return 'Skift';
+        },
+        formatColumns: function () {
+            return 'Kolonner';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['da-DK']);
+
+})(jQuery);
+/**
+* Bootstrap Table German translation
+* Author: Paul Mohr - Sopamo<p.mohr@sopamo.de>
+*/
+(function ($) {
+  'use strict';
+
+  $.fn.bootstrapTable.locales['de-DE'] = {
+    formatLoadingMessage: function () {
+      return 'Lade, bitte warten...';
+    },
+    formatRecordsPerPage: function (pageNumber) {
+      return pageNumber + ' Einträge pro Seite';
+    },
+    formatShowingRows: function (pageFrom, pageTo, totalRows) {
+      return 'Zeige ' + pageFrom + ' bis ' + pageTo + ' von ' + totalRows + ' Zeile' + ((totalRows > 1) ? "n" : "");
+    },
+    formatSearch: function () {
+      return 'Suchen';
+    },
+    formatNoMatches: function () {
+      return 'Keine passenden Ergebnisse gefunden';
+    },
+    formatRefresh: function () {
+      return 'Neu laden';
+    },
+    formatToggle: function () {
+      return 'Umschalten';
+    },
+    formatColumns: function () {
+      return 'Spalten';
+    }
+  };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['de-DE']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Greek translation
+ * Author: giannisdallas
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['el-GR'] = {
+        formatLoadingMessage: function () {
+            return 'Φορτώνει, παρακαλώ περιμένετε...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' αποτελέσματα ανά σελίδα';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Εμφανίζονται από την ' + pageFrom + ' ως την ' + pageTo + ' από σύνολο ' + totalRows + ' σειρών';
+        },
+        formatSearch: function () {
+            return 'Αναζητήστε';
+        },
+        formatNoMatches: function () {
+            return 'Δεν βρέθηκαν αποτελέσματα';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['el-GR']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table English translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['en-US'] = {
+        formatLoadingMessage: function () {
+            return 'Loading, please wait...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' records per page';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' rows';
+        },
+        formatSearch: function () {
+            return 'Search';
+        },
+        formatNoMatches: function () {
+            return 'No matching records found';
+        },
+        formatPaginationSwitch: function () {
+            return 'Hide/Show pagination';
+        },
+        formatRefresh: function () {
+            return 'Refresh';
+        },
+        formatToggle: function () {
+            return 'Toggle';
+        },
+        formatColumns: function () {
+            return 'Columns';
+        },
+        formatAllRows: function () {
+            return 'All';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['en-US']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Spanish (Argentina) translation
+ * Author: Felix Vera (felix.vera@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-AR'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, espere por favor...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando ' + pageFrom + ' a ' + pageTo + ' de ' + totalRows + ' filas';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-AR']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Spanish (Costa Rica) translation
+ * Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-CR'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espere...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando de ' + pageFrom + ' a ' + pageTo + ' registros de ' + totalRows + ' registros en total';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-CR']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Spanish Spain translation
+ * Author: Marc Pina<iwalkalone69@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-ES'] = {
+        formatLoadingMessage: function () {
+            return 'Por favor espere...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' resultados por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando desde ' + pageFrom + ' hasta ' + pageTo + ' - En total ' + totalRows + ' resultados';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron resultados';
+        },
+        formatPaginationSwitch: function () {
+            return 'Ocultar/Mostrar paginación';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Ocultar/Mostrar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todos';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-ES']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Spanish (México) translation (Obtenido de traducción de Argentina)
+ * Author: Felix Vera (felix.vera@gmail.com) 
+ * Copiado: Mauricio Vera (mauricioa.vera@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-MX'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, espere por favor...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando ' + pageFrom + ' a ' + pageTo + ' de ' + totalRows + ' filas';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-MX']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Spanish (Nicaragua) translation
+ * Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-NI'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espere...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando de ' + pageFrom + ' a ' + pageTo + ' registros de ' + totalRows + ' registros en total';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-NI']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Spanish (España) translation
+ * Author: Antonio Pérez <anpegar@gmail.com>
+ */
+ (function ($) {
+    'use strict';
+    
+    $.fn.bootstrapTable.locales['es-SP'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espera...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por p&#225;gina.';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return pageFrom + ' - ' + pageTo + ' de ' + totalRows + ' registros.';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se han encontrado registros.';
+        },
+        formatRefresh: function () {
+            return 'Actualizar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-SP']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Estonian translation
+ * Author: kristjan@logist.it>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['et-EE'] = {
+        formatLoadingMessage: function () {
+            return 'Päring käib, palun oota...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rida lehe kohta';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Näitan tulemusi ' + pageFrom + ' kuni ' + pageTo + ' - kokku ' + totalRows + ' tulemust';
+        },
+        formatSearch: function () {
+            return 'Otsi';
+        },
+        formatNoMatches: function () {
+            return 'Päringu tingimustele ei vastanud ühtegi tulemust';
+        },
+        formatPaginationSwitch: function () {
+            return 'Näita/Peida lehtedeks jagamine';
+        },
+        formatRefresh: function () {
+            return 'Värskenda';
+        },
+        formatToggle: function () {
+            return 'Lülita';
+        },
+        formatColumns: function () {
+            return 'Veerud';
+        },
+        formatAllRows: function () {
+            return 'Kõik';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['et-EE']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Persian translation
+ * Author: MJ Vakili <mjv.1989@Gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['fa-IR'] = {
+        formatLoadingMessage: function () {
+            return 'در حال بارگذاری, لطفا صبر کنید...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' رکورد در صفحه';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'نمایش ' + pageFrom + ' تا ' + pageTo + ' از ' + totalRows + ' ردیف';
+        },
+        formatSearch: function () {
+            return 'جستجو';
+        },
+        formatNoMatches: function () {
+            return 'رکوردی یافت نشد.';
+        },
+        formatPaginationSwitch: function () {
+            return 'نمایش/مخفی صفحه بندی';
+        },
+        formatRefresh: function () {
+            return 'به روز رسانی';
+        },
+        formatToggle: function () {
+            return 'تغییر نمایش';
+        },
+        formatColumns: function () {
+            return 'سطر ها';
+        },
+        formatAllRows: function () {
+            return 'همه';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fa-IR']);
+
+})(jQuery);
+/**
+ * Bootstrap Table French (Belgium) translation
+ * Author: Julien Bisconti (julien.bisconti@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['fr-BE'] = {
+        formatLoadingMessage: function () {
+            return 'Chargement en cours...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' entrées par page';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Affiche de' + pageFrom + ' à ' + pageTo + ' sur ' + totalRows + ' lignes';
+        },
+        formatSearch: function () {
+            return 'Recherche';
+        },
+        formatNoMatches: function () {
+            return 'Pas de fichiers trouvés';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fr-BE']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table French (France) translation
+ * Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
+ * Modification: Tidalf (https://github.com/TidalfFR)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['fr-FR'] = {
+        formatLoadingMessage: function () {
+            return 'Chargement en cours, patientez, s´il vous plaît ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' lignes par page';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Affichage des lignes ' + pageFrom + ' à ' + pageTo + ' sur ' + totalRows + ' lignes au total';
+        },
+        formatSearch: function () {
+            return 'Rechercher';
+        },
+        formatNoMatches: function () {
+            return 'Aucun résultat trouvé';
+        },
+        formatRefresh: function () {
+            return 'Rafraîchir';
+        },
+        formatToggle: function () {
+            return 'Alterner';
+        },
+        formatColumns: function () {
+            return 'Colonnes';
+        },
+        formatAllRows: function () {
+            return 'Tous';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fr-FR']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Croatian translation
+ * Author: Petra Å trbenac (petra.strbenac@gmail.com)
+ * Author: Petra Å trbenac (petra.strbenac@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['hr-HR'] = {
+        formatLoadingMessage: function () {
+            return 'Molimo pričekajte ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' broj zapisa po stranici';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Prikazujem ' + pageFrom + '. - ' + pageTo + '. od ukupnog broja zapisa ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Pretraži';
+        },
+        formatNoMatches: function () {
+            return 'Nije pronađen niti jedan zapis';
+        },
+        formatPaginationSwitch: function () {
+            return 'Prikaži/sakrij stranice';
+        },
+        formatRefresh: function () {
+            return 'Osvježi';
+        },
+        formatToggle: function () {
+            return 'Promijeni prikaz';
+        },
+        formatColumns: function () {
+            return 'Kolone';
+        },
+        formatAllRows: function () {
+            return 'Sve';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['hr-HR']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Hungarian translation
+ * Author: Nagy Gergely <info@nagygergely.eu>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['hu-HU'] = {
+        formatLoadingMessage: function () {
+            return 'Betöltés, kérem várjon...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekord per oldal';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Megjelenítve ' + pageFrom + ' - ' + pageTo + ' / ' + totalRows + ' összesen';
+        },
+        formatSearch: function () {
+            return 'Keresés';
+        },
+        formatNoMatches: function () {
+            return 'Nincs találat';
+        },
+        formatPaginationSwitch: function () {
+            return 'Lapozó elrejtése/megjelenítése';
+        },
+        formatRefresh: function () {
+            return 'Frissítés';
+        },
+        formatToggle: function () {
+            return 'Összecsuk/Kinyit';
+        },
+        formatColumns: function () {
+            return 'Oszlopok';
+        },
+        formatAllRows: function () {
+            return 'Összes';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['hu-HU']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Italian translation
+ * Author: Davide Renzi<davide.renzi@gmail.com>
+ * Author: Davide Borsatto <davide.borsatto@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['it-IT'] = {
+        formatLoadingMessage: function () {
+            return 'Caricamento in corso...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' elementi per pagina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Pagina ' + pageFrom + ' di ' + pageTo + ' (' + totalRows + ' records)';
+        },
+        formatSearch: function () {
+            return 'Cerca';
+        },
+        formatNoMatches: function () {
+            return 'Nessun elemento trovato';
+        },
+        formatRefresh: function () {
+            return 'Aggiorna';
+        },
+        formatToggle: function () {
+            return 'Alterna';
+        },
+        formatColumns: function () {
+            return 'Colonne';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['it-IT']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Japanese translation
+ * Author: Azamshul Azizy <azamshul@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ja-JP'] = {
+        formatLoadingMessage: function () {
+            return '読み込み中です。少々お待ちください。';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return 'ページ当たり最大' + pageNumber + '件';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '全' + totalRows + '件から、'+ pageFrom + 'から' + pageTo + '件目まで表示しています';
+        },
+        formatSearch: function () {
+            return '検索';
+        },
+        formatNoMatches: function () {
+            return '該当するレコードが見つかりません';
+        },
+        formatPaginationSwitch: function () {
+            return 'ページ数を表示・非表示';
+        },
+        formatRefresh: function () {
+            return 'æ›´æ–°';
+        },
+        formatToggle: function () {
+            return 'トグル';
+        },
+        formatColumns: function () {
+            return '列';
+        },
+        formatAllRows: function () {
+            return 'すべて';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ja-JP']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Georgian translation
+ * Author: Levan Lotuashvili <l.lotuashvili@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ka-GE'] = {
+        formatLoadingMessage: function() {
+            return 'იტვირთება, გთხოვთ მოიცადოთ...';
+        },
+        formatRecordsPerPage: function(pageNumber) {
+            return pageNumber + ' ჩანაწერი თითო გვერდზე';
+        },
+        formatShowingRows: function(pageFrom, pageTo, totalRows) {
+            return 'ნაჩვენებია ' + pageFrom + '-დან ' + pageTo + '-მდე ჩანაწერი ჯამური ' + totalRows + '-დან';
+        },
+        formatSearch: function() {
+            return 'ძებნა';
+        },
+        formatNoMatches: function() {
+            return 'მონაცემები არ არის';
+        },
+        formatPaginationSwitch: function() {
+            return 'გვერდების გადამრთველის დამალვა/გამოჩენა';
+        },
+        formatRefresh: function() {
+            return 'განახლება';
+        },
+        formatToggle: function() {
+            return 'ჩართვა/გამორთვა';
+        },
+        formatColumns: function() {
+            return 'სვეტები';
+        }
+    };
+    
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ka-GE']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Korean translation
+ * Author: Yi Tae-Hyeong (jsonobject@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ko-KR'] = {
+        formatLoadingMessage: function () {
+            return '데이터를 불러오는 중입니다...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return '페이지 당 ' + pageNumber + '개 데이터 출력';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '전체 ' + totalRows + '개 중 ' + pageFrom + '~' + pageTo + '번째 데이터 출력,';
+        },
+        formatSearch: function () {
+            return '검색';
+        },
+        formatNoMatches: function () {
+            return '조회된 데이터가 없습니다.';
+        },
+        formatRefresh: function () {
+            return '새로 고침';
+        },
+        formatToggle: function () {
+            return '전환';
+        },
+        formatColumns: function () {
+            return '컬럼 필터링';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ko-KR']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Malay translation
+ * Author: Azamshul Azizy <azamshul@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ms-MY'] = {
+        formatLoadingMessage: function () {
+            return 'Permintaan sedang dimuatkan. Sila tunggu sebentar...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekod setiap muka surat';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Sedang memaparkan rekod ' + pageFrom + ' hingga ' + pageTo + ' daripada jumlah ' + totalRows + ' rekod';
+        },
+        formatSearch: function () {
+            return 'Cari';
+        },
+        formatNoMatches: function () {
+            return 'Tiada rekod yang menyamai permintaan';
+        },
+        formatPaginationSwitch: function () {
+            return 'Tunjuk/sembunyi muka surat';
+        },
+        formatRefresh: function () {
+            return 'Muatsemula';
+        },
+        formatToggle: function () {
+            return 'Tukar';
+        },
+        formatColumns: function () {
+            return 'Lajur';
+        },
+        formatAllRows: function () {
+            return 'Semua';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ms-MY']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table norwegian translation
+ * Author: Jim Nordbø, jim@nordb.no
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['nb-NO'] = {
+        formatLoadingMessage: function () {
+            return 'Oppdaterer, vennligst vent...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' poster pr side';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Viser ' + pageFrom + ' til ' + pageTo + ' av ' + totalRows + ' rekker';
+        },
+        formatSearch: function () {
+            return 'Søk';
+        },
+        formatNoMatches: function () {
+            return 'Ingen poster funnet';
+        },
+        formatRefresh: function () {
+            return 'Oppdater';
+        },
+        formatToggle: function () {
+            return 'Endre';
+        },
+        formatColumns: function () {
+            return 'Kolonner';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['nb-NO']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Dutch translation
+ * Author: Your Name <info@a2hankes.nl>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['nl-NL'] = {
+        formatLoadingMessage: function () {
+            return 'Laden, even geduld...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' records per pagina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Toon ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' records';
+        },
+        formatSearch: function () {
+            return 'Zoeken';
+        },
+        formatNoMatches: function () {
+            return 'Geen resultaten gevonden';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['nl-NL']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Polish translation
+ * Author: zergu <michal.zagdan @ gmail com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['pl-PL'] = {
+        formatLoadingMessage: function () {
+            return 'Ładowanie, proszę czekać...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekordów na stronę';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Wyświetlanie rekordów od ' + pageFrom + ' do ' + pageTo + ' z ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Szukaj';
+        },
+        formatNoMatches: function () {
+            return 'Niestety, nic nie znaleziono';
+        },
+        formatRefresh: function () {
+            return 'Odśwież';
+        },
+        formatToggle: function () {
+            return 'Przełącz';
+        },
+        formatColumns: function () {
+            return 'Kolumny';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pl-PL']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Brazilian Portuguese Translation
+ * Author: Eduardo Cerqueira<egcerqueira@gmail.com>
+ * Update: João Mello<jmello@hotmail.com.br>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['pt-BR'] = {
+        formatLoadingMessage: function () {
+            return 'Carregando, aguarde...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Exibindo ' + pageFrom + ' até ' + pageTo + ' de ' + totalRows + ' linhas';
+        },
+        formatSearch: function () { 
+            return 'Pesquisar';
+        },
+        formatRefresh: function () { 
+            return 'Recarregar';
+        },
+        formatToggle: function () { 
+            return 'Alternar';
+        },
+        formatColumns: function () { 
+            return 'Colunas';
+        },
+        formatPaginationSwitch: function () { 
+            return 'Ocultar/Exibir paginação';
+        },
+        formatNoMatches: function () {
+            return 'Nenhum registro encontrado';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pt-BR']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Portuguese Portugal Translation
+ * Author: Burnspirit<burnspirit@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['pt-PT'] = {
+        formatLoadingMessage: function () {
+            return 'A carregar, aguarde...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registos por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'A mostrar ' + pageFrom + ' até ' + pageTo + ' de ' + totalRows + ' linhas';
+        },
+        formatSearch: function () {
+            return 'Pesquisa';
+        },
+        formatNoMatches: function () {
+            return 'Nenhum registo encontrado';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pt-PT']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Romanian translation
+ * Author: cristake <cristianiosif@me.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ro-RO'] = {
+        formatLoadingMessage: function () {
+            return 'Se incarca, va rugam asteptati...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' inregistrari pe pagina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Arata de la ' + pageFrom + ' pana la ' + pageTo + ' din ' + totalRows + ' randuri';
+        },
+        formatSearch: function () {
+            return 'Cauta';
+        },
+        formatNoMatches: function () {
+            return 'Nu au fost gasite inregistrari';
+        },
+        formatPaginationSwitch: function () {
+            return 'Ascunde/Arata paginatia';
+        },
+        formatRefresh: function () {
+            return 'Reincarca';
+        },
+        formatToggle: function () {
+            return 'Comuta';
+        },
+        formatColumns: function () {
+            return 'Coloane';
+        },
+        formatAllRows: function () {
+            return 'Toate';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ro-RO']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Russian translation
+ * Author: Dunaevsky Maxim <dunmaksim@yandex.ru>
+ */
+(function ($) {
+    'use strict';
+    $.fn.bootstrapTable.locales['ru-RU'] = {
+        formatLoadingMessage: function () {
+            return 'Пожалуйста, подождите, идёт загрузка...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' записей на страницу';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Записи с ' + pageFrom + ' по ' + pageTo + ' из ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Поиск';
+        },
+        formatNoMatches: function () {
+            return 'Ничего не найдено';
+        },
+        formatRefresh: function () {
+            return 'Обновить';
+        },
+        formatToggle: function () {
+            return 'Переключить';
+        },
+        formatColumns: function () {
+            return 'Колонки';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ru-RU']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Slovak translation
+ * Author: Jozef Dúc<jozef.d13@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['sk-SK'] = {
+        formatLoadingMessage: function () {
+            return 'Prosím čakajte ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' záznamov na stranu';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Zobrazená ' + pageFrom + '. - ' + pageTo + '. položka z celkových ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Vyhľadávanie';
+        },
+        formatNoMatches: function () {
+            return 'Nenájdená žiadne vyhovujúca položka';
+        },
+        formatRefresh: function () {
+            return 'Obnoviť';
+        },
+        formatToggle: function () {
+            return 'Prepni';
+        },
+        formatColumns: function () {
+            return 'Stĺpce';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['sk-SK']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Swedish translation
+ * Author: C Bratt <bratt@inix.se>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['sv-SE'] = {
+        formatLoadingMessage: function () {
+            return 'Laddar, vänligen vänta...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rader per sida';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Visa ' + pageFrom + ' till ' + pageTo + ' av ' + totalRows + ' rader';
+        },
+        formatSearch: function () {
+            return 'Sök';
+        },
+        formatNoMatches: function () {
+            return 'Inga matchande resultat funna.';
+        },
+        formatRefresh: function () {
+            return 'Uppdatera';
+        },
+        formatToggle: function () {
+            return 'Skifta';
+        },
+        formatColumns: function () {
+            return 'kolumn';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['sv-SE']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Thai translation
+ * Author: Monchai S.<monchais@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['th-TH'] = {
+        formatLoadingMessage: function () {
+            return 'กำลังโหลดข้อมูล, กรุณารอสักครู่...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' รายการต่อหน้า';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'รายการที่ ' + pageFrom + ' ถึง ' + pageTo + ' จากทั้งหมด ' + totalRows + ' รายการ';
+        },
+        formatSearch: function () {
+            return 'ค้นหา';
+        },
+        formatNoMatches: function () {
+            return 'ไม่พบรายการที่ค้นหา !';
+        },
+        formatRefresh: function () {
+            return 'รีเฟรส';
+        },
+        formatToggle: function () {
+            return 'สลับมุมมอง';
+        },
+        formatColumns: function () {
+            return 'คอลัมน์';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['th-TH']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Turkish translation
+ * Author: Emin Åžen
+ * Author: Sercan Cakir <srcnckr@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['tr-TR'] = {
+        formatLoadingMessage: function () {
+            return 'Yükleniyor, lütfen bekleyin...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return 'Sayfa başına ' + pageNumber + ' kayıt.';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return totalRows + ' kayıttan ' + pageFrom + '-' + pageTo + ' arası gösteriliyor.';
+        },
+        formatSearch: function () {
+            return 'Ara';
+        },
+        formatNoMatches: function () {
+            return 'Eşleşen kayıt bulunamadı.';
+        },
+        formatRefresh: function () {
+            return 'Yenile';
+        },
+        formatToggle: function () {
+            return 'DeÄŸiÅŸtir';
+        },
+        formatColumns: function () {
+            return 'Sütunlar';
+        },
+        formatAllRows: function () {
+            return 'Tüm Satırlar';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['tr-TR']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Ukrainian translation
+ * Author: Vitaliy Timchenko <vitaliy.timchenko@gmail.com>
+ */
+ (function ($) {
+    'use strict';
+    
+    $.fn.bootstrapTable.locales['uk-UA'] = {
+        formatLoadingMessage: function () {
+            return 'Завантаження, будь ласка, зачекайте...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' записів на сторінку';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Показано з ' + pageFrom + ' по ' + pageTo + '. Всього: ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Пошук';
+        },
+        formatNoMatches: function () {
+            return 'Не знайдено жодного запису';
+        },
+        formatRefresh: function () {
+            return 'Оновити';
+        },
+        formatToggle: function () {
+            return 'Змінити';
+        },
+        formatColumns: function () {
+            return 'Стовпці';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['uk-UA']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Urdu translation
+ * Author: Malik <me@malikrizwan.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ur-PK'] = {
+        formatLoadingMessage: function () {
+            return 'براۓ مہربانی انتظار کیجئے';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' ریکارڈز فی صفہ ';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'دیکھیں ' + pageFrom + ' سے ' + pageTo + ' کے ' +  totalRows + 'ریکارڈز';
+        },
+        formatSearch: function () {
+            return 'تلاش';
+        },
+        formatNoMatches: function () {
+            return 'کوئی ریکارڈ نہیں ملا';
+        },
+        formatRefresh: function () {
+            return 'تازہ کریں';
+        },
+        formatToggle: function () {
+            return 'تبدیل کریں';
+        },
+        formatColumns: function () {
+            return 'کالم';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ur-PK']);
+
+})(jQuery);
+
+/**
+ * Bootstrap Table Vietnamese translation
+ * Author: Duc N. PHAM <pngduc@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['vi-VN'] = {
+        formatLoadingMessage: function () {
+            return 'Đang tải...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' bản ghi mỗi trang';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Hiển thị từ trang ' + pageFrom + ' đến ' + pageTo + ' của ' + totalRows + ' bảng ghi';
+        },
+        formatSearch: function () {
+            return 'Tìm kiếm';
+        },
+        formatNoMatches: function () {
+            return 'Không có dữ liệu';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['vi-VN']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Chinese translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['zh-CN'] = {
+        formatLoadingMessage: function () {
+            return '正在努力地加载数据中,请稍候……';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return '每页显示 ' + pageNumber + ' 条记录';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录';
+        },
+        formatSearch: function () {
+            return '搜索';
+        },
+        formatNoMatches: function () {
+            return '没有找到匹配的记录';
+        },
+        formatPaginationSwitch: function () {
+            return '隐藏/显示分页';
+        },
+        formatRefresh: function () {
+            return '刷新';
+        },
+        formatToggle: function () {
+            return '切换';
+        },
+        formatColumns: function () {
+            return '列';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);
+
+})(jQuery);
+/**
+ * Bootstrap Table Chinese translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['zh-TW'] = {
+        formatLoadingMessage: function () {
+            return '正在努力地載入資料,請稍候……';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return '每頁顯示 ' + pageNumber + ' 項記錄';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '顯示第 ' + pageFrom + ' 到第 ' + pageTo + ' 項記錄,總共 ' + totalRows + ' 項記錄';
+        },
+        formatSearch: function () {
+            return '搜尋';
+        },
+        formatNoMatches: function () {
+            return '沒有找符合的結果';
+        },
+        formatPaginationSwitch: function () {
+            return '隱藏/顯示分頁';
+        },
+        formatRefresh: function () {
+            return '刷新';
+        },
+        formatToggle: function () {
+            return '切換';
+        },
+        formatColumns: function () {
+            return '列';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-TW']);
+
+})(jQuery);
diff --git a/js/table/bootstrap-table-locale-all.min.js b/js/table/bootstrap-table-locale-all.min.js
new file mode 100644
index 0000000..93ae8f3
--- /dev/null
+++ b/js/table/bootstrap-table-locale-all.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["af-ZA"]={formatLoadingMessage:function(){return"Besig om te laai, wag asseblief ..."},formatRecordsPerPage:function(a){return a+" rekords per bladsy"},formatShowingRows:function(a,b,c){return"Resultate "+a+" tot "+b+" van "+c+" rye"},formatSearch:function(){return"Soek"},formatNoMatches:function(){return"Geen rekords gevind nie"},formatPaginationSwitch:function(){return"Wys/verberg bladsy nummering"},formatRefresh:function(){return"Herlaai"},formatToggle:function(){return"Wissel"},formatColumns:function(){return"Kolomme"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["af-ZA"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ar-SA"]={formatLoadingMessage:function(){return"جاري التحميل, يرجى الإنتظار..."},formatRecordsPerPage:function(a){return a+" سجل لكل صفحة"},formatShowingRows:function(a,b,c){return"الظاهر "+a+" إلى "+b+" من "+c+" سجل"},formatSearch:function(){return"بحث"},formatNoMatches:function(){return"لا توجد نتائج مطابقة للبحث"},formatPaginationSwitch:function(){return"إخفاءإظهار ترقيم الصفحات"},formatRefresh:function(){return"تحديث"},formatToggle:function(){return"تغيير"},formatColumns:function(){return"أعمدة"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ar-SA"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ca-ES"]={formatLoadingMessage:function(){return"Si us plau esperi..."},formatRecordsPerPage:function(a){return a+" resultats per pàgina"},formatShowingRows:function(a,b,c){return"Mostrant de "+a+" fins "+b+" - total "+c+" resultats"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No s'han trobat resultats"},formatPaginationSwitch:function(){return"Amagar/Mostrar paginació"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Amagar/Mostrar"},formatColumns:function(){return"Columnes"},formatAllRows:function(){return"Tots"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ca-ES"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["cs-CZ"]={formatLoadingMessage:function(){return"Čekejte, prosím..."},formatRecordsPerPage:function(a){return a+" položek na stránku"},formatShowingRows:function(a,b,c){return"Zobrazena "+a+". - "+b+". položka z celkových "+c},formatSearch:function(){return"Vyhledávání"},formatNoMatches:function(){return"Nenalezena žádná vyhovující položka"},formatPaginationSwitch:function(){return"Skrýt/Zobrazit stránkování"},formatRefresh:function(){return"Aktualizovat"},formatToggle:function(){return"Přepni"},formatColumns:function(){return"Sloupce"},formatAllRows:function(){return"Vše"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["cs-CZ"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["da-DK"]={formatLoadingMessage:function(){return"Indlæser, vent venligst..."},formatRecordsPerPage:function(a){return a+" poster pr side"},formatShowingRows:function(a,b,c){return"Viser "+a+" til "+b+" af "+c+" rækker"},formatSearch:function(){return"Søg"},formatNoMatches:function(){return"Ingen poster fundet"},formatRefresh:function(){return"Opdater"},formatToggle:function(){return"Skift"},formatColumns:function(){return"Kolonner"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["da-DK"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["de-DE"]={formatLoadingMessage:function(){return"Lade, bitte warten..."},formatRecordsPerPage:function(a){return a+" Einträge pro Seite"},formatShowingRows:function(a,b,c){return"Zeige "+a+" bis "+b+" von "+c+" Zeile"+(c>1?"n":"")},formatSearch:function(){return"Suchen"},formatNoMatches:function(){return"Keine passenden Ergebnisse gefunden"},formatRefresh:function(){return"Neu laden"},formatToggle:function(){return"Umschalten"},formatColumns:function(){return"Spalten"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["de-DE"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["el-GR"]={formatLoadingMessage:function(){return"Φορτώνει, παρακαλώ περιμένετε..."},formatRecordsPerPage:function(a){return a+" αποτελέσματα ανά σελίδα"},formatShowingRows:function(a,b,c){return"Εμφανίζονται από την "+a+" ως την "+b+" από σύνολο "+c+" σειρών"},formatSearch:function(){return"Αναζητήστε"},formatNoMatches:function(){return"Δεν βρέθηκαν αποτελέσματα"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["el-GR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["en-US"]={formatLoadingMessage:function(){return"Loading, please wait..."},formatRecordsPerPage:function(a){return a+" records per page"},formatShowingRows:function(a,b,c){return"Showing "+a+" to "+b+" of "+c+" rows"},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatColumns:function(){return"Columns"},formatAllRows:function(){return"All"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["en-US"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["es-AR"]={formatLoadingMessage:function(){return"Cargando, espere por favor..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando "+a+" a "+b+" de "+c+" filas"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-AR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["es-CR"]={formatLoadingMessage:function(){return"Cargando, por favor espere..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando de "+a+" a "+b+" registros de "+c+" registros en total"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-CR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["es-ES"]={formatLoadingMessage:function(){return"Por favor espere..."},formatRecordsPerPage:function(a){return a+" resultados por página"},formatShowingRows:function(a,b,c){return"Mostrando desde "+a+" hasta "+b+" - En total "+c+" resultados"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron resultados"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Ocultar/Mostrar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todos"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-ES"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["es-MX"]={formatLoadingMessage:function(){return"Cargando, espere por favor..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando "+a+" a "+b+" de "+c+" filas"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-MX"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["es-NI"]={formatLoadingMessage:function(){return"Cargando, por favor espere..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando de "+a+" a "+b+" registros de "+c+" registros en total"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-NI"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["es-SP"]={formatLoadingMessage:function(){return"Cargando, por favor espera..."},formatRecordsPerPage:function(a){return a+" registros por p&#225;gina."},formatShowingRows:function(a,b,c){return a+" - "+b+" de "+c+" registros."},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se han encontrado registros."},formatRefresh:function(){return"Actualizar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-SP"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["et-EE"]={formatLoadingMessage:function(){return"Päring käib, palun oota..."},formatRecordsPerPage:function(a){return a+" rida lehe kohta"},formatShowingRows:function(a,b,c){return"Näitan tulemusi "+a+" kuni "+b+" - kokku "+c+" tulemust"},formatSearch:function(){return"Otsi"},formatNoMatches:function(){return"Päringu tingimustele ei vastanud ühtegi tulemust"},formatPaginationSwitch:function(){return"Näita/Peida lehtedeks jagamine"},formatRefresh:function(){return"Värskenda"},formatToggle:function(){return"Lülita"},formatColumns:function(){return"Veerud"},formatAllRows:function(){return"Kõik"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["et-EE"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["fa-IR"]={formatLoadingMessage:function(){return"در حال بارگذاری, لطفا صبر کنید..."},formatRecordsPerPage:function(a){return a+" رکورد در صفحه"},formatShowingRows:function(a,b,c){return"نمایش "+a+" تا "+b+" از "+c+" ردیف"},formatSearch:function(){return"جستجو"},formatNoMatches:function(){return"رکوردی یافت نشد."},formatPaginationSwitch:function(){return"نمایش/مخفی صفحه بندی"},formatRefresh:function(){return"به روز رسانی"},formatToggle:function(){return"تغییر نمایش"},formatColumns:function(){return"سطر ها"},formatAllRows:function(){return"همه"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["fa-IR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["fr-BE"]={formatLoadingMessage:function(){return"Chargement en cours..."},formatRecordsPerPage:function(a){return a+" entrées par page"},formatShowingRows:function(a,b,c){return"Affiche de"+a+" à "+b+" sur "+c+" lignes"},formatSearch:function(){return"Recherche"},formatNoMatches:function(){return"Pas de fichiers trouvés"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["fr-BE"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["fr-FR"]={formatLoadingMessage:function(){return"Chargement en cours, patientez, s´il vous plaît ..."},formatRecordsPerPage:function(a){return a+" lignes par page"},formatShowingRows:function(a,b,c){return"Affichage des lignes "+a+" à "+b+" sur "+c+" lignes au total"},formatSearch:function(){return"Rechercher"},formatNoMatches:function(){return"Aucun résultat trouvé"},formatRefresh:function(){return"Rafraîchir"},formatToggle:function(){return"Alterner"},formatColumns:function(){return"Colonnes"},formatAllRows:function(){return"Tous"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["fr-FR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["hr-HR"]={formatLoadingMessage:function(){return"Molimo pričekajte ..."},formatRecordsPerPage:function(a){return a+" broj zapisa po stranici"},formatShowingRows:function(a,b,c){return"Prikazujem "+a+". - "+b+". od ukupnog broja zapisa "+c},formatSearch:function(){return"Pretraži"},formatNoMatches:function(){return"Nije pronađen niti jedan zapis"},formatPaginationSwitch:function(){return"Prikaži/sakrij stranice"},formatRefresh:function(){return"Osvježi"},formatToggle:function(){return"Promijeni prikaz"},formatColumns:function(){return"Kolone"},formatAllRows:function(){return"Sve"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["hr-HR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["hu-HU"]={formatLoadingMessage:function(){return"Betöltés, kérem várjon..."},formatRecordsPerPage:function(a){return a+" rekord per oldal"},formatShowingRows:function(a,b,c){return"Megjelenítve "+a+" - "+b+" / "+c+" összesen"},formatSearch:function(){return"Keresés"},formatNoMatches:function(){return"Nincs találat"},formatPaginationSwitch:function(){return"Lapozó elrejtése/megjelenítése"},formatRefresh:function(){return"Frissítés"},formatToggle:function(){return"Összecsuk/Kinyit"},formatColumns:function(){return"Oszlopok"},formatAllRows:function(){return"Összes"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["hu-HU"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["it-IT"]={formatLoadingMessage:function(){return"Caricamento in corso..."},formatRecordsPerPage:function(a){return a+" elementi per pagina"},formatShowingRows:function(a,b,c){return"Pagina "+a+" di "+b+" ("+c+" records)"},formatSearch:function(){return"Cerca"},formatNoMatches:function(){return"Nessun elemento trovato"},formatRefresh:function(){return"Aggiorna"},formatToggle:function(){return"Alterna"},formatColumns:function(){return"Colonne"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["it-IT"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ja-JP"]={formatLoadingMessage:function(){return"読み込み中です。少々お待ちください。"},formatRecordsPerPage:function(a){return"ページ当たり最大"+a+"件"},formatShowingRows:function(a,b,c){return"全"+c+"件から、"+a+"から"+b+"件目まで表示しています"},formatSearch:function(){return"検索"},formatNoMatches:function(){return"該当するレコードが見つかりません"},formatPaginationSwitch:function(){return"ページ数を表示・非表示"},formatRefresh:function(){return"更新"},formatToggle:function(){return"トグル"},formatColumns:function(){return"列"},formatAllRows:function(){return"すべて"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ja-JP"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ka-GE"]={formatLoadingMessage:function(){return"იტვირთება, გთხოვთ მოიცადოთ..."},formatRecordsPerPage:function(a){return a+" ჩანაწერი თითო გვერდზე"},formatShowingRows:function(a,b,c){return"ნაჩვენებია "+a+"-დან "+b+"-მდე ჩანაწერი ჯამური "+c+"-დან"},formatSearch:function(){return"ძებნა"},formatNoMatches:function(){return"მონაცემები არ არის"},formatPaginationSwitch:function(){return"გვერდების გადამრთველის დამალვა/გამოჩენა"},formatRefresh:function(){return"განახლება"},formatToggle:function(){return"ჩართვა/გამორთვა"},formatColumns:function(){return"სვეტები"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ka-GE"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ko-KR"]={formatLoadingMessage:function(){return"데이터를 불러오는 중입니다..."},formatRecordsPerPage:function(a){return"페이지 당 "+a+"개 데이터 출력"},formatShowingRows:function(a,b,c){return"전체 "+c+"개 중 "+a+"~"+b+"번째 데이터 출력,"},formatSearch:function(){return"검색"},formatNoMatches:function(){return"조회된 데이터가 없습니다."},formatRefresh:function(){return"새로 고침"},formatToggle:function(){return"전환"},formatColumns:function(){return"컬럼 필터링"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ko-KR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ms-MY"]={formatLoadingMessage:function(){return"Permintaan sedang dimuatkan. Sila tunggu sebentar..."},formatRecordsPerPage:function(a){return a+" rekod setiap muka surat"},formatShowingRows:function(a,b,c){return"Sedang memaparkan rekod "+a+" hingga "+b+" daripada jumlah "+c+" rekod"},formatSearch:function(){return"Cari"},formatNoMatches:function(){return"Tiada rekod yang menyamai permintaan"},formatPaginationSwitch:function(){return"Tunjuk/sembunyi muka surat"},formatRefresh:function(){return"Muatsemula"},formatToggle:function(){return"Tukar"},formatColumns:function(){return"Lajur"},formatAllRows:function(){return"Semua"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ms-MY"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["nb-NO"]={formatLoadingMessage:function(){return"Oppdaterer, vennligst vent..."},formatRecordsPerPage:function(a){return a+" poster pr side"},formatShowingRows:function(a,b,c){return"Viser "+a+" til "+b+" av "+c+" rekker"},formatSearch:function(){return"Søk"},formatNoMatches:function(){return"Ingen poster funnet"},formatRefresh:function(){return"Oppdater"},formatToggle:function(){return"Endre"},formatColumns:function(){return"Kolonner"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["nb-NO"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["nl-NL"]={formatLoadingMessage:function(){return"Laden, even geduld..."},formatRecordsPerPage:function(a){return a+" records per pagina"},formatShowingRows:function(a,b,c){return"Toon "+a+" tot "+b+" van "+c+" records"},formatSearch:function(){return"Zoeken"},formatNoMatches:function(){return"Geen resultaten gevonden"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["nl-NL"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["pl-PL"]={formatLoadingMessage:function(){return"Ładowanie, proszę czekać..."},formatRecordsPerPage:function(a){return a+" rekordów na stronę"},formatShowingRows:function(a,b,c){return"Wyświetlanie rekordów od "+a+" do "+b+" z "+c},formatSearch:function(){return"Szukaj"},formatNoMatches:function(){return"Niestety, nic nie znaleziono"},formatRefresh:function(){return"Odśwież"},formatToggle:function(){return"Przełącz"},formatColumns:function(){return"Kolumny"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["pl-PL"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["pt-BR"]={formatLoadingMessage:function(){return"Carregando, aguarde..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Exibindo "+a+" até "+b+" de "+c+" linhas"},formatSearch:function(){return"Pesquisar"},formatRefresh:function(){return"Recarregar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Colunas"},formatPaginationSwitch:function(){return"Ocultar/Exibir paginação"},formatNoMatches:function(){return"Nenhum registro encontrado"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["pt-BR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["pt-PT"]={formatLoadingMessage:function(){return"A carregar, aguarde..."},formatRecordsPerPage:function(a){return a+" registos por página"},formatShowingRows:function(a,b,c){return"A mostrar "+a+" até "+b+" de "+c+" linhas"},formatSearch:function(){return"Pesquisa"},formatNoMatches:function(){return"Nenhum registo encontrado"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["pt-PT"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ro-RO"]={formatLoadingMessage:function(){return"Se incarca, va rugam asteptati..."},formatRecordsPerPage:function(a){return a+" inregistrari pe pagina"},formatShowingRows:function(a,b,c){return"Arata de la "+a+" pana la "+b+" din "+c+" randuri"},formatSearch:function(){return"Cauta"},formatNoMatches:function(){return"Nu au fost gasite inregistrari"},formatPaginationSwitch:function(){return"Ascunde/Arata paginatia"},formatRefresh:function(){return"Reincarca"},formatToggle:function(){return"Comuta"},formatColumns:function(){return"Coloane"},formatAllRows:function(){return"Toate"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ro-RO"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ru-RU"]={formatLoadingMessage:function(){return"Пожалуйста, подождите, идёт загрузка..."},formatRecordsPerPage:function(a){return a+" записей на страницу"},formatShowingRows:function(a,b,c){return"Записи с "+a+" по "+b+" из "+c},formatSearch:function(){return"Поиск"},formatNoMatches:function(){return"Ничего не найдено"},formatRefresh:function(){return"Обновить"},formatToggle:function(){return"Переключить"},formatColumns:function(){return"Колонки"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ru-RU"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["sk-SK"]={formatLoadingMessage:function(){return"Prosím čakajte ..."},formatRecordsPerPage:function(a){return a+" záznamov na stranu"},formatShowingRows:function(a,b,c){return"Zobrazená "+a+". - "+b+". položka z celkových "+c},formatSearch:function(){return"Vyhľadávanie"},formatNoMatches:function(){return"Nenájdená žiadne vyhovujúca položka"},formatRefresh:function(){return"Obnoviť"},formatToggle:function(){return"Prepni"},formatColumns:function(){return"Stĺpce"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["sk-SK"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["sv-SE"]={formatLoadingMessage:function(){return"Laddar, vänligen vänta..."},formatRecordsPerPage:function(a){return a+" rader per sida"},formatShowingRows:function(a,b,c){return"Visa "+a+" till "+b+" av "+c+" rader"},formatSearch:function(){return"Sök"},formatNoMatches:function(){return"Inga matchande resultat funna."},formatRefresh:function(){return"Uppdatera"},formatToggle:function(){return"Skifta"},formatColumns:function(){return"kolumn"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["sv-SE"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["th-TH"]={formatLoadingMessage:function(){return"กำลังโหลดข้อมูล, กรุณารอสักครู่..."},formatRecordsPerPage:function(a){return a+" รายการต่อหน้า"},formatShowingRows:function(a,b,c){return"รายการที่ "+a+" ถึง "+b+" จากทั้งหมด "+c+" รายการ"},formatSearch:function(){return"ค้นหา"},formatNoMatches:function(){return"ไม่พบรายการที่ค้นหา !"},formatRefresh:function(){return"รีเฟรส"},formatToggle:function(){return"สลับมุมมอง"},formatColumns:function(){return"คอลัมน์"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["th-TH"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["tr-TR"]={formatLoadingMessage:function(){return"Yükleniyor, lütfen bekleyin..."},formatRecordsPerPage:function(a){return"Sayfa başına "+a+" kayıt."},formatShowingRows:function(a,b,c){return c+" kayıttan "+a+"-"+b+" arası gösteriliyor."},formatSearch:function(){return"Ara"},formatNoMatches:function(){return"Eşleşen kayıt bulunamadı."},formatRefresh:function(){return"Yenile"},formatToggle:function(){return"Değiştir"},formatColumns:function(){return"Sütunlar"},formatAllRows:function(){return"Tüm Satırlar"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["tr-TR"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["uk-UA"]={formatLoadingMessage:function(){return"Завантаження, будь ласка, зачекайте..."},formatRecordsPerPage:function(a){return a+" записів на сторінку"},formatShowingRows:function(a,b,c){return"Показано з "+a+" по "+b+". Всього: "+c},formatSearch:function(){return"Пошук"},formatNoMatches:function(){return"Не знайдено жодного запису"},formatRefresh:function(){return"Оновити"},formatToggle:function(){return"Змінити"},formatColumns:function(){return"Стовпці"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["uk-UA"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["ur-PK"]={formatLoadingMessage:function(){return"براۓ مہربانی انتظار کیجئے"},formatRecordsPerPage:function(a){return a+" ریکارڈز فی صفہ "},formatShowingRows:function(a,b,c){return"دیکھیں "+a+" سے "+b+" کے "+c+"ریکارڈز"},formatSearch:function(){return"تلاش"},formatNoMatches:function(){return"کوئی ریکارڈ نہیں ملا"},formatRefresh:function(){return"تازہ کریں"},formatToggle:function(){return"تبدیل کریں"},formatColumns:function(){return"کالم"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ur-PK"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["vi-VN"]={formatLoadingMessage:function(){return"Đang tải..."},formatRecordsPerPage:function(a){return a+" bản ghi mỗi trang"},formatShowingRows:function(a,b,c){return"Hiển thị từ trang "+a+" đến "+b+" của "+c+" bảng ghi"},formatSearch:function(){return"Tìm kiếm"},formatNoMatches:function(){return"Không có dữ liệu"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["vi-VN"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(a){return"每页显示 "+a+" 条记录"},formatShowingRows:function(a,b,c){return"显示第 "+a+" 到第 "+b+" 条记录,总共 "+c+" 条记录"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-CN"])}(jQuery),function(a){"use strict";a.fn.bootstrapTable.locales["zh-TW"]={formatLoadingMessage:function(){return"正在努力地載入資料,請稍候……"},formatRecordsPerPage:function(a){return"每頁顯示 "+a+" 項記錄"},formatShowingRows:function(a,b,c){return"顯示第 "+a+" 到第 "+b+" 項記錄,總共 "+c+" 項記錄"},formatSearch:function(){return"搜尋"},formatNoMatches:function(){return"沒有找符合的結果"},formatPaginationSwitch:function(){return"隱藏/顯示分頁"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切換"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-TW"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/bootstrap-table.css b/js/table/bootstrap-table.css
new file mode 100644
index 0000000..66d5631
--- /dev/null
+++ b/js/table/bootstrap-table.css
@@ -0,0 +1,297 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * version: 1.8.1
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+
+.bootstrap-table .table {
+    margin-bottom: 0 !important;
+    border-bottom: 1px solid #dddddd;
+    border-collapse: collapse !important;
+    border-radius: 1px;
+}
+
+.bootstrap-table .table:not(.table-condensed),
+.bootstrap-table .table:not(.table-condensed) > tbody > tr > th,
+.bootstrap-table .table:not(.table-condensed) > tfoot > tr > th,
+.bootstrap-table .table:not(.table-condensed) > thead > tr > td,
+.bootstrap-table .table:not(.table-condensed) > tbody > tr > td,
+.bootstrap-table .table:not(.table-condensed) > tfoot > tr > td {
+    padding: 8px !important;
+}
+
+.bootstrap-table .table.table-no-bordered > thead > tr > th,
+.bootstrap-table .table.table-no-bordered > tbody > tr > td {
+    border-right: 2px solid transparent;
+}
+
+.fixed-table-container {
+    position: relative;
+    clear: both;
+    border: 1px solid #dddddd;
+    border-radius: 4px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+}
+
+.fixed-table-container.table-no-bordered {
+    border: 1px solid transparent;
+}
+
+.fixed-table-footer,
+.fixed-table-header {
+    overflow: hidden;
+}
+
+.fixed-table-footer {
+    border-top: 1px solid #dddddd;
+}
+
+.fixed-table-body {
+    overflow-x: auto;
+    overflow-y: auto;
+    height: 100%;
+}
+
+.fixed-table-container table {
+    width: 100%;
+}
+
+.fixed-table-container thead th {
+    height: 0;
+    padding: 0;
+    margin: 0;
+    border-left: 1px solid #dddddd;
+}
+
+.fixed-table-container thead th:first-child {
+    border-left: none;
+    border-top-left-radius: 4px;
+    -webkit-border-top-left-radius: 4px;
+    -moz-border-radius-topleft: 4px;
+}
+
+.fixed-table-container thead th .th-inner,
+.fixed-table-container tbody td .th-inner {
+    padding: 8px;
+    line-height: 24px;
+    vertical-align: top;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.fixed-table-container thead th .sortable {
+    cursor: pointer;
+    background-position: right;
+    background-repeat: no-repeat;
+    padding-right: 30px;
+}
+
+.fixed-table-container thead th .both {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC');
+}
+
+.fixed-table-container thead th .asc {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==');
+}
+
+.fixed-table-container thead th .desc {
+    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII= ');
+}
+
+.fixed-table-container th.detail {
+    width: 30px;
+}
+
+.fixed-table-container tbody td {
+    border-left: 1px solid #dddddd;
+}
+
+.fixed-table-container tbody tr:first-child td {
+    border-top: none;
+}
+
+.fixed-table-container tbody td:first-child {
+    border-left: none;
+}
+
+/* the same color with .active */
+.fixed-table-container tbody .selected td {
+    background-color: #f5f5f5;
+}
+
+.fixed-table-container .bs-checkbox {
+    text-align: center;
+}
+
+.fixed-table-container .bs-checkbox .th-inner {
+    padding: 8px 0;
+}
+
+.fixed-table-container input[type="radio"],
+.fixed-table-container input[type="checkbox"] {
+    margin: 0 auto !important;
+}
+
+.fixed-table-container .no-records-found {
+    text-align: center;
+}
+
+.fixed-table-pagination div.pagination,
+.fixed-table-pagination .pagination-detail {
+    margin-top: 10px;
+    margin-bottom: 10px;
+}
+
+.fixed-table-pagination div.pagination .pagination {
+    margin: 0;
+}
+
+.fixed-table-pagination .pagination a {
+    padding: 6px 12px;
+    line-height: 1.428571429;
+}
+
+.fixed-table-pagination .pagination-info {
+    line-height: 34px;
+    margin-right: 5px;
+}
+
+.fixed-table-pagination .btn-group {
+    position: relative;
+    display: inline-block;
+    vertical-align: middle;
+}
+
+.fixed-table-pagination .dropup .dropdown-menu {
+    margin-bottom: 0;
+}
+
+.fixed-table-pagination .page-list {
+    display: inline-block;
+}
+
+.fixed-table-toolbar .columns-left {
+    margin-right: 5px;
+}
+
+.fixed-table-toolbar .columns-right {
+    margin-left: 5px;
+}
+
+.fixed-table-toolbar .columns label {
+    display: block;
+    padding: 3px 20px;
+    clear: both;
+    font-weight: normal;
+    line-height: 1.428571429;
+}
+
+.fixed-table-toolbar .bars,
+.fixed-table-toolbar .search,
+.fixed-table-toolbar .columns {
+    position: relative;
+    margin-top: 10px;
+    margin-bottom: 10px;
+    line-height: 34px;
+}
+
+.fixed-table-pagination li.disabled a {
+    pointer-events: none;
+    cursor: default;
+}
+
+.fixed-table-loading {
+    display: none;
+    position: absolute;
+    top: 42px;
+    right: 0;
+    bottom: 0;
+    left: 0;
+    z-index: 99;
+    background-color: #fff;
+    text-align: center;
+}
+
+.fixed-table-body .card-view .title {
+    font-weight: bold;
+    display: inline-block;
+    min-width: 30%;
+    text-align: left !important;
+}
+
+/* support bootstrap 2 */
+.fixed-table-body thead th .th-inner {
+    box-sizing: border-box;
+}
+
+.table th, .table td {
+    vertical-align: middle;
+    box-sizing: border-box;
+}
+
+.fixed-table-toolbar .dropdown-menu {
+    text-align: left;
+    max-height: 300px;
+    overflow: auto;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group {
+    display: inline-block;
+    margin-left: -1px !important;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group > .btn {
+    border-radius: 0;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group:first-child > .btn {
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+}
+
+.fixed-table-toolbar .btn-group > .btn-group:last-child > .btn {
+    border-top-right-radius: 4px;
+    border-bottom-right-radius: 4px;
+}
+
+.bootstrap-table .table > thead > tr > th {
+    vertical-align: bottom;
+    border-bottom: 1px solid #ddd;
+}
+
+/* support bootstrap 3 */
+.bootstrap-table .table thead > tr > th {
+    padding: 0;
+    margin: 0;
+}
+
+.bootstrap-table .fixed-table-footer tbody > tr > td {
+    padding: 0 !important;
+}
+
+.bootstrap-table .fixed-table-footer .table {
+    border-bottom: none;
+    border-radius: 0;
+}
+
+.pull-right .dropdown-menu {
+    right: 0;
+    left: auto;
+}
+
+/* calculate scrollbar width */
+p.fixed-table-scroll-inner {
+    width: 100%;
+    height: 200px;
+}
+
+div.fixed-table-scroll-outer {
+    top: 0;
+    left: 0;
+    visibility: hidden;
+    width: 200px;
+    height: 150px;
+    overflow: hidden;
+}
diff --git a/js/table/bootstrap-table.js b/js/table/bootstrap-table.js
new file mode 100644
index 0000000..f8715e9
--- /dev/null
+++ b/js/table/bootstrap-table.js
@@ -0,0 +1,2690 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * version: 1.9.1
+ * https://github.com/wenzhixin/bootstrap-table/
+ */
+
+!function ($) {
+    'use strict';
+
+    // TOOLS DEFINITION
+    // ======================
+
+    var cachedWidth = null;
+
+    // it only does '%s', and return '' when arguments are undefined
+    var sprintf = function (str) {
+        var args = arguments,
+            flag = true,
+            i = 1;
+
+        str = str.replace(/%s/g, function () {
+            var arg = args[i++];
+
+            if (typeof arg === 'undefined') {
+                flag = false;
+                return '';
+            }
+            return arg;
+        });
+        return flag ? str : '';
+    };
+
+    var getPropertyFromOther = function (list, from, to, value) {
+        var result = '';
+        $.each(list, function (i, item) {
+            if (item[from] === value) {
+                result = item[to];
+                return false;
+            }
+            return true;
+        });
+        return result;
+    };
+
+    var getFieldIndex = function (columns, field) {
+        var index = -1;
+
+        $.each(columns, function (i, column) {
+            if (column.field === field) {
+                index = i;
+                return false;
+            }
+            return true;
+        });
+        return index;
+    };
+
+    // http://jsfiddle.net/wenyi/47nz7ez9/3/
+    var setFieldIndex = function (columns) {
+        var i, j, k,
+            totalCol = 0,
+            flag = [];
+
+        for (i = 0; i < columns[0].length; i++) {
+            totalCol += columns[0][i].colspan || 1;
+        }
+
+        for (i = 0; i < columns.length; i++) {
+            flag[i] = [];
+            for (j = 0; j < totalCol; j++) {
+                flag[i][j] = false;
+            }
+        }
+
+        for (i = 0; i < columns.length; i++) {
+            for (j = 0; j < columns[i].length; j++) {
+                var r = columns[i][j],
+                    rowspan = r.rowspan || 1,
+                    colspan = r.colspan || 1,
+                    index = $.inArray(false, flag[i]);
+
+                if (colspan === 1) {
+                    r.fieldIndex = index;
+                    // when field is undefined, use index instead
+                    if (typeof r.field === 'undefined') {
+                        r.field = index;
+                    }
+                }
+
+                for (k = 0; k < rowspan; k++) {
+                    flag[i + k][index] = true;
+                }
+                for (k = 0; k < colspan; k++) {
+                    flag[i][index + k] = true;
+                }
+            }
+        }
+    };
+
+    var getScrollBarWidth = function () {
+        if (cachedWidth === null) {
+            var inner = $('<p/>').addClass('fixed-table-scroll-inner'),
+                outer = $('<div/>').addClass('fixed-table-scroll-outer'),
+                w1, w2;
+
+            outer.append(inner);
+            $('body').append(outer);
+
+            w1 = inner[0].offsetWidth;
+            outer.css('overflow', 'scroll');
+            w2 = inner[0].offsetWidth;
+
+            if (w1 === w2) {
+                w2 = outer[0].clientWidth;
+            }
+
+            outer.remove();
+            cachedWidth = w1 - w2;
+        }
+        return cachedWidth;
+    };
+
+    var calculateObjectValue = function (self, name, args, defaultValue) {
+        var func = name;
+
+        if (typeof name === 'string') {
+            // support obj.func1.func2
+            var names = name.split('.');
+
+            if (names.length > 1) {
+                func = window;
+                $.each(names, function (i, f) {
+                    func = func[f];
+                });
+            } else {
+                func = window[name];
+            }
+        }
+        if (typeof func === 'object') {
+            return func;
+        }
+        if (typeof func === 'function') {
+            return func.apply(self, args);
+        }
+        if (!func && typeof name === 'string' && sprintf.apply(this, [name].concat(args))) {
+            return sprintf.apply(this, [name].concat(args));
+        }
+        return defaultValue;
+    };
+
+    var compareObjects = function (objectA, objectB, compareLength) {
+        // Create arrays of property names
+        var objectAProperties = Object.getOwnPropertyNames(objectA),
+            objectBProperties = Object.getOwnPropertyNames(objectB),
+            propName = '';
+
+        if (compareLength) {
+            // If number of properties is different, objects are not equivalent
+            if (objectAProperties.length !== objectBProperties.length) {
+                return false;
+            }
+        }
+
+        for (var i = 0; i < objectAProperties.length; i++) {
+            propName = objectAProperties[i];
+
+            // If the property is not in the object B properties, continue with the next property
+            if ($.inArray(propName, objectBProperties) > -1) {
+                // If values of same property are not equal, objects are not equivalent
+                if (objectA[propName] !== objectB[propName]) {
+                    return false;
+                }
+            }
+        }
+
+        // If we made it this far, objects are considered equivalent
+        return true;
+    };
+
+    var escapeHTML = function (text) {
+        if (typeof text === 'string') {
+            return text
+                .replace(/&/g, "&amp;")
+                .replace(/</g, "&lt;")
+                .replace(/>/g, "&gt;")
+                .replace(/"/g, "&quot;")
+                .replace(/'/g, "&#039;");
+        }
+        return text;
+    };
+
+    var getRealHeight = function ($el) {
+        var height = 0;
+        $el.children().each(function () {
+            if (height < $(this).outerHeight(true)) {
+                height = $(this).outerHeight(true);
+            }
+        });
+        return height;
+    };
+
+    var getRealDataAttr = function (dataAttr) {
+        for (var attr in dataAttr) {
+            var auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase();
+            if (auxAttr !== attr) {
+                dataAttr[auxAttr] = dataAttr[attr];
+                delete dataAttr[attr];
+            }
+        }
+
+        return dataAttr;
+    };
+
+    var getItemField = function (item, field) {
+        var value = item;
+
+        if (typeof field !== 'string' || item.hasOwnProperty(field)) {
+            return item[field];
+        }
+        var props = field.split('.');
+        for (var p in props) {
+            value = value[props[p]];
+        }
+        return value;
+    };
+
+    // BOOTSTRAP TABLE CLASS DEFINITION
+    // ======================
+
+    var BootstrapTable = function (el, options) {
+        this.options = options;
+        this.$el = $(el);
+        this.$el_ = this.$el.clone();
+        this.timeoutId_ = 0;
+        this.timeoutFooter_ = 0;
+
+        this.init();
+    };
+
+    BootstrapTable.DEFAULTS = {
+        classes: 'table table-hover',
+        locale: undefined,
+        height: undefined,
+        undefinedText: '-',
+        sortName: undefined,
+        sortOrder: 'asc',
+        striped: false,
+        columns: [[]],
+        data: [],
+        dataField: 'rows',
+        method: 'get',
+        url: undefined,
+        ajax: undefined,
+        cache: true,
+        contentType: 'application/json',
+        dataType: 'json',
+        ajaxOptions: {},
+        queryParams: function (params) {
+            return params;
+        },
+        queryParamsType: 'limit', // undefined
+        responseHandler: function (res) {
+            return res;
+        },
+        pagination: false,
+        onlyInfoPagination: false,
+        sidePagination: 'client', // client or server
+        totalRows: 0, // server side need to set
+        pageNumber: 1,
+        pageSize: 10,
+        pageList: [10, 25, 50, 100],
+        paginationHAlign: 'right', //right, left
+        paginationVAlign: 'bottom', //bottom, top, both
+        paginationDetailHAlign: 'left', //right, left
+        paginationFirstText: '&laquo;',
+        paginationPreText: '&lsaquo;',
+        paginationNextText: '&rsaquo;',
+        paginationLastText: '&raquo;',
+        search: false,
+        strictSearch: false,
+        searchAlign: 'right',
+        selectItemName: 'btSelectItem',
+        showHeader: true,
+        showFooter: false,
+        showColumns: false,
+        showPaginationSwitch: false,
+        showRefresh: false,
+        showToggle: false,
+        buttonsAlign: 'right',
+        smartDisplay: true,
+        minimumCountColumns: 1,
+        idField: undefined,
+        uniqueId: undefined,
+        cardView: false,
+        detailView: false,
+        detailFormatter: function (index, row) {
+            return '';
+        },
+        trimOnSearch: true,
+        clickToSelect: false,
+        singleSelect: false,
+        toolbar: undefined,
+        toolbarAlign: 'left',
+        checkboxHeader: true,
+        sortable: true,
+        silentSort: true,
+        maintainSelected: false,
+        searchTimeOut: 500,
+        searchText: '',
+        iconSize: undefined,
+        iconsPrefix: 'glyphicon', // glyphicon of fa (font awesome)
+        icons: {
+            paginationSwitchDown: 'glyphicon-collapse-down icon-chevron-down',
+            paginationSwitchUp: 'glyphicon-collapse-up icon-chevron-up',
+            refresh: 'glyphicon-refresh icon-refresh',
+            toggle: 'glyphicon-list-alt icon-list-alt',
+            columns: 'glyphicon-th icon-th',
+            detailOpen: 'glyphicon-plus icon-plus',
+            detailClose: 'glyphicon-minus icon-minus'
+        },
+
+        rowStyle: function (row, index) {
+            return {};
+        },
+
+        rowAttributes: function (row, index) {
+            return {};
+        },
+
+        onAll: function (name, args) {
+            return false;
+        },
+        onClickCell: function (field, value, row, $element) {
+            return false;
+        },
+        onDblClickCell: function (field, value, row, $element) {
+            return false;
+        },
+        onClickRow: function (item, $element) {
+            return false;
+        },
+        onDblClickRow: function (item, $element) {
+            return false;
+        },
+        onSort: function (name, order) {
+            return false;
+        },
+        onCheck: function (row) {
+            return false;
+        },
+        onUncheck: function (row) {
+            return false;
+        },
+        onCheckAll: function (rows) {
+            return false;
+        },
+        onUncheckAll: function (rows) {
+            return false;
+        },
+        onCheckSome: function (rows) {
+            return false;
+        },
+        onUncheckSome: function (rows) {
+            return false;
+        },
+        onLoadSuccess: function (data) {
+            return false;
+        },
+        onLoadError: function (status) {
+            return false;
+        },
+        onColumnSwitch: function (field, checked) {
+            return false;
+        },
+        onPageChange: function (number, size) {
+            return false;
+        },
+        onSearch: function (text) {
+            return false;
+        },
+        onToggle: function (cardView) {
+            return false;
+        },
+        onPreBody: function (data) {
+            return false;
+        },
+        onPostBody: function () {
+            return false;
+        },
+        onPostHeader: function () {
+            return false;
+        },
+        onExpandRow: function (index, row, $detail) {
+            return false;
+        },
+        onCollapseRow: function (index, row) {
+            return false;
+        },
+        onRefreshOptions: function (options) {
+            return false;
+        },
+        onResetView: function () {
+            return false;
+        }
+    };
+
+    BootstrapTable.LOCALES = [];
+
+    BootstrapTable.LOCALES['en-US'] = BootstrapTable.LOCALES['en'] = {
+        formatLoadingMessage: function () {
+            return 'Loading, please wait...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return sprintf('%s records per page', pageNumber);
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return sprintf('Showing %s to %s of %s rows', pageFrom, pageTo, totalRows);
+        },
+        formatDetailPagination: function (totalRows) {
+            return sprintf('Showing %s rows', totalRows);
+        },
+        formatSearch: function () {
+            return 'Search';
+        },
+        formatNoMatches: function () {
+            return 'No matching records found';
+        },
+        formatPaginationSwitch: function () {
+            return 'Hide/Show pagination';
+        },
+        formatRefresh: function () {
+            return 'Refresh';
+        },
+        formatToggle: function () {
+            return 'Toggle';
+        },
+        formatColumns: function () {
+            return 'Columns';
+        },
+        formatAllRows: function () {
+            return 'All';
+        }
+    };
+
+    $.extend(BootstrapTable.DEFAULTS, BootstrapTable.LOCALES['en-US']);
+
+    BootstrapTable.COLUMN_DEFAULTS = {
+        radio: false,
+        checkbox: false,
+        checkboxEnabled: true,
+        field: undefined,
+        title: undefined,
+        titleTooltip: undefined,
+        'class': undefined,
+        align: undefined, // left, right, center
+        halign: undefined, // left, right, center
+        falign: undefined, // left, right, center
+        valign: undefined, // top, middle, bottom
+        width: undefined,
+        sortable: false,
+        order: 'asc', // asc, desc
+        visible: true,
+        switchable: true,
+        clickToSelect: true,
+        formatter: undefined,
+        footerFormatter: undefined,
+        events: undefined,
+        sorter: undefined,
+        sortName: undefined,
+        cellStyle: undefined,
+        searchable: true,
+        searchFormatter: true,
+        cardVisible: true
+    };
+
+    BootstrapTable.EVENTS = {
+        'all.bs.table': 'onAll',
+        'click-cell.bs.table': 'onClickCell',
+        'dbl-click-cell.bs.table': 'onDblClickCell',
+        'click-row.bs.table': 'onClickRow',
+        'dbl-click-row.bs.table': 'onDblClickRow',
+        'sort.bs.table': 'onSort',
+        'check.bs.table': 'onCheck',
+        'uncheck.bs.table': 'onUncheck',
+        'check-all.bs.table': 'onCheckAll',
+        'uncheck-all.bs.table': 'onUncheckAll',
+        'check-some.bs.table': 'onCheckSome',
+        'uncheck-some.bs.table': 'onUncheckSome',
+        'load-success.bs.table': 'onLoadSuccess',
+        'load-error.bs.table': 'onLoadError',
+        'column-switch.bs.table': 'onColumnSwitch',
+        'page-change.bs.table': 'onPageChange',
+        'search.bs.table': 'onSearch',
+        'toggle.bs.table': 'onToggle',
+        'pre-body.bs.table': 'onPreBody',
+        'post-body.bs.table': 'onPostBody',
+        'post-header.bs.table': 'onPostHeader',
+        'expand-row.bs.table': 'onExpandRow',
+        'collapse-row.bs.table': 'onCollapseRow',
+        'refresh-options.bs.table': 'onRefreshOptions',
+        'reset-view.bs.table': 'onResetView'
+    };
+
+    BootstrapTable.prototype.init = function () {
+        this.initLocale();
+        this.initContainer();
+        this.initTable();
+        this.initHeader();
+        this.initData();
+        this.initFooter();
+        this.initToolbar();
+        this.initPagination();
+        this.initBody();
+        this.initSearchText();
+        this.initServer();
+    };
+
+    BootstrapTable.prototype.initLocale = function () {
+        if (this.options.locale) {
+            var parts = this.options.locale.split(/-|_/);
+            parts[0].toLowerCase();
+            parts[1] && parts[1].toUpperCase();
+            if ($.fn.bootstrapTable.locales[this.options.locale]) {
+                // locale as requested
+                $.extend(this.options, $.fn.bootstrapTable.locales[this.options.locale]);
+            } else if ($.fn.bootstrapTable.locales[parts.join('-')]) {
+                // locale with sep set to - (in case original was specified with _)
+                $.extend(this.options, $.fn.bootstrapTable.locales[parts.join('-')]);
+            } else if ($.fn.bootstrapTable.locales[parts[0]]) {
+                // short locale language code (i.e. 'en')
+                $.extend(this.options, $.fn.bootstrapTable.locales[parts[0]]);
+            }
+        }
+    };
+
+    BootstrapTable.prototype.initContainer = function () {
+        this.$container = $([
+            '<div class="bootstrap-table">',
+            '<div class="fixed-table-toolbar"></div>',
+            this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?
+                '<div class="fixed-table-pagination" style="clear: both;"></div>' :
+                '',
+            '<div class="fixed-table-container">',
+            '<div class="fixed-table-header"><table></table></div>',
+            '<div class="fixed-table-body">',
+            '<div class="fixed-table-loading">',
+            this.options.formatLoadingMessage(),
+            '</div>',
+            '</div>',
+            '<div class="fixed-table-footer"><table><tr></tr></table></div>',
+            this.options.paginationVAlign === 'bottom' || this.options.paginationVAlign === 'both' ?
+                '<div class="fixed-table-pagination"></div>' :
+                '',
+            '</div>',
+            '</div>'
+        ].join(''));
+
+        this.$container.insertAfter(this.$el);
+        this.$tableContainer = this.$container.find('.fixed-table-container');
+        this.$tableHeader = this.$container.find('.fixed-table-header');
+        this.$tableBody = this.$container.find('.fixed-table-body');
+        this.$tableLoading = this.$container.find('.fixed-table-loading');
+        this.$tableFooter = this.$container.find('.fixed-table-footer');
+        this.$toolbar = this.$container.find('.fixed-table-toolbar');
+        this.$pagination = this.$container.find('.fixed-table-pagination');
+
+        this.$tableBody.append(this.$el);
+        this.$container.after('<div class="clearfix"></div>');
+
+        this.$el.addClass(this.options.classes);
+        if (this.options.striped) {
+            this.$el.addClass('table-striped');
+        }
+        if ($.inArray('table-no-bordered', this.options.classes.split(' ')) !== -1) {
+            this.$tableContainer.addClass('table-no-bordered');
+        }
+    };
+
+    BootstrapTable.prototype.initTable = function () {
+        var that = this,
+            columns = [],
+            data = [];
+
+        this.$header = this.$el.find('>thead');
+        if (!this.$header.length) {
+            this.$header = $('<thead></thead>').appendTo(this.$el);
+        }
+        this.$header.find('tr').each(function () {
+            var column = [];
+
+            $(this).find('th').each(function () {
+                column.push($.extend({}, {
+                    title: $(this).html(),
+                    'class': $(this).attr('class'),
+                    titleTooltip: $(this).attr('title'),
+                    rowspan: $(this).attr('rowspan') ? +$(this).attr('rowspan') : undefined,
+                    colspan: $(this).attr('colspan') ? +$(this).attr('colspan') : undefined
+                }, $(this).data()));
+            });
+            columns.push(column);
+        });
+        if (!$.isArray(this.options.columns[0])) {
+            this.options.columns = [this.options.columns];
+        }
+        this.options.columns = $.extend(true, [], columns, this.options.columns);
+        this.columns = [];
+
+        setFieldIndex(this.options.columns);
+        $.each(this.options.columns, function (i, columns) {
+            $.each(columns, function (j, column) {
+                column = $.extend({}, BootstrapTable.COLUMN_DEFAULTS, column);
+
+                if (typeof column.fieldIndex !== 'undefined') {
+                    that.columns[column.fieldIndex] = column;
+                }
+
+                that.options.columns[i][j] = column;
+            });
+        });
+
+        // if options.data is setting, do not process tbody data
+        if (this.options.data.length) {
+            return;
+        }
+
+        this.$el.find('>tbody>tr').each(function () {
+            var row = {};
+
+            // save tr's id, class and data-* attributes
+            row._id = $(this).attr('id');
+            row._class = $(this).attr('class');
+            row._data = getRealDataAttr($(this).data());
+
+            $(this).find('td').each(function (i) {
+                var field = that.columns[i].field;
+
+                row[field] = $(this).html();
+                // save td's id, class and data-* attributes
+                row['_' + field + '_id'] = $(this).attr('id');
+                row['_' + field + '_class'] = $(this).attr('class');
+                row['_' + field + '_rowspan'] = $(this).attr('rowspan');
+                row['_' + field + '_title'] = $(this).attr('title');
+                row['_' + field + '_data'] = getRealDataAttr($(this).data());
+            });
+            data.push(row);
+        });
+        this.options.data = data;
+    };
+
+    BootstrapTable.prototype.initHeader = function () {
+        var that = this,
+            visibleColumns = {},
+            html = [];
+
+        this.header = {
+            fields: [],
+            styles: [],
+            classes: [],
+            formatters: [],
+            events: [],
+            sorters: [],
+            sortNames: [],
+            cellStyles: [],
+            searchables: []
+        };
+
+        $.each(this.options.columns, function (i, columns) {
+            html.push('<tr>');
+
+            if (i == 0 && !that.options.cardView && that.options.detailView) {
+                html.push(sprintf('<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>',
+                    that.options.columns.length));
+            }
+
+            $.each(columns, function (j, column) {
+                var text = '',
+                    halign = '', // header align style
+                    align = '', // body align style
+                    style = '',
+                    class_ = sprintf(' class="%s"', column['class']),
+                    order = that.options.sortOrder || column.order,
+                    unitWidth = 'px',
+                    width = column.width;
+
+                if (column.width !== undefined && (!that.options.cardView)) {
+                    if (typeof column.width === 'string') {
+                        if (column.width.indexOf('%') !== -1) {
+                            unitWidth = '%';
+                        }
+                    }
+                }
+                if (column.width && typeof column.width === 'string') {
+                    width = column.width.replace('%', '').replace('px', '');
+                }
+
+                halign = sprintf('text-align: %s; ', column.halign ? column.halign : column.align);
+                align = sprintf('text-align: %s; ', column.align);
+                style = sprintf('vertical-align: %s; ', column.valign);
+                style += sprintf('width: %s; ', (column.checkbox || column.radio) && !width ?
+                    '36px' : (width ? width + unitWidth : undefined));
+
+                if (typeof column.fieldIndex !== 'undefined') {
+                    that.header.fields[column.fieldIndex] = column.field;
+                    that.header.styles[column.fieldIndex] = align + style;
+                    that.header.classes[column.fieldIndex] = class_;
+                    that.header.formatters[column.fieldIndex] = column.formatter;
+                    that.header.events[column.fieldIndex] = column.events;
+                    that.header.sorters[column.fieldIndex] = column.sorter;
+                    that.header.sortNames[column.fieldIndex] = column.sortName;
+                    that.header.cellStyles[column.fieldIndex] = column.cellStyle;
+                    that.header.searchables[column.fieldIndex] = column.searchable;
+
+                    if (!column.visible) {
+                        return;
+                    }
+
+                    if (that.options.cardView && (!column.cardVisible)) {
+                        return;
+                    }
+
+                    visibleColumns[column.field] = column;
+                }
+
+                html.push('<th' + sprintf(' title="%s"', column.titleTooltip),
+                    column.checkbox || column.radio ?
+                        sprintf(' class="bs-checkbox %s"', column['class'] || '') :
+                        class_,
+                    sprintf(' style="%s"', halign + style),
+                    sprintf(' rowspan="%s"', column.rowspan),
+                    sprintf(' colspan="%s"', column.colspan),
+                    sprintf(' data-field="%s"', column.field),
+                    "tabindex='0'",
+                    '>');
+
+                html.push(sprintf('<div class="th-inner %s">', that.options.sortable && column.sortable ?
+                    'sortable both' : ''));
+
+                text = column.title;
+
+                if (column.checkbox) {
+                    if (!that.options.singleSelect && that.options.checkboxHeader) {
+                        text = '<input name="btSelectAll" type="checkbox" />';
+                    }
+                    that.header.stateField = column.field;
+                }
+                if (column.radio) {
+                    text = '';
+                    that.header.stateField = column.field;
+                    that.options.singleSelect = true;
+                }
+
+                html.push(text);
+                html.push('</div>');
+                html.push('<div class="fht-cell"></div>');
+                html.push('</div>');
+                html.push('</th>');
+            });
+            html.push('</tr>');
+        });
+
+        this.$header.html(html.join(''));
+        this.$header.find('th[data-field]').each(function (i) {
+            $(this).data(visibleColumns[$(this).data('field')]);
+        });
+        this.$container.off('click', '.th-inner').on('click', '.th-inner', function (event) {
+            if (that.options.sortable && $(this).parent().data().sortable) {
+                that.onSort(event);
+            }
+        });
+
+        this.$header.children().children().off('keypress').on('keypress', function (event) {
+            if (that.options.sortable && $(this).data().sortable) {
+                var code = event.keyCode || event.which;
+                if (code == 13) { //Enter keycode
+                    that.onSort(event);
+                }
+            }
+        });
+
+        if (!this.options.showHeader || this.options.cardView) {
+            this.$header.hide();
+            this.$tableHeader.hide();
+            this.$tableLoading.css('top', 0);
+        } else {
+            this.$header.show();
+            this.$tableHeader.show();
+            this.$tableLoading.css('top', this.$header.outerHeight() + 1);
+            // Assign the correct sortable arrow
+            this.getCaret();
+        }
+
+        this.$selectAll = this.$header.find('[name="btSelectAll"]');
+        this.$container.off('click', '[name="btSelectAll"]')
+            .on('click', '[name="btSelectAll"]', function () {
+                var checked = $(this).prop('checked');
+                that[checked ? 'checkAll' : 'uncheckAll']();
+                that.updateSelected();
+            });
+    };
+
+    BootstrapTable.prototype.initFooter = function () {
+        if (!this.options.showFooter || this.options.cardView) {
+            this.$tableFooter.hide();
+        } else {
+            this.$tableFooter.show();
+        }
+    };
+
+    /**
+     * @param data
+     * @param type: append / prepend
+     */
+    BootstrapTable.prototype.initData = function (data, type) {
+        if (type === 'append') {
+            this.data = this.data.concat(data);
+        } else if (type === 'prepend') {
+            this.data = [].concat(data).concat(this.data);
+        } else {
+            this.data = data || this.options.data;
+        }
+
+        // Fix #839 Records deleted when adding new row on filtered table
+        if (type === 'append') {
+            this.options.data = this.options.data.concat(data);
+        } else if (type === 'prepend') {
+            this.options.data = [].concat(data).concat(this.options.data);
+        } else {
+            this.options.data = this.data;
+        }
+
+        if (this.options.sidePagination === 'server') {
+            return;
+        }
+        this.initSort();
+    };
+
+    BootstrapTable.prototype.initSort = function () {
+        var that = this,
+            name = this.options.sortName,
+            order = this.options.sortOrder === 'desc' ? -1 : 1,
+            index = $.inArray(this.options.sortName, this.header.fields);
+
+        if (index !== -1) {
+            this.data.sort(function (a, b) {
+                if (that.header.sortNames[index]) {
+                    name = that.header.sortNames[index];
+                }
+                var aa = getItemField(a, name),
+                    bb = getItemField(b, name),
+                    value = calculateObjectValue(that.header, that.header.sorters[index], [aa, bb]);
+
+                if (value !== undefined) {
+                    return order * value;
+                }
+
+                // Fix #161: undefined or null string sort bug.
+                if (aa === undefined || aa === null) {
+                    aa = '';
+                }
+                if (bb === undefined || bb === null) {
+                    bb = '';
+                }
+
+                // IF both values are numeric, do a numeric comparison
+                if ($.isNumeric(aa) && $.isNumeric(bb)) {
+                    // Convert numerical values form string to float.
+                    aa = parseFloat(aa);
+                    bb = parseFloat(bb);
+                    if (aa < bb) {
+                        return order * -1;
+                    }
+                    return order;
+                }
+
+                if (aa === bb) {
+                    return 0;
+                }
+
+                // If value is not a string, convert to string
+                if (typeof aa !== 'string') {
+                    aa = aa.toString();
+                }
+
+                if (aa.localeCompare(bb) === -1) {
+                    return order * -1;
+                }
+
+                return order;
+            });
+        }
+    };
+
+    BootstrapTable.prototype.onSort = function (event) {
+        var $this = event.type === "keypress" ? $(event.currentTarget) : $(event.currentTarget).parent(),
+            $this_ = this.$header.find('th').eq($this.index());
+
+        this.$header.add(this.$header_).find('span.order').remove();
+
+        if (this.options.sortName === $this.data('field')) {
+            this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc';
+        } else {
+            this.options.sortName = $this.data('field');
+            this.options.sortOrder = $this.data('order') === 'asc' ? 'desc' : 'asc';
+        }
+        this.trigger('sort', this.options.sortName, this.options.sortOrder);
+
+        $this.add($this_).data('order', this.options.sortOrder);
+
+        // Assign the correct sortable arrow
+        this.getCaret();
+
+        if (this.options.sidePagination === 'server') {
+            this.initServer(this.options.silentSort);
+            return;
+        }
+
+        this.initSort();
+        this.initBody();
+    };
+
+    BootstrapTable.prototype.initToolbar = function () {
+        var that = this,
+            html = [],
+            timeoutId = 0,
+            $keepOpen,
+            $search,
+            switchableCount = 0;
+
+        this.$toolbar.html('');
+
+        if (typeof this.options.toolbar === 'string' || typeof this.options.toolbar === 'object') {
+            $(sprintf('<div class="bars pull-%s"></div>', this.options.toolbarAlign))
+                .appendTo(this.$toolbar)
+                .append($(this.options.toolbar));
+        }
+
+        // showColumns, showToggle, showRefresh
+        html = [sprintf('<div class="columns columns-%s btn-group pull-%s">',
+            this.options.buttonsAlign, this.options.buttonsAlign)];
+
+        if (typeof this.options.icons === 'string') {
+            this.options.icons = calculateObjectValue(null, this.options.icons);
+        }
+
+        if (this.options.showPaginationSwitch) {
+            html.push(sprintf('<button class="btn btn-default" type="button" name="paginationSwitch" title="%s">',
+                    this.options.formatPaginationSwitch()),
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.paginationSwitchDown),
+                '</button>');
+        }
+
+        if (this.options.showRefresh) {
+            html.push(sprintf('<button class="btn btn-default' +
+                    sprintf(' btn-%s', this.options.iconSize) +
+                    '" type="button" name="refresh" title="%s">',
+                    this.options.formatRefresh()),
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.refresh),
+                '</button>');
+        }
+
+        if (this.options.showToggle) {
+            html.push(sprintf('<button class="btn btn-default' +
+                    sprintf(' btn-%s', this.options.iconSize) +
+                    '" type="button" name="toggle" title="%s">',
+                    this.options.formatToggle()),
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.toggle),
+                '</button>');
+        }
+
+        if (this.options.showColumns) {
+            html.push(sprintf('<div class="keep-open btn-group" title="%s">',
+                    this.options.formatColumns()),
+                '<button type="button" class="btn btn-default' +
+                sprintf(' btn-%s', this.options.iconSize) +
+                ' dropdown-toggle" data-toggle="dropdown">',
+                sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.columns),
+                ' <span class="caret"></span>',
+                '</button>',
+                '<ul class="dropdown-menu" role="menu">');
+
+            $.each(this.columns, function (i, column) {
+                if (column.radio || column.checkbox) {
+                    return;
+                }
+
+                if (that.options.cardView && (!column.cardVisible)) {
+                    return;
+                }
+
+                var checked = column.visible ? ' checked="checked"' : '';
+
+                if (column.switchable) {
+                    html.push(sprintf('<li>' +
+                        '<label><input type="checkbox" data-field="%s" value="%s"%s> %s</label>' +
+                        '</li>', column.field, i, checked, column.title));
+                    switchableCount++;
+                }
+            });
+            html.push('</ul>',
+                '</div>');
+        }
+
+        html.push('</div>');
+
+        // Fix #188: this.showToolbar is for extentions
+        if (this.showToolbar || html.length > 2) {
+            this.$toolbar.append(html.join(''));
+        }
+
+        if (this.options.showPaginationSwitch) {
+            this.$toolbar.find('button[name="paginationSwitch"]')
+                .off('click').on('click', $.proxy(this.togglePagination, this));
+        }
+
+        if (this.options.showRefresh) {
+            this.$toolbar.find('button[name="refresh"]')
+                .off('click').on('click', $.proxy(this.refresh, this));
+        }
+
+        if (this.options.showToggle) {
+            this.$toolbar.find('button[name="toggle"]')
+                .off('click').on('click', function () {
+                    that.toggleView();
+                });
+        }
+
+        if (this.options.showColumns) {
+            $keepOpen = this.$toolbar.find('.keep-open');
+
+            if (switchableCount <= this.options.minimumCountColumns) {
+                $keepOpen.find('input').prop('disabled', true);
+            }
+
+            $keepOpen.find('li').off('click').on('click', function (event) {
+                event.stopImmediatePropagation();
+            });
+            $keepOpen.find('input').off('click').on('click', function () {
+                var $this = $(this);
+
+                that.toggleColumn(getFieldIndex(that.columns,
+                    $(this).data('field')), $this.prop('checked'), false);
+                that.trigger('column-switch', $(this).data('field'), $this.prop('checked'));
+            });
+        }
+
+        if (this.options.search) {
+            html = [];
+            html.push(
+                '<div class="pull-' + this.options.searchAlign + ' search">',
+                sprintf('<input class="form-control' +
+                    sprintf(' input-%s', this.options.iconSize) +
+                    '" type="text" placeholder="%s">',
+                    this.options.formatSearch()),
+                '</div>');
+
+            this.$toolbar.append(html.join(''));
+            $search = this.$toolbar.find('.search input');
+            $search.off('keyup drop').on('keyup drop', function (event) {
+                clearTimeout(timeoutId); // doesn't matter if it's 0
+                timeoutId = setTimeout(function () {
+                    that.onSearch(event);
+                }, that.options.searchTimeOut);
+            });
+        }
+    };
+
+    BootstrapTable.prototype.onSearch = function (event) {
+        var text = $.trim($(event.currentTarget).val());
+
+        // trim search input
+        if (this.options.trimOnSearch && $(event.currentTarget).val() !== text) {
+            $(event.currentTarget).val(text);
+        }
+
+        if (text === this.searchText) {
+            return;
+        }
+        this.searchText = text;
+
+        this.options.pageNumber = 1;
+        this.initSearch();
+        this.updatePagination();
+        this.trigger('search', text);
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        var that = this;
+
+        if (this.options.sidePagination !== 'server') {
+            var s = this.searchText && this.searchText.toLowerCase();
+            var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;
+
+            // Check filter
+            this.data = f ? $.grep(this.options.data, function (item, i) {
+                for (var key in f) {
+                    if ($.isArray(f[key])) {
+                        if ($.inArray(item[key], f[key]) === -1) {
+                            return false;
+                        }
+                    } else if (item[key] !== f[key]) {
+                        return false;
+                    }
+                }
+                return true;
+            }) : this.options.data;
+
+            this.data = s ? $.grep(this.data, function (item, i) {
+                for (var key in item) {
+                    key = $.isNumeric(key) ? parseInt(key, 10) : key;
+                    var value = item[key],
+                        column = that.columns[getFieldIndex(that.columns, key)],
+                        j = $.inArray(key, that.header.fields);
+
+                    // Fix #142: search use formated data
+                    if (column && column.searchFormatter) {
+                        value = calculateObjectValue(column,
+                            that.header.formatters[j], [value, item, i], value);
+                    }
+
+                    var index = $.inArray(key, that.header.fields);
+                    if (index !== -1 && that.header.searchables[index] && (typeof value === 'string' || typeof value === 'number')) {
+                        if (that.options.strictSearch) {
+                            if ((value + '').toLowerCase() === s) {
+                                return true;
+                            }
+                        } else {
+                            if ((value + '').toLowerCase().indexOf(s) !== -1) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+                return false;
+            }) : this.data;
+        }
+    };
+
+    BootstrapTable.prototype.initPagination = function () {
+        if (!this.options.pagination) {
+            this.$pagination.hide();
+            return;
+        } else {
+            this.$pagination.show();
+        }
+
+        var that = this,
+            html = [],
+            $allSelected = false,
+            i, from, to,
+            $pageList,
+            $first, $pre,
+            $next, $last,
+            $number,
+            data = this.getData();
+
+        if (this.options.sidePagination !== 'server') {
+            this.options.totalRows = data.length;
+        }
+
+        this.totalPages = 0;
+        if (this.options.totalRows) {
+            if (this.options.pageSize === this.options.formatAllRows()) {
+                this.options.pageSize = this.options.totalRows;
+                $allSelected = true;
+            } else if (this.options.pageSize === this.options.totalRows) {
+                // Fix #667 Table with pagination,
+                // multiple pages and a search that matches to one page throws exception
+                var pageLst = typeof this.options.pageList === 'string' ?
+                    this.options.pageList.replace('[', '').replace(']', '')
+                        .replace(/ /g, '').toLowerCase().split(',') : this.options.pageList;
+                if ($.inArray(this.options.formatAllRows().toLowerCase(), pageLst)  > -1) {
+                    $allSelected = true;
+                }
+            }
+
+            this.totalPages = ~~((this.options.totalRows - 1) / this.options.pageSize) + 1;
+
+            this.options.totalPages = this.totalPages;
+        }
+        if (this.totalPages > 0 && this.options.pageNumber > this.totalPages) {
+            this.options.pageNumber = this.totalPages;
+        }
+
+        this.pageFrom = (this.options.pageNumber - 1) * this.options.pageSize + 1;
+        this.pageTo = this.options.pageNumber * this.options.pageSize;
+        if (this.pageTo > this.options.totalRows) {
+            this.pageTo = this.options.totalRows;
+        }
+
+        html.push(
+            '<div class="pull-' + this.options.paginationDetailHAlign + ' pagination-detail">',
+            '<span class="pagination-info">',
+            this.options.onlyInfoPagination ? this.options.formatDetailPagination(this.options.totalRows) :
+            this.options.formatShowingRows(this.pageFrom, this.pageTo, this.options.totalRows),
+            '</span>');
+
+        if (!this.options.onlyInfoPagination) {
+            html.push('<span class="page-list">');
+
+            var pageNumber = [
+                    sprintf('<span class="btn-group %s">',
+                        this.options.paginationVAlign === 'top' || this.options.paginationVAlign === 'both' ?
+                            'dropdown' : 'dropup'),
+                    '<button type="button" class="btn btn-default ' +
+                    sprintf(' btn-%s', this.options.iconSize) +
+                    ' dropdown-toggle" data-toggle="dropdown">',
+                    '<span class="page-size">',
+                    $allSelected ? this.options.formatAllRows() : this.options.pageSize,
+                    '</span>',
+                    ' <span class="caret"></span>',
+                    '</button>',
+                    '<ul class="dropdown-menu" role="menu">'
+                ],
+                pageList = this.options.pageList;
+
+            if (typeof this.options.pageList === 'string') {
+                var list = this.options.pageList.replace('[', '').replace(']', '')
+                    .replace(/ /g, '').split(',');
+
+                pageList = [];
+                $.each(list, function (i, value) {
+                    pageList.push(value.toUpperCase() === that.options.formatAllRows().toUpperCase() ?
+                        that.options.formatAllRows() : +value);
+                });
+            }
+
+            $.each(pageList, function (i, page) {
+                if (!that.options.smartDisplay || i === 0 || pageList[i - 1] <= that.options.totalRows) {
+                    var active;
+                    if ($allSelected) {
+                        active = page === that.options.formatAllRows() ? ' class="active"' : '';
+                    } else {
+                        active = page === that.options.pageSize ? ' class="active"' : '';
+                    }
+                    pageNumber.push(sprintf('<li%s><a href="javascript:void(0)">%s</a></li>', active, page));
+                }
+            });
+            pageNumber.push('</ul></span>');
+
+            html.push(this.options.formatRecordsPerPage(pageNumber.join('')));
+            html.push('</span>');
+
+            html.push('</div>',
+                '<div class="pull-' + this.options.paginationHAlign + ' pagination">',
+                '<ul class="pagination' + sprintf(' pagination-%s', this.options.iconSize) + '">',
+                '<li class="page-first"><a href="javascript:void(0)">' + this.options.paginationFirstText + '</a></li>',
+                '<li class="page-pre"><a href="javascript:void(0)">' + this.options.paginationPreText + '</a></li>');
+
+            if (this.totalPages < 5) {
+                from = 1;
+                to = this.totalPages;
+            } else {
+                from = this.options.pageNumber - 2;
+                to = from + 4;
+                if (from < 1) {
+                    from = 1;
+                    to = 5;
+                }
+                if (to > this.totalPages) {
+                    to = this.totalPages;
+                    from = to - 4;
+                }
+            }
+            for (i = from; i <= to; i++) {
+                html.push('<li class="page-number' + (i === this.options.pageNumber ? ' active' : '') + '">',
+                    '<a href="javascript:void(0)">', i, '</a>',
+                    '</li>');
+            }
+
+            html.push(
+                '<li class="page-next"><a href="javascript:void(0)">' + this.options.paginationNextText + '</a></li>',
+                '<li class="page-last"><a href="javascript:void(0)">' + this.options.paginationLastText + '</a></li>',
+                '</ul>',
+                '</div>');
+
+        }
+        this.$pagination.html(html.join(''));
+
+        if (!this.options.onlyInfoPagination) {
+            $pageList = this.$pagination.find('.page-list a');
+            $first = this.$pagination.find('.page-first');
+            $pre = this.$pagination.find('.page-pre');
+            $next = this.$pagination.find('.page-next');
+            $last = this.$pagination.find('.page-last');
+            $number = this.$pagination.find('.page-number');
+
+            if (this.options.pageNumber <= 1) {
+                $first.addClass('disabled');
+                $pre.addClass('disabled');
+            }
+            if (this.options.pageNumber >= this.totalPages) {
+                $next.addClass('disabled');
+                $last.addClass('disabled');
+            }
+            if (this.options.smartDisplay) {
+                if (this.totalPages <= 1) {
+                    this.$pagination.find('div.pagination').hide();
+                }
+                if (pageList.length < 2 || this.options.totalRows <= pageList[0]) {
+                    this.$pagination.find('span.page-list').hide();
+                }
+
+                // when data is empty, hide the pagination
+                this.$pagination[this.getData().length ? 'show' : 'hide']();
+            }
+            if ($allSelected) {
+                this.options.pageSize = this.options.formatAllRows();
+            }
+            $pageList.off('click').on('click', $.proxy(this.onPageListChange, this));
+            $first.off('click').on('click', $.proxy(this.onPageFirst, this));
+            $pre.off('click').on('click', $.proxy(this.onPagePre, this));
+            $next.off('click').on('click', $.proxy(this.onPageNext, this));
+            $last.off('click').on('click', $.proxy(this.onPageLast, this));
+            $number.off('click').on('click', $.proxy(this.onPageNumber, this));
+        }
+    };
+
+    BootstrapTable.prototype.updatePagination = function (event) {
+        // Fix #171: IE disabled button can be clicked bug.
+        if (event && $(event.currentTarget).hasClass('disabled')) {
+            return;
+        }
+
+        if (!this.options.maintainSelected) {
+            this.resetRows();
+        }
+
+        this.initPagination();
+        if (this.options.sidePagination === 'server') {
+            this.initServer();
+        } else {
+            this.initBody();
+        }
+
+        this.trigger('page-change', this.options.pageNumber, this.options.pageSize);
+    };
+
+    BootstrapTable.prototype.onPageListChange = function (event) {
+        var $this = $(event.currentTarget);
+
+        $this.parent().addClass('active').siblings().removeClass('active');
+        this.options.pageSize = $this.text().toUpperCase() === this.options.formatAllRows().toUpperCase() ?
+            this.options.formatAllRows() : +$this.text();
+        this.$toolbar.find('.page-size').text(this.options.pageSize);
+
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageFirst = function (event) {
+        this.options.pageNumber = 1;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPagePre = function (event) {
+        this.options.pageNumber--;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageNext = function (event) {
+        this.options.pageNumber++;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageLast = function (event) {
+        this.options.pageNumber = this.totalPages;
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.onPageNumber = function (event) {
+        if (this.options.pageNumber === +$(event.currentTarget).text()) {
+            return;
+        }
+        this.options.pageNumber = +$(event.currentTarget).text();
+        this.updatePagination(event);
+    };
+
+    BootstrapTable.prototype.initBody = function (fixedScroll) {
+        var that = this,
+            html = [],
+            data = this.getData();
+
+        this.trigger('pre-body', data);
+
+        this.$body = this.$el.find('>tbody');
+        if (!this.$body.length) {
+            this.$body = $('<tbody></tbody>').appendTo(this.$el);
+        }
+
+        //Fix #389 Bootstrap-table-flatJSON is not working
+
+        if (!this.options.pagination || this.options.sidePagination === 'server') {
+            this.pageFrom = 1;
+            this.pageTo = data.length;
+        }
+
+        for (var i = this.pageFrom - 1; i < this.pageTo; i++) {
+            var key,
+                item = data[i],
+                style = {},
+                csses = [],
+                data_ = '',
+                attributes = {},
+                htmlAttributes = [];
+
+            style = calculateObjectValue(this.options, this.options.rowStyle, [item, i], style);
+
+            if (style && style.css) {
+                for (key in style.css) {
+                    csses.push(key + ': ' + style.css[key]);
+                }
+            }
+
+            attributes = calculateObjectValue(this.options,
+                this.options.rowAttributes, [item, i], attributes);
+
+            if (attributes) {
+                for (key in attributes) {
+                    htmlAttributes.push(sprintf('%s="%s"', key, escapeHTML(attributes[key])));
+                }
+            }
+
+            if (item._data && !$.isEmptyObject(item._data)) {
+                $.each(item._data, function (k, v) {
+                    // ignore data-index
+                    if (k === 'index') {
+                        return;
+                    }
+                    data_ += sprintf(' data-%s="%s"', k, v);
+                });
+            }
+
+            html.push('<tr',
+                sprintf(' %s', htmlAttributes.join(' ')),
+                sprintf(' id="%s"', $.isArray(item) ? undefined : item._id),
+                sprintf(' class="%s"', style.classes || ($.isArray(item) ? undefined : item._class)),
+                sprintf(' data-index="%s"', i),
+                sprintf(' data-uniqueid="%s"', item[this.options.uniqueId]),
+                sprintf('%s', data_),
+                '>'
+            );
+
+            if (this.options.cardView) {
+                html.push(sprintf('<td colspan="%s">', this.header.fields.length));
+            }
+
+            if (!this.options.cardView && this.options.detailView) {
+                html.push('<td>',
+                    '<a class="detail-icon" href="javascript:">',
+                    sprintf('<i class="%s %s"></i>', this.options.iconsPrefix, this.options.icons.detailOpen),
+                    '</a>',
+                    '</td>');
+            }
+
+            $.each(this.header.fields, function (j, field) {
+                var text = '',
+                    value = getItemField(item, field),
+                    type = '',
+                    cellStyle = {},
+                    id_ = '',
+                    class_ = that.header.classes[j],
+                    data_ = '',
+                    rowspan_ = '',
+                    title_ = '',
+                    column = that.columns[getFieldIndex(that.columns, field)];
+
+                if (!column.visible) {
+                    return;
+                }
+
+                style = sprintf('style="%s"', csses.concat(that.header.styles[j]).join('; '));
+
+                value = calculateObjectValue(column,
+                    that.header.formatters[j], [value, item, i], value);
+
+                // handle td's id and class
+                if (item['_' + field + '_id']) {
+                    id_ = sprintf(' id="%s"', item['_' + field + '_id']);
+                }
+                if (item['_' + field + '_class']) {
+                    class_ = sprintf(' class="%s"', item['_' + field + '_class']);
+                }
+                if (item['_' + field + '_rowspan']) {
+                    rowspan_ = sprintf(' rowspan="%s"', item['_' + field + '_rowspan']);
+                }
+                if (item['_' + field + '_title']) {
+                    title_ = sprintf(' title="%s"', item['_' + field + '_title']);
+                }
+                cellStyle = calculateObjectValue(that.header,
+                    that.header.cellStyles[j], [value, item, i], cellStyle);
+                if (cellStyle.classes) {
+                    class_ = sprintf(' class="%s"', cellStyle.classes);
+                }
+                if (cellStyle.css) {
+                    var csses_ = [];
+                    for (var key in cellStyle.css) {
+                        csses_.push(key + ': ' + cellStyle.css[key]);
+                    }
+                    style = sprintf('style="%s"', csses_.concat(that.header.styles[j]).join('; '));
+                }
+
+                if (item['_' + field + '_data'] && !$.isEmptyObject(item['_' + field + '_data'])) {
+                    $.each(item['_' + field + '_data'], function (k, v) {
+                        // ignore data-index
+                        if (k === 'index') {
+                            return;
+                        }
+                        data_ += sprintf(' data-%s="%s"', k, v);
+                    });
+                }
+
+                if (column.checkbox || column.radio) {
+                    type = column.checkbox ? 'checkbox' : type;
+                    type = column.radio ? 'radio' : type;
+
+                    text = [that.options.cardView ?
+                        '<div class="card-view">' : '<td class="bs-checkbox">',
+                        '<input' +
+                        sprintf(' data-index="%s"', i) +
+                        sprintf(' name="%s"', that.options.selectItemName) +
+                        sprintf(' type="%s"', type) +
+                        sprintf(' value="%s"', item[that.options.idField]) +
+                        sprintf(' checked="%s"', value === true ||
+                        (value && value.checked) ? 'checked' : undefined) +
+                        sprintf(' disabled="%s"', !column.checkboxEnabled ||
+                        (value && value.disabled) ? 'disabled' : undefined) +
+                        ' />',
+                        that.header.formatters[j] && typeof value === 'string' ? value : '',
+                        that.options.cardView ? '</div>' : '</td>'
+                    ].join('');
+
+                    item[that.header.stateField] = value === true || (value && value.checked);
+                } else {
+                    value = typeof value === 'undefined' || value === null ?
+                        that.options.undefinedText : value;
+
+                    text = that.options.cardView ? ['<div class="card-view">',
+                        that.options.showHeader ? sprintf('<span class="title" %s>%s</span>', style,
+                            getPropertyFromOther(that.columns, 'field', 'title', field)) : '',
+                        sprintf('<span class="value">%s</span>', value),
+                        '</div>'
+                    ].join('') : [sprintf('<td%s %s %s %s %s %s>', id_, class_, style, data_, rowspan_, title_),
+                        value,
+                        '</td>'
+                    ].join('');
+
+                    // Hide empty data on Card view when smartDisplay is set to true.
+                    if (that.options.cardView && that.options.smartDisplay && value === '') {
+                        // Should set a placeholder for event binding correct fieldIndex
+                        text = '<div class="card-view"></div>';
+                    }
+                }
+
+                html.push(text);
+            });
+
+            if (this.options.cardView) {
+                html.push('</td>');
+            }
+
+            html.push('</tr>');
+        }
+
+        // show no records
+        if (!html.length) {
+            html.push('<tr class="no-records-found">',
+                sprintf('<td colspan="%s">%s</td>',
+                    this.$header.find('th').length, this.options.formatNoMatches()),
+                '</tr>');
+        }
+
+        this.$body.html(html.join(''));
+
+        if (!fixedScroll) {
+            this.scrollTo(0);
+        }
+
+        // click to select by column
+        this.$body.find('> tr[data-index] > td').off('click dblclick').on('click dblclick', function (e) {
+            var $td = $(this),
+                $tr = $td.parent(),
+                item = that.data[$tr.data('index')],
+                index = $td[0].cellIndex,
+                field = that.header.fields[that.options.detailView && !that.options.cardView ? index - 1 : index],
+                column = that.columns[getFieldIndex(that.columns, field)],
+                value = getItemField(item, field);
+
+            if ($td.find('.detail-icon').length) {
+                return;
+            }
+
+            that.trigger(e.type === 'click' ? 'click-cell' : 'dbl-click-cell', field, value, item, $td);
+            that.trigger(e.type === 'click' ? 'click-row' : 'dbl-click-row', item, $tr);
+
+            // if click to select - then trigger the checkbox/radio click
+            if (e.type === 'click' && that.options.clickToSelect && column.clickToSelect) {
+                var $selectItem = $tr.find(sprintf('[name="%s"]', that.options.selectItemName));
+                if ($selectItem.length) {
+                    $selectItem[0].click(); // #144: .trigger('click') bug
+                }
+            }
+        });
+
+        this.$body.find('> tr[data-index] > td > .detail-icon').off('click').on('click', function () {
+            var $this = $(this),
+                $tr = $this.parent().parent(),
+                index = $tr.data('index'),
+                row = data[index]; // Fix #980 Detail view, when searching, returns wrong row
+
+            // remove and update
+            if ($tr.next().is('tr.detail-view')) {
+                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailOpen));
+                $tr.next().remove();
+                that.trigger('collapse-row', index, row);
+            } else {
+                $this.find('i').attr('class', sprintf('%s %s', that.options.iconsPrefix, that.options.icons.detailClose));
+                $tr.after(sprintf('<tr class="detail-view"><td colspan="%s">%s</td></tr>',
+                    $tr.find('td').length, calculateObjectValue(that.options,
+                        that.options.detailFormatter, [index, row], '')));
+                that.trigger('expand-row', index, row, $tr.next().find('td'));
+            }
+            that.resetView();
+        });
+
+        this.$selectItem = this.$body.find(sprintf('[name="%s"]', this.options.selectItemName));
+        this.$selectItem.off('click').on('click', function (event) {
+            event.stopImmediatePropagation();
+
+            var $this = $(this),
+                checked = $this.prop('checked'),
+                row = that.data[$this.data('index')];
+
+            if (that.options.maintainSelected && $(this).is(':radio')) {
+                $.each(that.options.data, function (i, row) {
+                    row[that.header.stateField] = false;
+                });
+            }
+
+            row[that.header.stateField] = checked;
+
+            if (that.options.singleSelect) {
+                that.$selectItem.not(this).each(function () {
+                    that.data[$(this).data('index')][that.header.stateField] = false;
+                });
+                that.$selectItem.filter(':checked').not(this).prop('checked', false);
+            }
+
+            that.updateSelected();
+            that.trigger(checked ? 'check' : 'uncheck', row, $this);
+        });
+
+        $.each(this.header.events, function (i, events) {
+            if (!events) {
+                return;
+            }
+            // fix bug, if events is defined with namespace
+            if (typeof events === 'string') {
+                events = calculateObjectValue(null, events);
+            }
+
+            var field = that.header.fields[i],
+                fieldIndex = $.inArray(field, that.getVisibleFields());
+
+            if (that.options.detailView && !that.options.cardView) {
+                fieldIndex += 1;
+            }
+
+            for (var key in events) {
+                that.$body.find('>tr:not(.no-records-found)').each(function () {
+                    var $tr = $(this),
+                        $td = $tr.find(that.options.cardView ? '.card-view' : 'td').eq(fieldIndex),
+                        index = key.indexOf(' '),
+                        name = key.substring(0, index),
+                        el = key.substring(index + 1),
+                        func = events[key];
+
+                    $td.find(el).off(name).on(name, function (e) {
+                        var index = $tr.data('index'),
+                            row = that.data[index],
+                            value = row[field];
+
+                        func.apply(this, [e, value, row, index]);
+                    });
+                });
+            }
+        });
+
+        this.updateSelected();
+        this.resetView();
+
+        this.trigger('post-body');
+    };
+
+    BootstrapTable.prototype.initServer = function (silent, query) {
+        var that = this,
+            data = {},
+            params = {
+                pageSize: this.options.pageSize === this.options.formatAllRows() ?
+                    this.options.totalRows : this.options.pageSize,
+                pageNumber: this.options.pageNumber,
+                searchText: this.searchText,
+                sortName: this.options.sortName,
+                sortOrder: this.options.sortOrder
+            },
+            request;
+
+        if (!this.options.url && !this.options.ajax) {
+            return;
+        }
+
+        if (this.options.queryParamsType === 'limit') {
+            params = {
+                search: params.searchText,
+                sort: params.sortName,
+                order: params.sortOrder
+            };
+            if (this.options.pagination) {
+                params.limit = this.options.pageSize === this.options.formatAllRows() ?
+                    this.options.totalRows : this.options.pageSize;
+                params.offset = this.options.pageSize === this.options.formatAllRows() ?
+                    0 : this.options.pageSize * (this.options.pageNumber - 1);
+            }
+        }
+
+        if (!($.isEmptyObject(this.filterColumnsPartial))) {
+            params['filter'] = JSON.stringify(this.filterColumnsPartial, null);
+        }
+
+        data = calculateObjectValue(this.options, this.options.queryParams, [params], data);
+
+        $.extend(data, query || {});
+
+        // false to stop request
+        if (data === false) {
+            return;
+        }
+
+        if (!silent) {
+            this.$tableLoading.show();
+        }
+        request = $.extend({}, calculateObjectValue(null, this.options.ajaxOptions), {
+            type: this.options.method,
+            url: this.options.url,
+            data: this.options.contentType === 'application/json' && this.options.method === 'post' ?
+                JSON.stringify(data) : data,
+            cache: this.options.cache,
+            contentType: this.options.contentType,
+            dataType: this.options.dataType,
+            success: function (res) {
+                res = calculateObjectValue(that.options, that.options.responseHandler, [res], res);
+
+                that.load(res);
+                that.trigger('load-success', res);
+            },
+            error: function (res) {
+                that.trigger('load-error', res.status, res);
+            },
+            complete: function () {
+                if (!silent) {
+                    that.$tableLoading.hide();
+                }
+            }
+        });
+
+        if (this.options.ajax) {
+            calculateObjectValue(this, this.options.ajax, [request], null);
+        } else {
+            $.ajax(request);
+        }
+    };
+
+    BootstrapTable.prototype.initSearchText = function () {
+        if (this.options.search) {
+            if (this.options.searchText !== '') {
+                var $search = this.$toolbar.find('.search input');
+                $search.val(this.options.searchText);
+                this.onSearch({currentTarget: $search});
+            }
+        }
+    };
+
+    BootstrapTable.prototype.getCaret = function () {
+        var that = this;
+
+        $.each(this.$header.find('th'), function (i, th) {
+            $(th).find('.sortable').removeClass('desc asc').addClass($(th).data('field') === that.options.sortName ? that.options.sortOrder : 'both');
+        });
+    };
+
+    BootstrapTable.prototype.updateSelected = function () {
+        var checkAll = this.$selectItem.filter(':enabled').length &&
+            this.$selectItem.filter(':enabled').length ===
+            this.$selectItem.filter(':enabled').filter(':checked').length;
+
+        this.$selectAll.add(this.$selectAll_).prop('checked', checkAll);
+
+        this.$selectItem.each(function () {
+            $(this).closest('tr')[$(this).prop('checked') ? 'addClass' : 'removeClass']('selected');
+        });
+    };
+
+    BootstrapTable.prototype.updateRows = function () {
+        var that = this;
+
+        this.$selectItem.each(function () {
+            that.data[$(this).data('index')][that.header.stateField] = $(this).prop('checked');
+        });
+    };
+
+    BootstrapTable.prototype.resetRows = function () {
+        var that = this;
+
+        $.each(this.data, function (i, row) {
+            that.$selectAll.prop('checked', false);
+            that.$selectItem.prop('checked', false);
+            if (that.header.stateField) {
+                row[that.header.stateField] = false;
+            }
+        });
+    };
+
+    BootstrapTable.prototype.trigger = function (name) {
+        var args = Array.prototype.slice.call(arguments, 1);
+
+        name += '.bs.table';
+        this.options[BootstrapTable.EVENTS[name]].apply(this.options, args);
+        this.$el.trigger($.Event(name), args);
+
+        this.options.onAll(name, args);
+        this.$el.trigger($.Event('all.bs.table'), [name, args]);
+    };
+
+    BootstrapTable.prototype.resetHeader = function () {
+        // fix #61: the hidden table reset header bug.
+        // fix bug: get $el.css('width') error sometime (height = 500)
+        clearTimeout(this.timeoutId_);
+        this.timeoutId_ = setTimeout($.proxy(this.fitHeader, this), this.$el.is(':hidden') ? 100 : 0);
+    };
+
+    BootstrapTable.prototype.fitHeader = function () {
+        var that = this,
+            fixedBody,
+            scrollWidth,
+            focused,
+            focusedTemp;
+
+        if (that.$el.is(':hidden')) {
+            that.timeoutId_ = setTimeout($.proxy(that.fitHeader, that), 100);
+            return;
+        }
+        fixedBody = this.$tableBody.get(0);
+
+        scrollWidth = fixedBody.scrollWidth > fixedBody.clientWidth &&
+        fixedBody.scrollHeight > fixedBody.clientHeight + this.$header.outerHeight() ?
+            getScrollBarWidth() : 0;
+
+        this.$el.css('margin-top', -this.$header.outerHeight());
+
+        focused = $(':focus');
+        if (focused.length > 0) {
+            var $th = focused.parents('th');
+            if ($th.length > 0) {
+                var dataField = $th.attr('data-field');
+                if (dataField !== undefined) {
+                    var $headerTh = this.$header.find("[data-field='" + dataField + "']");
+                    if ($headerTh.length > 0) {
+                        $headerTh.find(":input").addClass("focus-temp");
+                    }
+                }
+            }
+        }
+
+        this.$header_ = this.$header.clone(true, true);
+        this.$selectAll_ = this.$header_.find('[name="btSelectAll"]');
+        this.$tableHeader.css({
+            'margin-right': scrollWidth
+        }).find('table').css('width', this.$el.outerWidth())
+            .html('').attr('class', this.$el.attr('class'))
+            .append(this.$header_);
+
+
+        focusedTemp = $('.focus-temp:visible:eq(0)');
+        if (focusedTemp.length > 0) {
+            focusedTemp.focus();
+            this.$header.find('.focus-temp').removeClass('focus-temp');
+        }
+
+        // fix bug: $.data() is not working as expected after $.append()
+        this.$header.find('th[data-field]').each(function (i) {
+            that.$header_.find(sprintf('th[data-field="%s"]', $(this).data('field'))).data($(this).data());
+        });
+
+        var visibleFields = this.getVisibleFields();
+
+        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {
+            var $this = $(this),
+                index = i;
+
+            if (that.options.detailView && !that.options.cardView) {
+                if (i === 0) {
+                    that.$header_.find('th.detail').find('.fht-cell').width($this.innerWidth());
+                }
+                index = i - 1;
+            }
+
+            that.$header_.find(sprintf('th[data-field="%s"]', visibleFields[index]))
+                .find('.fht-cell').width($this.innerWidth());
+        });
+        // horizontal scroll event
+        // TODO: it's probably better improving the layout than binding to scroll event
+        this.$tableBody.off('scroll').on('scroll', function () {
+            that.$tableHeader.scrollLeft($(this).scrollLeft());
+
+            if (that.options.showFooter && !that.options.cardView) {
+                that.$tableFooter.scrollLeft($(this).scrollLeft());
+            }
+        });
+        that.trigger('post-header');
+    };
+
+    BootstrapTable.prototype.resetFooter = function () {
+        var that = this,
+            data = that.getData(),
+            html = [];
+
+        if (!this.options.showFooter || this.options.cardView) { //do nothing
+            return;
+        }
+
+        if (!this.options.cardView && this.options.detailView) {
+            html.push('<td><div class="th-inner">&nbsp;</div><div class="fht-cell"></div></td>');
+        }
+
+        $.each(this.columns, function (i, column) {
+            var falign = '', // footer align style
+                style = '',
+                class_ = sprintf(' class="%s"', column['class']);
+
+            if (!column.visible) {
+                return;
+            }
+
+            if (that.options.cardView && (!column.cardVisible)) {
+                return;
+            }
+
+            falign = sprintf('text-align: %s; ', column.falign ? column.falign : column.align);
+            style = sprintf('vertical-align: %s; ', column.valign);
+
+            html.push('<td', class_, sprintf(' style="%s"', falign + style), '>');
+            html.push('<div class="th-inner">');
+
+            html.push(calculateObjectValue(column, column.footerFormatter, [data], '&nbsp;') || '&nbsp;');
+
+            html.push('</div>');
+            html.push('<div class="fht-cell"></div>');
+            html.push('</div>');
+            html.push('</td>');
+        });
+
+        this.$tableFooter.find('tr').html(html.join(''));
+        clearTimeout(this.timeoutFooter_);
+        this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this),
+            this.$el.is(':hidden') ? 100 : 0);
+    };
+
+    BootstrapTable.prototype.fitFooter = function () {
+        var that = this,
+            $footerTd,
+            elWidth,
+            scrollWidth;
+
+        clearTimeout(this.timeoutFooter_);
+        if (this.$el.is(':hidden')) {
+            this.timeoutFooter_ = setTimeout($.proxy(this.fitFooter, this), 100);
+            return;
+        }
+
+        elWidth = this.$el.css('width');
+        scrollWidth = elWidth > this.$tableBody.width() ? getScrollBarWidth() : 0;
+
+        this.$tableFooter.css({
+            'margin-right': scrollWidth
+        }).find('table').css('width', elWidth)
+            .attr('class', this.$el.attr('class'));
+
+        $footerTd = this.$tableFooter.find('td');
+
+        this.$body.find('>tr:first-child:not(.no-records-found) > *').each(function (i) {
+            var $this = $(this);
+
+            $footerTd.eq(i).find('.fht-cell').width($this.innerWidth());
+        });
+    };
+
+    BootstrapTable.prototype.toggleColumn = function (index, checked, needUpdate) {
+        if (index === -1) {
+            return;
+        }
+        this.columns[index].visible = checked;
+        this.initHeader();
+        this.initSearch();
+        this.initPagination();
+        this.initBody();
+
+        if (this.options.showColumns) {
+            var $items = this.$toolbar.find('.keep-open input').prop('disabled', false);
+
+            if (needUpdate) {
+                $items.filter(sprintf('[value="%s"]', index)).prop('checked', checked);
+            }
+
+            if ($items.filter(':checked').length <= this.options.minimumCountColumns) {
+                $items.filter(':checked').prop('disabled', true);
+            }
+        }
+    };
+
+    BootstrapTable.prototype.toggleRow = function (index, uniqueId, visible) {
+        if (index === -1) {
+            return;
+        }
+
+        this.$body.find(typeof index !== 'undefined' ?
+            sprintf('tr[data-index="%s"]', index) :
+            sprintf('tr[data-uniqueid="%s"]', uniqueId))
+            [visible ? 'show' : 'hide']();
+    };
+
+    BootstrapTable.prototype.getVisibleFields = function () {
+        var that = this,
+            visibleFields = [];
+
+        $.each(this.header.fields, function (j, field) {
+            var column = that.columns[getFieldIndex(that.columns, field)];
+
+            if (!column.visible) {
+                return;
+            }
+            visibleFields.push(field);
+        });
+        return visibleFields;
+    };
+
+    // PUBLIC FUNCTION DEFINITION
+    // =======================
+
+    BootstrapTable.prototype.resetView = function (params) {
+        var padding = 0;
+
+        if (params && params.height) {
+            this.options.height = params.height;
+        }
+
+        this.$selectAll.prop('checked', this.$selectItem.length > 0 &&
+            this.$selectItem.length === this.$selectItem.filter(':checked').length);
+
+        if (this.options.height) {
+            var toolbarHeight = getRealHeight(this.$toolbar),
+                paginationHeight = getRealHeight(this.$pagination),
+                height = this.options.height - toolbarHeight - paginationHeight;
+
+            this.$tableContainer.css('height', height + 'px');
+        }
+
+        if (this.options.cardView) {
+            // remove the element css
+            this.$el.css('margin-top', '0');
+            this.$tableContainer.css('padding-bottom', '0');
+            return;
+        }
+
+        if (this.options.showHeader && this.options.height) {
+            this.$tableHeader.show();
+            this.resetHeader();
+            padding += this.$header.outerHeight();
+        } else {
+            this.$tableHeader.hide();
+            this.trigger('post-header');
+        }
+
+        if (this.options.showFooter) {
+            this.resetFooter();
+            if (this.options.height) {
+                padding += this.$tableFooter.outerHeight() + 1;
+            }
+        }
+
+        // Assign the correct sortable arrow
+        this.getCaret();
+        this.$tableContainer.css('padding-bottom', padding + 'px');
+        this.trigger('reset-view');
+    };
+
+    BootstrapTable.prototype.getData = function (useCurrentPage) {
+        return (this.searchText || !$.isEmptyObject(this.filterColumns) || !$.isEmptyObject(this.filterColumnsPartial)) ?
+            (useCurrentPage ? this.data.slice(this.pageFrom - 1, this.pageTo) : this.data) :
+            (useCurrentPage ? this.options.data.slice(this.pageFrom - 1, this.pageTo) : this.options.data);
+    };
+
+    BootstrapTable.prototype.load = function (data) {
+        var fixedScroll = false;
+
+        // #431: support pagination
+        if (this.options.sidePagination === 'server') {
+            this.options.totalRows = data.total;
+            fixedScroll = data.fixedScroll;
+            data = data[this.options.dataField];
+        } else if (!$.isArray(data)) { // support fixedScroll
+            fixedScroll = data.fixedScroll;
+            data = data.data;
+        }
+
+        this.initData(data);
+        this.initSearch();
+        this.initPagination();
+        this.initBody(fixedScroll);
+    };
+
+    BootstrapTable.prototype.append = function (data) {
+        this.initData(data, 'append');
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.prepend = function (data) {
+        this.initData(data, 'prepend');
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.remove = function (params) {
+        var len = this.options.data.length,
+            i, row;
+
+        if (!params.hasOwnProperty('field') || !params.hasOwnProperty('values')) {
+            return;
+        }
+
+        for (i = len - 1; i >= 0; i--) {
+            row = this.options.data[i];
+
+            if (!row.hasOwnProperty(params.field)) {
+                continue;
+            }
+            if ($.inArray(row[params.field], params.values) !== -1) {
+                this.options.data.splice(i, 1);
+            }
+        }
+
+        if (len === this.options.data.length) {
+            return;
+        }
+
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.removeAll = function () {
+        if (this.options.data.length > 0) {
+            this.options.data.splice(0, this.options.data.length);
+            this.initSearch();
+            this.initPagination();
+            this.initBody(true);
+        }
+    };
+
+    BootstrapTable.prototype.getRowByUniqueId = function (id) {
+        var uniqueId = this.options.uniqueId,
+            len = this.options.data.length,
+            dataRow = null,
+            i, row, rowUniqueId;
+
+        for (i = len - 1; i >= 0; i--) {
+            row = this.options.data[i];
+
+            if (row.hasOwnProperty(uniqueId)) { // uniqueId is a column
+                rowUniqueId = row[uniqueId];
+            } else if(row._data.hasOwnProperty(uniqueId)) { // uniqueId is a row data property
+                rowUniqueId = row._data[uniqueId];
+            } else {
+                continue;
+            }
+
+            if (typeof rowUniqueId === 'string') {
+                id = id.toString();
+            } else if (typeof rowUniqueId === 'number') {
+                if ((Number(rowUniqueId) === rowUniqueId) && (rowUniqueId % 1 === 0)) {
+                    id = parseInt(id);
+                } else if ((rowUniqueId === Number(rowUniqueId)) && (rowUniqueId !== 0)) {
+                    id = parseFloat(id);
+                }
+            }
+
+            if (rowUniqueId === id) {
+                dataRow = row;
+                break;
+            }
+        }
+
+        return dataRow;
+    };
+
+    BootstrapTable.prototype.removeByUniqueId = function (id) {
+        var len = this.options.data.length,
+            row = this.getRowByUniqueId(id);
+
+        if (row) {
+            this.options.data.splice(this.options.data.indexOf(row), 1);
+        }
+
+        if (len === this.options.data.length) {
+            return;
+        }
+
+        this.initSearch();
+        this.initPagination();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.updateByUniqueId = function (params) {
+        var rowId;
+
+        if (!params.hasOwnProperty('id') || !params.hasOwnProperty('row')) {
+            return;
+        }
+
+        rowId = $.inArray(this.getRowByUniqueId(params.id), this.options.data);
+
+        if (rowId === -1) {
+            return;
+        }
+
+        $.extend(this.data[rowId], params.row);
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.insertRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
+            return;
+        }
+        this.data.splice(params.index, 0, params.row);
+        this.initSearch();
+        this.initPagination();
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.updateRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('row')) {
+            return;
+        }
+        $.extend(this.data[params.index], params.row);
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.showRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('uniqueId')) {
+            return;
+        }
+        this.toggleRow(params.index, params.uniqueId, true);
+    };
+
+    BootstrapTable.prototype.hideRow = function (params) {
+        if (!params.hasOwnProperty('index') || !params.hasOwnProperty('uniqueId')) {
+            return;
+        }
+        this.toggleRow(params.index, params.uniqueId, false);
+    };
+
+    BootstrapTable.prototype.getRowsHidden = function (show) {
+        var rows = $(this.$body[0]).children().filter(':hidden'),
+            i = 0;
+        if (show) {
+            for (; i < rows.length; i++) {
+                $(rows[i]).show();
+            }
+        }
+        return rows;
+    };
+
+    BootstrapTable.prototype.mergeCells = function (options) {
+        var row = options.index,
+            col = $.inArray(options.field, this.getVisibleFields()),
+            rowspan = options.rowspan || 1,
+            colspan = options.colspan || 1,
+            i, j,
+            $tr = this.$body.find('>tr'),
+            $td;
+
+        if (this.options.detailView && !this.options.cardView) {
+            col += 1;
+        }
+
+        $td = $tr.eq(row).find('>td').eq(col);
+
+        if (row < 0 || col < 0 || row >= this.data.length) {
+            return;
+        }
+
+        for (i = row; i < row + rowspan; i++) {
+            for (j = col; j < col + colspan; j++) {
+                $tr.eq(i).find('>td').eq(j).hide();
+            }
+        }
+
+        $td.attr('rowspan', rowspan).attr('colspan', colspan).show();
+    };
+
+    BootstrapTable.prototype.updateCell = function (params) {
+        if (!params.hasOwnProperty('index') ||
+            !params.hasOwnProperty('field') ||
+            !params.hasOwnProperty('value')) {
+            return;
+        }
+        this.data[params.index][params.field] = params.value;
+        this.initSort();
+        this.initBody(true);
+    };
+
+    BootstrapTable.prototype.getOptions = function () {
+        return this.options;
+    };
+
+    BootstrapTable.prototype.getSelections = function () {
+        var that = this;
+
+        return $.grep(this.data, function (row) {
+            return row[that.header.stateField];
+        });
+    };
+
+    BootstrapTable.prototype.getAllSelections = function () {
+        var that = this;
+
+        return $.grep(this.options.data, function (row) {
+            return row[that.header.stateField];
+        });
+    };
+
+    BootstrapTable.prototype.checkAll = function () {
+        this.checkAll_(true);
+    };
+
+    BootstrapTable.prototype.uncheckAll = function () {
+        this.checkAll_(false);
+    };
+
+    BootstrapTable.prototype.checkAll_ = function (checked) {
+        var rows;
+        if (!checked) {
+            rows = this.getSelections();
+        }
+        this.$selectAll.add(this.$selectAll_).prop('checked', checked);
+        this.$selectItem.filter(':enabled').prop('checked', checked);
+        this.updateRows();
+        if (checked) {
+            rows = this.getSelections();
+        }
+        this.trigger(checked ? 'check-all' : 'uncheck-all', rows);
+    };
+
+    BootstrapTable.prototype.check = function (index) {
+        this.check_(true, index);
+    };
+
+    BootstrapTable.prototype.uncheck = function (index) {
+        this.check_(false, index);
+    };
+
+    BootstrapTable.prototype.check_ = function (checked, index) {
+        var $el = this.$selectItem.filter(sprintf('[data-index="%s"]', index)).prop('checked', checked);
+        this.data[index][this.header.stateField] = checked;
+        this.updateSelected();
+        this.trigger(checked ? 'check' : 'uncheck', this.data[index], $el);
+    };
+
+    BootstrapTable.prototype.checkBy = function (obj) {
+        this.checkBy_(true, obj);
+    };
+
+    BootstrapTable.prototype.uncheckBy = function (obj) {
+        this.checkBy_(false, obj);
+    };
+
+    BootstrapTable.prototype.checkBy_ = function (checked, obj) {
+        if (!obj.hasOwnProperty('field') || !obj.hasOwnProperty('values')) {
+            return;
+        }
+
+        var that = this,
+            rows = [];
+        $.each(this.options.data, function (index, row) {
+            if (!row.hasOwnProperty(obj.field)) {
+                return false;
+            }
+            if ($.inArray(row[obj.field], obj.values) !== -1) {
+                var $el = that.$selectItem.filter(':enabled')
+                    .filter(sprintf('[data-index="%s"]', index)).prop('checked', checked);
+                row[that.header.stateField] = checked;
+                rows.push(row);
+                that.trigger(checked ? 'check' : 'uncheck', row, $el);
+            }
+        });
+        this.updateSelected();
+        this.trigger(checked ? 'check-some' : 'uncheck-some', rows);
+    };
+
+    BootstrapTable.prototype.destroy = function () {
+        this.$el.insertBefore(this.$container);
+        $(this.options.toolbar).insertBefore(this.$el);
+        this.$container.next().remove();
+        this.$container.remove();
+        this.$el.html(this.$el_.html())
+            .css('margin-top', '0')
+            .attr('class', this.$el_.attr('class') || ''); // reset the class
+    };
+
+    BootstrapTable.prototype.showLoading = function () {
+        this.$tableLoading.show();
+    };
+
+    BootstrapTable.prototype.hideLoading = function () {
+        this.$tableLoading.hide();
+    };
+
+    BootstrapTable.prototype.togglePagination = function () {
+        this.options.pagination = !this.options.pagination;
+        var button = this.$toolbar.find('button[name="paginationSwitch"] i');
+        if (this.options.pagination) {
+            button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchDown);
+        } else {
+            button.attr("class", this.options.iconsPrefix + " " + this.options.icons.paginationSwitchUp);
+        }
+        this.updatePagination();
+    };
+
+    BootstrapTable.prototype.refresh = function (params) {
+        if (params && params.url) {
+            this.options.url = params.url;
+            this.options.pageNumber = 1;
+        }
+        this.initServer(params && params.silent, params && params.query);
+    };
+
+    BootstrapTable.prototype.resetWidth = function () {
+        if (this.options.showHeader && this.options.height) {
+            this.fitHeader();
+        }
+        if (this.options.showFooter) {
+            this.fitFooter();
+        }
+    };
+
+    BootstrapTable.prototype.showColumn = function (field) {
+        this.toggleColumn(getFieldIndex(this.columns, field), true, true);
+    };
+
+    BootstrapTable.prototype.hideColumn = function (field) {
+        this.toggleColumn(getFieldIndex(this.columns, field), false, true);
+    };
+
+    BootstrapTable.prototype.getHiddenColumns = function () {
+        return $.grep(this.columns, function (column) {
+            return !column.visible;
+        });
+    };
+
+    BootstrapTable.prototype.filterBy = function (columns) {
+        this.filterColumns = $.isEmptyObject(columns) ? {} : columns;
+        this.options.pageNumber = 1;
+        this.initSearch();
+        this.updatePagination();
+    };
+
+    BootstrapTable.prototype.scrollTo = function (value) {
+        if (typeof value === 'string') {
+            value = value === 'bottom' ? this.$tableBody[0].scrollHeight : 0;
+        }
+        if (typeof value === 'number') {
+            this.$tableBody.scrollTop(value);
+        }
+        if (typeof value === 'undefined') {
+            return this.$tableBody.scrollTop();
+        }
+    };
+
+    BootstrapTable.prototype.getScrollPosition = function () {
+        return this.scrollTo();
+    };
+
+    BootstrapTable.prototype.selectPage = function (page) {
+        if (page > 0 && page <= this.options.totalPages) {
+            this.options.pageNumber = page;
+            this.updatePagination();
+        }
+    };
+
+    BootstrapTable.prototype.prevPage = function () {
+        if (this.options.pageNumber > 1) {
+            this.options.pageNumber--;
+            this.updatePagination();
+        }
+    };
+
+    BootstrapTable.prototype.nextPage = function () {
+        if (this.options.pageNumber < this.options.totalPages) {
+            this.options.pageNumber++;
+            this.updatePagination();
+        }
+    };
+
+    BootstrapTable.prototype.toggleView = function () {
+        this.options.cardView = !this.options.cardView;
+        this.initHeader();
+        // Fixed remove toolbar when click cardView button.
+        //that.initToolbar();
+        this.initBody();
+        this.trigger('toggle', this.options.cardView);
+    };
+
+    BootstrapTable.prototype.refreshOptions = function (options) {
+        //If the objects are equivalent then avoid the call of destroy / init methods
+        if (compareObjects(this.options, options, false)) {
+            return;
+        }
+        this.options = $.extend(this.options, options);
+        this.trigger('refresh-options', this.options);
+        this.destroy();
+        this.init();
+    };
+
+    BootstrapTable.prototype.resetSearch = function (text) {
+        var $search = this.$toolbar.find('.search input');
+        $search.val(text || '');
+        this.onSearch({currentTarget: $search});
+    };
+
+    BootstrapTable.prototype.expandRow_ = function (expand, index) {
+        var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', index));
+        if ($tr.next().is('tr.detail-view') === (expand ? false : true)) {
+            $tr.find('> td > .detail-icon').click();
+        }
+    };
+
+    BootstrapTable.prototype.expandRow = function (index) {
+        this.expandRow_(true, index);
+    };
+
+    BootstrapTable.prototype.collapseRow = function (index) {
+        this.expandRow_(false, index);
+    };
+
+    BootstrapTable.prototype.expandAllRows = function (isSubTable) {
+        if (isSubTable) {
+            var $tr = this.$body.find(sprintf('> tr[data-index="%s"]', 0)),
+                that = this,
+                detailIcon = null,
+                executeInterval = false,
+                idInterval = -1;
+
+            if (!$tr.next().is('tr.detail-view')) {
+                $tr.find('> td > .detail-icon').click();
+                executeInterval = true;
+            } else if (!$tr.next().next().is('tr.detail-view')) {
+                $tr.next().find(".detail-icon").click();
+                executeInterval = true;
+            }
+
+            if (executeInterval) {
+                try {
+                    idInterval = setInterval(function () {
+                        detailIcon = that.$body.find("tr.detail-view").last().find(".detail-icon");
+                        if (detailIcon.length > 0) {
+                            detailIcon.click();
+                        } else {
+                            clearInterval(idInterval);
+                        }
+                    }, 1);
+                } catch (ex) {
+                    clearInterval(idInterval);
+                }
+            }
+        } else {
+            var trs = this.$body.children();
+            for (var i = 0; i < trs.length; i++) {
+                this.expandRow_(true, $(trs[i]).data("index"));
+            }
+        }
+    };
+
+    BootstrapTable.prototype.collapseAllRows = function (isSubTable) {
+        if (isSubTable) {
+            this.expandRow_(false, 0);
+        } else {
+            var trs = this.$body.children();
+            for (var i = 0; i < trs.length; i++) {
+                this.expandRow_(false, $(trs[i]).data("index"));
+            }
+        }
+    };
+
+    // BOOTSTRAP TABLE PLUGIN DEFINITION
+    // =======================
+
+    var allowedMethods = [
+        'getOptions',
+        'getSelections', 'getAllSelections', 'getData',
+        'load', 'append', 'prepend', 'remove', 'removeAll',
+        'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
+        'getRowByUniqueId', 'showRow', 'hideRow', 'getRowsHidden',
+        'mergeCells',
+        'checkAll', 'uncheckAll',
+        'check', 'uncheck',
+        'checkBy', 'uncheckBy',
+        'refresh',
+        'resetView',
+        'resetWidth',
+        'destroy',
+        'showLoading', 'hideLoading',
+        'showColumn', 'hideColumn', 'getHiddenColumns',
+        'filterBy',
+        'scrollTo',
+        'getScrollPosition',
+        'selectPage', 'prevPage', 'nextPage',
+        'togglePagination',
+        'toggleView',
+        'refreshOptions',
+        'resetSearch',
+        'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows'
+    ];
+
+    $.fn.bootstrapTable = function (option) {
+        var value,
+            args = Array.prototype.slice.call(arguments, 1);
+
+        this.each(function () {
+            var $this = $(this),
+                data = $this.data('bootstrap.table'),
+                options = $.extend({}, BootstrapTable.DEFAULTS, $this.data(),
+                    typeof option === 'object' && option);
+
+            if (typeof option === 'string') {
+                if ($.inArray(option, allowedMethods) < 0) {
+                    throw new Error("Unknown method: " + option);
+                }
+
+                if (!data) {
+                    return;
+                }
+
+                value = data[option].apply(data, args);
+
+                if (option === 'destroy') {
+                    $this.removeData('bootstrap.table');
+                }
+            }
+
+            if (!data) {
+                $this.data('bootstrap.table', (data = new BootstrapTable(this, options)));
+            }
+        });
+
+        return typeof value === 'undefined' ? this : value;
+    };
+
+    $.fn.bootstrapTable.Constructor = BootstrapTable;
+    $.fn.bootstrapTable.defaults = BootstrapTable.DEFAULTS;
+    $.fn.bootstrapTable.columnDefaults = BootstrapTable.COLUMN_DEFAULTS;
+    $.fn.bootstrapTable.locales = BootstrapTable.LOCALES;
+    $.fn.bootstrapTable.methods = allowedMethods;
+    $.fn.bootstrapTable.utils = {
+        sprintf: sprintf,
+        getFieldIndex: getFieldIndex,
+        compareObjects: compareObjects,
+        calculateObjectValue: calculateObjectValue
+    };
+
+    // BOOTSTRAP TABLE INIT
+    // =======================
+
+    $(function () {
+        $('[data-toggle="table"]').bootstrapTable();
+    });
+
+}(jQuery);
diff --git a/js/table/bootstrap-table.min.css b/js/table/bootstrap-table.min.css
new file mode 100644
index 0000000..5ab17e4
--- /dev/null
+++ b/js/table/bootstrap-table.min.css
@@ -0,0 +1 @@
+.fixed-table-container .bs-checkbox,.fixed-table-container .no-records-found{text-align:center}.fixed-table-body thead th .th-inner,.table td,.table th{box-sizing:border-box}.bootstrap-table .table{margin-bottom:0!important;border-bottom:1px solid #ddd;border-collapse:collapse!important;border-radius:1px}.bootstrap-table .table:not(.table-condensed),.bootstrap-table .table:not(.table-condensed)>tbody>tr>td,.bootstrap-table .table:not(.table-condensed)>tbody>tr>th,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>td,.bootstrap-table .table:not(.table-condensed)>tfoot>tr>th,.bootstrap-table .table:not(.table-condensed)>thead>tr>td{padding:8px!important}.bootstrap-table .table.table-no-bordered>tbody>tr>td,.bootstrap-table .table.table-no-bordered>thead>tr>th{border-right:2px solid transparent}.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}.fixed-table-container.table-no-bordered{border:1px solid transparent}.fixed-table-footer,.fixed-table-header{overflow:hidden}.fixed-table-footer{border-top:1px solid #ddd}.fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.fixed-table-container table{width:100%}.fixed-table-container thead th{height:0;padding:0;margin:0;border-left:1px solid #ddd}.fixed-table-container thead th:first-child{border-left:none;border-top-left-radius:4px;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px}.fixed-table-container tbody td .th-inner,.fixed-table-container thead th .th-inner{padding:8px;line-height:24px;vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fixed-table-container thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px}.fixed-table-container thead th .both{background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC')}.fixed-table-container thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.fixed-table-container thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.fixed-table-container th.detail{width:30px}.fixed-table-container tbody td{border-left:1px solid #ddd}.fixed-table-container tbody tr:first-child td{border-top:none}.fixed-table-container tbody td:first-child{border-left:none}.fixed-table-container tbody .selected td{background-color:#f5f5f5}.fixed-table-container .bs-checkbox .th-inner{padding:8px 0}.fixed-table-container input[type=radio],.fixed-table-container input[type=checkbox]{margin:0 auto!important}.fixed-table-pagination .pagination-detail,.fixed-table-pagination div.pagination{margin-top:10px;margin-bottom:10px}.fixed-table-pagination div.pagination .pagination{margin:0}.fixed-table-pagination .pagination a{padding:6px 12px;line-height:1.428571429}.fixed-table-pagination .pagination-info{line-height:34px;margin-right:5px}.fixed-table-pagination .btn-group{position:relative;display:inline-block;vertical-align:middle}.fixed-table-pagination .dropup .dropdown-menu{margin-bottom:0}.fixed-table-pagination .page-list{display:inline-block}.fixed-table-toolbar .columns-left{margin-right:5px}.fixed-table-toolbar .columns-right{margin-left:5px}.fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429}.fixed-table-toolbar .bars,.fixed-table-toolbar .columns,.fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px;line-height:34px}.fixed-table-pagination li.disabled a{pointer-events:none;cursor:default}.fixed-table-loading{display:none;position:absolute;top:42px;right:0;bottom:0;left:0;z-index:99;background-color:#fff;text-align:center}.fixed-table-body .card-view .title{font-weight:700;display:inline-block;min-width:30%;text-align:left!important}.table td,.table th{vertical-align:middle}.fixed-table-toolbar .dropdown-menu{text-align:left;max-height:300px;overflow:auto}.fixed-table-toolbar .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.fixed-table-toolbar .btn-group>.btn-group>.btn{border-radius:0}.fixed-table-toolbar .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.fixed-table-toolbar .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .table>thead>tr>th{vertical-align:bottom;border-bottom:1px solid #ddd}.bootstrap-table .table thead>tr>th{padding:0;margin:0}.bootstrap-table .fixed-table-footer tbody>tr>td{padding:0!important}.bootstrap-table .fixed-table-footer .table{border-bottom:none;border-radius:0}.pull-right .dropdown-menu{right:0;left:auto}p.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}
\ No newline at end of file
diff --git a/js/table/bootstrap-table.min.js b/js/table/bootstrap-table.min.js
new file mode 100644
index 0000000..065ce66
--- /dev/null
+++ b/js/table/bootstrap-table.min.js
@@ -0,0 +1,9 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=null,c=function(a){var b=arguments,c=!0,d=1;return a=a.replace(/%s/g,function(){var a=b[d++];return"undefined"==typeof a?(c=!1,""):a}),c?a:""},d=function(b,c,d,e){var f="";return a.each(b,function(a,b){return b[c]===e?(f=b[d],!1):!0}),f},e=function(b,c){var d=-1;return a.each(b,function(a,b){return b.field===c?(d=a,!1):!0}),d},f=function(b){var c,d,e,f=0,g=[];for(c=0;c<b[0].length;c++)f+=b[0][c].colspan||1;for(c=0;c<b.length;c++)for(g[c]=[],d=0;f>d;d++)g[c][d]=!1;for(c=0;c<b.length;c++)for(d=0;d<b[c].length;d++){var h=b[c][d],i=h.rowspan||1,j=h.colspan||1,k=a.inArray(!1,g[c]);for(1===j&&(h.fieldIndex=k,"undefined"==typeof h.field&&(h.field=k)),e=0;i>e;e++)g[c+e][k]=!0;for(e=0;j>e;e++)g[c][k+e]=!0}},g=function(){if(null===b){var c,d,e=a("<p/>").addClass("fixed-table-scroll-inner"),f=a("<div/>").addClass("fixed-table-scroll-outer");f.append(e),a("body").append(f),c=e[0].offsetWidth,f.css("overflow","scroll"),d=e[0].offsetWidth,c===d&&(d=f[0].clientWidth),f.remove(),b=c-d}return b},h=function(b,d,e,f){var g=d;if("string"==typeof d){var h=d.split(".");h.length>1?(g=window,a.each(h,function(a,b){g=g[b]})):g=window[d]}return"object"==typeof g?g:"function"==typeof g?g.apply(b,e):!g&&"string"==typeof d&&c.apply(this,[d].concat(e))?c.apply(this,[d].concat(e)):f},i=function(b,c,d){var e=Object.getOwnPropertyNames(b),f=Object.getOwnPropertyNames(c),g="";if(d&&e.length!==f.length)return!1;for(var h=0;h<e.length;h++)if(g=e[h],a.inArray(g,f)>-1&&b[g]!==c[g])return!1;return!0},j=function(a){return"string"==typeof a?a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;"):a},k=function(b){var c=0;return b.children().each(function(){c<a(this).outerHeight(!0)&&(c=a(this).outerHeight(!0))}),c},l=function(a){for(var b in a){var c=b.split(/(?=[A-Z])/).join("-").toLowerCase();c!==b&&(a[c]=a[b],delete a[b])}return a},m=function(a,b){var c=a;if("string"!=typeof b||a.hasOwnProperty(b))return a[b];var d=b.split(".");for(var e in d)c=c[d[e]];return c},n=function(b,c){this.options=c,this.$el=a(b),this.$el_=this.$el.clone(),this.timeoutId_=0,this.timeoutFooter_=0,this.init()};n.DEFAULTS={classes:"table table-hover",locale:void 0,height:void 0,undefinedText:"-",sortName:void 0,sortOrder:"asc",striped:!1,columns:[[]],data:[],dataField:"rows",method:"get",url:void 0,ajax:void 0,cache:!0,contentType:"application/json",dataType:"json",ajaxOptions:{},queryParams:function(a){return a},queryParamsType:"limit",responseHandler:function(a){return a},pagination:!1,onlyInfoPagination:!1,sidePagination:"client",totalRows:0,pageNumber:1,pageSize:10,pageList:[10,25,50,100],paginationHAlign:"right",paginationVAlign:"bottom",paginationDetailHAlign:"left",paginationFirstText:"&laquo;",paginationPreText:"&lsaquo;",paginationNextText:"&rsaquo;",paginationLastText:"&raquo;",search:!1,strictSearch:!1,searchAlign:"right",selectItemName:"btSelectItem",showHeader:!0,showFooter:!1,showColumns:!1,showPaginationSwitch:!1,showRefresh:!1,showToggle:!1,buttonsAlign:"right",smartDisplay:!0,minimumCountColumns:1,idField:void 0,uniqueId:void 0,cardView:!1,detailView:!1,detailFormatter:function(){return""},trimOnSearch:!0,clickToSelect:!1,singleSelect:!1,toolbar:void 0,toolbarAlign:"left",checkboxHeader:!0,sortable:!0,silentSort:!0,maintainSelected:!1,searchTimeOut:500,searchText:"",iconSize:void 0,iconsPrefix:"glyphicon",icons:{paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",toggle:"glyphicon-list-alt icon-list-alt",columns:"glyphicon-th icon-th",detailOpen:"glyphicon-plus icon-plus",detailClose:"glyphicon-minus icon-minus"},rowStyle:function(){return{}},rowAttributes:function(){return{}},onAll:function(){return!1},onClickCell:function(){return!1},onDblClickCell:function(){return!1},onClickRow:function(){return!1},onDblClickRow:function(){return!1},onSort:function(){return!1},onCheck:function(){return!1},onUncheck:function(){return!1},onCheckAll:function(){return!1},onUncheckAll:function(){return!1},onCheckSome:function(){return!1},onUncheckSome:function(){return!1},onLoadSuccess:function(){return!1},onLoadError:function(){return!1},onColumnSwitch:function(){return!1},onPageChange:function(){return!1},onSearch:function(){return!1},onToggle:function(){return!1},onPreBody:function(){return!1},onPostBody:function(){return!1},onPostHeader:function(){return!1},onExpandRow:function(){return!1},onCollapseRow:function(){return!1},onRefreshOptions:function(){return!1},onResetView:function(){return!1}},n.LOCALES=[],n.LOCALES["en-US"]=n.LOCALES.en={formatLoadingMessage:function(){return"Loading, please wait..."},formatRecordsPerPage:function(a){return c("%s records per page",a)},formatShowingRows:function(a,b,d){return c("Showing %s to %s of %s rows",a,b,d)},formatDetailPagination:function(a){return c("Showing %s rows",a)},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatColumns:function(){return"Columns"},formatAllRows:function(){return"All"}},a.extend(n.DEFAULTS,n.LOCALES["en-US"]),n.COLUMN_DEFAULTS={radio:!1,checkbox:!1,checkboxEnabled:!0,field:void 0,title:void 0,titleTooltip:void 0,"class":void 0,align:void 0,halign:void 0,falign:void 0,valign:void 0,width:void 0,sortable:!1,order:"asc",visible:!0,switchable:!0,clickToSelect:!0,formatter:void 0,footerFormatter:void 0,events:void 0,sorter:void 0,sortName:void 0,cellStyle:void 0,searchable:!0,searchFormatter:!0,cardVisible:!0},n.EVENTS={"all.bs.table":"onAll","click-cell.bs.table":"onClickCell","dbl-click-cell.bs.table":"onDblClickCell","click-row.bs.table":"onClickRow","dbl-click-row.bs.table":"onDblClickRow","sort.bs.table":"onSort","check.bs.table":"onCheck","uncheck.bs.table":"onUncheck","check-all.bs.table":"onCheckAll","uncheck-all.bs.table":"onUncheckAll","check-some.bs.table":"onCheckSome","uncheck-some.bs.table":"onUncheckSome","load-success.bs.table":"onLoadSuccess","load-error.bs.table":"onLoadError","column-switch.bs.table":"onColumnSwitch","page-change.bs.table":"onPageChange","search.bs.table":"onSearch","toggle.bs.table":"onToggle","pre-body.bs.table":"onPreBody","post-body.bs.table":"onPostBody","post-header.bs.table":"onPostHeader","expand-row.bs.table":"onExpandRow","collapse-row.bs.table":"onCollapseRow","refresh-options.bs.table":"onRefreshOptions","reset-view.bs.table":"onResetView"},n.prototype.init=function(){this.initLocale(),this.initContainer(),this.initTable(),this.initHeader(),this.initData(),this.initFooter(),this.initToolbar(),this.initPagination(),this.initBody(),this.initSearchText(),this.initServer()},n.prototype.initLocale=function(){if(this.options.locale){var b=this.options.locale.split(/-|_/);b[0].toLowerCase(),b[1]&&b[1].toUpperCase(),a.fn.bootstrapTable.locales[this.options.locale]?a.extend(this.options,a.fn.bootstrapTable.locales[this.options.locale]):a.fn.bootstrapTable.locales[b.join("-")]?a.extend(this.options,a.fn.bootstrapTable.locales[b.join("-")]):a.fn.bootstrapTable.locales[b[0]]&&a.extend(this.options,a.fn.bootstrapTable.locales[b[0]])}},n.prototype.initContainer=function(){this.$container=a(['<div class="bootstrap-table">','<div class="fixed-table-toolbar"></div>',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'<div class="fixed-table-pagination" style="clear: both;"></div>':"",'<div class="fixed-table-container">','<div class="fixed-table-header"><table></table></div>','<div class="fixed-table-body">','<div class="fixed-table-loading">',this.options.formatLoadingMessage(),"</div>","</div>",'<div class="fixed-table-footer"><table><tr></tr></table></div>',"bottom"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?'<div class="fixed-table-pagination"></div>':"","</div>","</div>"].join("")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$container.find(".fixed-table-footer"),this.$toolbar=this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('<div class="clearfix"></div>'),this.$el.addClass(this.options.classes),this.options.striped&&this.$el.addClass("table-striped"),-1!==a.inArray("table-no-bordered",this.options.classes.split(" "))&&this.$tableContainer.addClass("table-no-bordered")},n.prototype.initTable=function(){var b=this,c=[],d=[];this.$header=this.$el.find(">thead"),this.$header.length||(this.$header=a("<thead></thead>").appendTo(this.$el)),this.$header.find("tr").each(function(){var b=[];a(this).find("th").each(function(){b.push(a.extend({},{title:a(this).html(),"class":a(this).attr("class"),titleTooltip:a(this).attr("title"),rowspan:a(this).attr("rowspan")?+a(this).attr("rowspan"):void 0,colspan:a(this).attr("colspan")?+a(this).attr("colspan"):void 0},a(this).data()))}),c.push(b)}),a.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=a.extend(!0,[],c,this.options.columns),this.columns=[],f(this.options.columns),a.each(this.options.columns,function(c,d){a.each(d,function(d,e){e=a.extend({},n.COLUMN_DEFAULTS,e),"undefined"!=typeof e.fieldIndex&&(b.columns[e.fieldIndex]=e),b.options.columns[c][d]=e})}),this.options.data.length||(this.$el.find(">tbody>tr").each(function(){var c={};c._id=a(this).attr("id"),c._class=a(this).attr("class"),c._data=l(a(this).data()),a(this).find("td").each(function(d){var e=b.columns[d].field;c[e]=a(this).html(),c["_"+e+"_id"]=a(this).attr("id"),c["_"+e+"_class"]=a(this).attr("class"),c["_"+e+"_rowspan"]=a(this).attr("rowspan"),c["_"+e+"_title"]=a(this).attr("title"),c["_"+e+"_data"]=l(a(this).data())}),d.push(c)}),this.options.data=d)},n.prototype.initHeader=function(){var b=this,d={},e=[];this.header={fields:[],styles:[],classes:[],formatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},a.each(this.options.columns,function(f,g){e.push("<tr>"),0==f&&!b.options.cardView&&b.options.detailView&&e.push(c('<th class="detail" rowspan="%s"><div class="fht-cell"></div></th>',b.options.columns.length)),a.each(g,function(a,f){var g="",h="",i="",j="",k=c(' class="%s"',f["class"]),l=(b.options.sortOrder||f.order,"px"),m=f.width;if(void 0===f.width||b.options.cardView||"string"==typeof f.width&&-1!==f.width.indexOf("%")&&(l="%"),f.width&&"string"==typeof f.width&&(m=f.width.replace("%","").replace("px","")),h=c("text-align: %s; ",f.halign?f.halign:f.align),i=c("text-align: %s; ",f.align),j=c("vertical-align: %s; ",f.valign),j+=c("width: %s; ",!f.checkbox&&!f.radio||m?m?m+l:void 0:"36px"),"undefined"!=typeof f.fieldIndex){if(b.header.fields[f.fieldIndex]=f.field,b.header.styles[f.fieldIndex]=i+j,b.header.classes[f.fieldIndex]=k,b.header.formatters[f.fieldIndex]=f.formatter,b.header.events[f.fieldIndex]=f.events,b.header.sorters[f.fieldIndex]=f.sorter,b.header.sortNames[f.fieldIndex]=f.sortName,b.header.cellStyles[f.fieldIndex]=f.cellStyle,b.header.searchables[f.fieldIndex]=f.searchable,!f.visible)return;if(b.options.cardView&&!f.cardVisible)return;d[f.field]=f}e.push("<th"+c(' title="%s"',f.titleTooltip),f.checkbox||f.radio?c(' class="bs-checkbox %s"',f["class"]||""):k,c(' style="%s"',h+j),c(' rowspan="%s"',f.rowspan),c(' colspan="%s"',f.colspan),c(' data-field="%s"',f.field),"tabindex='0'",">"),e.push(c('<div class="th-inner %s">',b.options.sortable&&f.sortable?"sortable both":"")),g=f.title,f.checkbox&&(!b.options.singleSelect&&b.options.checkboxHeader&&(g='<input name="btSelectAll" type="checkbox" />'),b.header.stateField=f.field),f.radio&&(g="",b.header.stateField=f.field,b.options.singleSelect=!0),e.push(g),e.push("</div>"),e.push('<div class="fht-cell"></div>'),e.push("</div>"),e.push("</th>")}),e.push("</tr>")}),this.$header.html(e.join("")),this.$header.find("th[data-field]").each(function(){a(this).data(d[a(this).data("field")])}),this.$container.off("click",".th-inner").on("click",".th-inner",function(c){b.options.sortable&&a(this).parent().data().sortable&&b.onSort(c)}),this.$header.children().children().off("keypress").on("keypress",function(c){if(b.options.sortable&&a(this).data().sortable){var d=c.keyCode||c.which;13==d&&b.onSort(c)}}),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret()),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$container.off("click",'[name="btSelectAll"]').on("click",'[name="btSelectAll"]',function(){var c=a(this).prop("checked");b[c?"checkAll":"uncheckAll"](),b.updateSelected()})},n.prototype.initFooter=function(){!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()},n.prototype.initData=function(a,b){this.data="append"===b?this.data.concat(a):"prepend"===b?[].concat(a).concat(this.data):a||this.options.data,this.options.data="append"===b?this.options.data.concat(a):"prepend"===b?[].concat(a).concat(this.options.data):this.data,"server"!==this.options.sidePagination&&this.initSort()},n.prototype.initSort=function(){var b=this,c=this.options.sortName,d="desc"===this.options.sortOrder?-1:1,e=a.inArray(this.options.sortName,this.header.fields);-1!==e&&this.data.sort(function(f,g){b.header.sortNames[e]&&(c=b.header.sortNames[e]);var i=m(f,c),j=m(g,c),k=h(b.header,b.header.sorters[e],[i,j]);return void 0!==k?d*k:((void 0===i||null===i)&&(i=""),(void 0===j||null===j)&&(j=""),a.isNumeric(i)&&a.isNumeric(j)?(i=parseFloat(i),j=parseFloat(j),j>i?-1*d:d):i===j?0:("string"!=typeof i&&(i=i.toString()),-1===i.localeCompare(j)?-1*d:d))})},n.prototype.onSort=function(b){var c="keypress"===b.type?a(b.currentTarget):a(b.currentTarget).parent(),d=this.$header.find("th").eq(c.index());return this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===c.data("field")?this.options.sortOrder="asc"===this.options.sortOrder?"desc":"asc":(this.options.sortName=c.data("field"),this.options.sortOrder="asc"===c.data("order")?"desc":"asc"),this.trigger("sort",this.options.sortName,this.options.sortOrder),c.add(d).data("order",this.options.sortOrder),this.getCaret(),"server"===this.options.sidePagination?void this.initServer(this.options.silentSort):(this.initSort(),void this.initBody())},n.prototype.initToolbar=function(){var b,d,f=this,g=[],i=0,j=0;this.$toolbar.html(""),("string"==typeof this.options.toolbar||"object"==typeof this.options.toolbar)&&a(c('<div class="bars pull-%s"></div>',this.options.toolbarAlign)).appendTo(this.$toolbar).append(a(this.options.toolbar)),g=[c('<div class="columns columns-%s btn-group pull-%s">',this.options.buttonsAlign,this.options.buttonsAlign)],"string"==typeof this.options.icons&&(this.options.icons=h(null,this.options.icons)),this.options.showPaginationSwitch&&g.push(c('<button class="btn btn-default" type="button" name="paginationSwitch" title="%s">',this.options.formatPaginationSwitch()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.paginationSwitchDown),"</button>"),this.options.showRefresh&&g.push(c('<button class="btn btn-default'+c(" btn-%s",this.options.iconSize)+'" type="button" name="refresh" title="%s">',this.options.formatRefresh()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.refresh),"</button>"),this.options.showToggle&&g.push(c('<button class="btn btn-default'+c(" btn-%s",this.options.iconSize)+'" type="button" name="toggle" title="%s">',this.options.formatToggle()),c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.toggle),"</button>"),this.options.showColumns&&(g.push(c('<div class="keep-open btn-group" title="%s">',this.options.formatColumns()),'<button type="button" class="btn btn-default'+c(" btn-%s",this.options.iconSize)+' dropdown-toggle" data-toggle="dropdown">',c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.columns),' <span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">'),a.each(this.columns,function(a,b){if(!(b.radio||b.checkbox||f.options.cardView&&!b.cardVisible)){var d=b.visible?' checked="checked"':"";b.switchable&&(g.push(c('<li><label><input type="checkbox" data-field="%s" value="%s"%s> %s</label></li>',b.field,a,d,b.title)),j++)}}),g.push("</ul>","</div>")),g.push("</div>"),(this.showToolbar||g.length>2)&&this.$toolbar.append(g.join("")),this.options.showPaginationSwitch&&this.$toolbar.find('button[name="paginationSwitch"]').off("click").on("click",a.proxy(this.togglePagination,this)),this.options.showRefresh&&this.$toolbar.find('button[name="refresh"]').off("click").on("click",a.proxy(this.refresh,this)),this.options.showToggle&&this.$toolbar.find('button[name="toggle"]').off("click").on("click",function(){f.toggleView()}),this.options.showColumns&&(b=this.$toolbar.find(".keep-open"),j<=this.options.minimumCountColumns&&b.find("input").prop("disabled",!0),b.find("li").off("click").on("click",function(a){a.stopImmediatePropagation()}),b.find("input").off("click").on("click",function(){var b=a(this);f.toggleColumn(e(f.columns,a(this).data("field")),b.prop("checked"),!1),f.trigger("column-switch",a(this).data("field"),b.prop("checked"))})),this.options.search&&(g=[],g.push('<div class="pull-'+this.options.searchAlign+' search">',c('<input class="form-control'+c(" input-%s",this.options.iconSize)+'" type="text" placeholder="%s">',this.options.formatSearch()),"</div>"),this.$toolbar.append(g.join("")),d=this.$toolbar.find(".search input"),d.off("keyup drop").on("keyup drop",function(a){clearTimeout(i),i=setTimeout(function(){f.onSearch(a)},f.options.searchTimeOut)}))},n.prototype.onSearch=function(b){var c=a.trim(a(b.currentTarget).val());this.options.trimOnSearch&&a(b.currentTarget).val()!==c&&a(b.currentTarget).val(c),c!==this.searchText&&(this.searchText=c,this.options.pageNumber=1,this.initSearch(),this.updatePagination(),this.trigger("search",c))},n.prototype.initSearch=function(){var b=this;if("server"!==this.options.sidePagination){var c=this.searchText&&this.searchText.toLowerCase(),d=a.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.data=d?a.grep(this.options.data,function(b){for(var c in d)if(a.isArray(d[c])){if(-1===a.inArray(b[c],d[c]))return!1}else if(b[c]!==d[c])return!1;return!0}):this.options.data,this.data=c?a.grep(this.data,function(d,f){for(var g in d){g=a.isNumeric(g)?parseInt(g,10):g;var i=d[g],j=b.columns[e(b.columns,g)],k=a.inArray(g,b.header.fields);j&&j.searchFormatter&&(i=h(j,b.header.formatters[k],[i,d,f],i));var l=a.inArray(g,b.header.fields);if(-1!==l&&b.header.searchables[l]&&("string"==typeof i||"number"==typeof i))if(b.options.strictSearch){if((i+"").toLowerCase()===c)return!0}else if(-1!==(i+"").toLowerCase().indexOf(c))return!0}return!1}):this.data}},n.prototype.initPagination=function(){if(!this.options.pagination)return void this.$pagination.hide();this.$pagination.show();var b,d,e,f,g,h,i,j,k,l=this,m=[],n=!1,o=this.getData();if("server"!==this.options.sidePagination&&(this.options.totalRows=o.length),this.totalPages=0,this.options.totalRows){if(this.options.pageSize===this.options.formatAllRows())this.options.pageSize=this.options.totalRows,n=!0;else if(this.options.pageSize===this.options.totalRows){var p="string"==typeof this.options.pageList?this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").toLowerCase().split(","):this.options.pageList;a.inArray(this.options.formatAllRows().toLowerCase(),p)>-1&&(n=!0)}this.totalPages=~~((this.options.totalRows-1)/this.options.pageSize)+1,this.options.totalPages=this.totalPages}if(this.totalPages>0&&this.options.pageNumber>this.totalPages&&(this.options.pageNumber=this.totalPages),this.pageFrom=(this.options.pageNumber-1)*this.options.pageSize+1,this.pageTo=this.options.pageNumber*this.options.pageSize,this.pageTo>this.options.totalRows&&(this.pageTo=this.options.totalRows),m.push('<div class="pull-'+this.options.paginationDetailHAlign+' pagination-detail">','<span class="pagination-info">',this.options.onlyInfoPagination?this.options.formatDetailPagination(this.options.totalRows):this.options.formatShowingRows(this.pageFrom,this.pageTo,this.options.totalRows),"</span>"),!this.options.onlyInfoPagination){m.push('<span class="page-list">');var q=[c('<span class="btn-group %s">',"top"===this.options.paginationVAlign||"both"===this.options.paginationVAlign?"dropdown":"dropup"),'<button type="button" class="btn btn-default '+c(" btn-%s",this.options.iconSize)+' dropdown-toggle" data-toggle="dropdown">','<span class="page-size">',n?this.options.formatAllRows():this.options.pageSize,"</span>",' <span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">'],r=this.options.pageList;if("string"==typeof this.options.pageList){var s=this.options.pageList.replace("[","").replace("]","").replace(/ /g,"").split(",");r=[],a.each(s,function(a,b){r.push(b.toUpperCase()===l.options.formatAllRows().toUpperCase()?l.options.formatAllRows():+b)})}for(a.each(r,function(a,b){if(!l.options.smartDisplay||0===a||r[a-1]<=l.options.totalRows){var d;d=n?b===l.options.formatAllRows()?' class="active"':"":b===l.options.pageSize?' class="active"':"",q.push(c('<li%s><a href="javascript:void(0)">%s</a></li>',d,b))}}),q.push("</ul></span>"),m.push(this.options.formatRecordsPerPage(q.join(""))),m.push("</span>"),m.push("</div>",'<div class="pull-'+this.options.paginationHAlign+' pagination">','<ul class="pagination'+c(" pagination-%s",this.options.iconSize)+'">','<li class="page-first"><a href="javascript:void(0)">'+this.options.paginationFirstText+"</a></li>",'<li class="page-pre"><a href="javascript:void(0)">'+this.options.paginationPreText+"</a></li>"),this.totalPages<5?(d=1,e=this.totalPages):(d=this.options.pageNumber-2,e=d+4,1>d&&(d=1,e=5),e>this.totalPages&&(e=this.totalPages,d=e-4)),b=d;e>=b;b++)m.push('<li class="page-number'+(b===this.options.pageNumber?" active":"")+'">','<a href="javascript:void(0)">',b,"</a>","</li>");m.push('<li class="page-next"><a href="javascript:void(0)">'+this.options.paginationNextText+"</a></li>",'<li class="page-last"><a href="javascript:void(0)">'+this.options.paginationLastText+"</a></li>","</ul>","</div>")}this.$pagination.html(m.join("")),this.options.onlyInfoPagination||(f=this.$pagination.find(".page-list a"),g=this.$pagination.find(".page-first"),h=this.$pagination.find(".page-pre"),i=this.$pagination.find(".page-next"),j=this.$pagination.find(".page-last"),k=this.$pagination.find(".page-number"),this.options.pageNumber<=1&&(g.addClass("disabled"),h.addClass("disabled")),this.options.pageNumber>=this.totalPages&&(i.addClass("disabled"),j.addClass("disabled")),this.options.smartDisplay&&(this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),(r.length<2||this.options.totalRows<=r[0])&&this.$pagination.find("span.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"]()),n&&(this.options.pageSize=this.options.formatAllRows()),f.off("click").on("click",a.proxy(this.onPageListChange,this)),g.off("click").on("click",a.proxy(this.onPageFirst,this)),h.off("click").on("click",a.proxy(this.onPagePre,this)),i.off("click").on("click",a.proxy(this.onPageNext,this)),j.off("click").on("click",a.proxy(this.onPageLast,this)),k.off("click").on("click",a.proxy(this.onPageNumber,this)))},n.prototype.updatePagination=function(b){b&&a(b.currentTarget).hasClass("disabled")||(this.options.maintainSelected||this.resetRows(),this.initPagination(),"server"===this.options.sidePagination?this.initServer():this.initBody(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize))},n.prototype.onPageListChange=function(b){var c=a(b.currentTarget);c.parent().addClass("active").siblings().removeClass("active"),this.options.pageSize=c.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+c.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(b)},n.prototype.onPageFirst=function(a){this.options.pageNumber=1,this.updatePagination(a)},n.prototype.onPagePre=function(a){this.options.pageNumber--,this.updatePagination(a)},n.prototype.onPageNext=function(a){this.options.pageNumber++,this.updatePagination(a)},n.prototype.onPageLast=function(a){this.options.pageNumber=this.totalPages,this.updatePagination(a)},n.prototype.onPageNumber=function(b){this.options.pageNumber!==+a(b.currentTarget).text()&&(this.options.pageNumber=+a(b.currentTarget).text(),this.updatePagination(b))},n.prototype.initBody=function(b){var f=this,g=[],i=this.getData();this.trigger("pre-body",i),this.$body=this.$el.find(">tbody"),this.$body.length||(this.$body=a("<tbody></tbody>").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=i.length);for(var k=this.pageFrom-1;k<this.pageTo;k++){var l,n=i[k],o={},p=[],q="",r={},s=[];if(o=h(this.options,this.options.rowStyle,[n,k],o),o&&o.css)for(l in o.css)p.push(l+": "+o.css[l]);if(r=h(this.options,this.options.rowAttributes,[n,k],r))for(l in r)s.push(c('%s="%s"',l,j(r[l])));n._data&&!a.isEmptyObject(n._data)&&a.each(n._data,function(a,b){"index"!==a&&(q+=c(' data-%s="%s"',a,b))}),g.push("<tr",c(" %s",s.join(" ")),c(' id="%s"',a.isArray(n)?void 0:n._id),c(' class="%s"',o.classes||(a.isArray(n)?void 0:n._class)),c(' data-index="%s"',k),c(' data-uniqueid="%s"',n[this.options.uniqueId]),c("%s",q),">"),this.options.cardView&&g.push(c('<td colspan="%s">',this.header.fields.length)),!this.options.cardView&&this.options.detailView&&g.push("<td>",'<a class="detail-icon" href="javascript:">',c('<i class="%s %s"></i>',this.options.iconsPrefix,this.options.icons.detailOpen),"</a>","</td>"),a.each(this.header.fields,function(b,i){var j="",l=m(n,i),q="",r={},s="",t=f.header.classes[b],u="",v="",w="",x=f.columns[e(f.columns,i)];if(x.visible){if(o=c('style="%s"',p.concat(f.header.styles[b]).join("; ")),l=h(x,f.header.formatters[b],[l,n,k],l),n["_"+i+"_id"]&&(s=c(' id="%s"',n["_"+i+"_id"])),n["_"+i+"_class"]&&(t=c(' class="%s"',n["_"+i+"_class"])),n["_"+i+"_rowspan"]&&(v=c(' rowspan="%s"',n["_"+i+"_rowspan"])),n["_"+i+"_title"]&&(w=c(' title="%s"',n["_"+i+"_title"])),r=h(f.header,f.header.cellStyles[b],[l,n,k],r),r.classes&&(t=c(' class="%s"',r.classes)),r.css){var y=[];for(var z in r.css)y.push(z+": "+r.css[z]);o=c('style="%s"',y.concat(f.header.styles[b]).join("; "))}n["_"+i+"_data"]&&!a.isEmptyObject(n["_"+i+"_data"])&&a.each(n["_"+i+"_data"],function(a,b){"index"!==a&&(u+=c(' data-%s="%s"',a,b))}),x.checkbox||x.radio?(q=x.checkbox?"checkbox":q,q=x.radio?"radio":q,j=[f.options.cardView?'<div class="card-view">':'<td class="bs-checkbox">',"<input"+c(' data-index="%s"',k)+c(' name="%s"',f.options.selectItemName)+c(' type="%s"',q)+c(' value="%s"',n[f.options.idField])+c(' checked="%s"',l===!0||l&&l.checked?"checked":void 0)+c(' disabled="%s"',!x.checkboxEnabled||l&&l.disabled?"disabled":void 0)+" />",f.header.formatters[b]&&"string"==typeof l?l:"",f.options.cardView?"</div>":"</td>"].join(""),n[f.header.stateField]=l===!0||l&&l.checked):(l="undefined"==typeof l||null===l?f.options.undefinedText:l,j=f.options.cardView?['<div class="card-view">',f.options.showHeader?c('<span class="title" %s>%s</span>',o,d(f.columns,"field","title",i)):"",c('<span class="value">%s</span>',l),"</div>"].join(""):[c("<td%s %s %s %s %s %s>",s,t,o,u,v,w),l,"</td>"].join(""),f.options.cardView&&f.options.smartDisplay&&""===l&&(j='<div class="card-view"></div>')),g.push(j)}}),this.options.cardView&&g.push("</td>"),g.push("</tr>")}g.length||g.push('<tr class="no-records-found">',c('<td colspan="%s">%s</td>',this.$header.find("th").length,this.options.formatNoMatches()),"</tr>"),this.$body.html(g.join("")),b||this.scrollTo(0),this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",function(b){var d=a(this),g=d.parent(),h=f.data[g.data("index")],i=d[0].cellIndex,j=f.header.fields[f.options.detailView&&!f.options.cardView?i-1:i],k=f.columns[e(f.columns,j)],l=m(h,j);if(!d.find(".detail-icon").length&&(f.trigger("click"===b.type?"click-cell":"dbl-click-cell",j,l,h,d),f.trigger("click"===b.type?"click-row":"dbl-click-row",h,g),"click"===b.type&&f.options.clickToSelect&&k.clickToSelect)){var n=g.find(c('[name="%s"]',f.options.selectItemName));n.length&&n[0].click()}}),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",function(){var b=a(this),d=b.parent().parent(),e=d.data("index"),g=i[e];d.next().is("tr.detail-view")?(b.find("i").attr("class",c("%s %s",f.options.iconsPrefix,f.options.icons.detailOpen)),d.next().remove(),f.trigger("collapse-row",e,g)):(b.find("i").attr("class",c("%s %s",f.options.iconsPrefix,f.options.icons.detailClose)),d.after(c('<tr class="detail-view"><td colspan="%s">%s</td></tr>',d.find("td").length,h(f.options,f.options.detailFormatter,[e,g],""))),f.trigger("expand-row",e,g,d.next().find("td"))),f.resetView()}),this.$selectItem=this.$body.find(c('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",function(b){b.stopImmediatePropagation();var c=a(this),d=c.prop("checked"),e=f.data[c.data("index")];f.options.maintainSelected&&a(this).is(":radio")&&a.each(f.options.data,function(a,b){b[f.header.stateField]=!1}),e[f.header.stateField]=d,f.options.singleSelect&&(f.$selectItem.not(this).each(function(){f.data[a(this).data("index")][f.header.stateField]=!1}),f.$selectItem.filter(":checked").not(this).prop("checked",!1)),f.updateSelected(),f.trigger(d?"check":"uncheck",e,c)}),a.each(this.header.events,function(b,c){if(c){"string"==typeof c&&(c=h(null,c));var d=f.header.fields[b],e=a.inArray(d,f.getVisibleFields());f.options.detailView&&!f.options.cardView&&(e+=1);for(var g in c)f.$body.find(">tr:not(.no-records-found)").each(function(){var b=a(this),h=b.find(f.options.cardView?".card-view":"td").eq(e),i=g.indexOf(" "),j=g.substring(0,i),k=g.substring(i+1),l=c[g];h.find(k).off(j).on(j,function(a){var c=b.data("index"),e=f.data[c],g=e[d];l.apply(this,[a,g,e,c])})})}}),this.updateSelected(),this.resetView(),this.trigger("post-body")},n.prototype.initServer=function(b,c){var d,e=this,f={},g={pageSize:this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,pageNumber:this.options.pageNumber,searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};(this.options.url||this.options.ajax)&&("limit"===this.options.queryParamsType&&(g={search:g.searchText,sort:g.sortName,order:g.sortOrder},this.options.pagination&&(g.limit=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,g.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1))),a.isEmptyObject(this.filterColumnsPartial)||(g.filter=JSON.stringify(this.filterColumnsPartial,null)),f=h(this.options,this.options.queryParams,[g],f),a.extend(f,c||{}),f!==!1&&(b||this.$tableLoading.show(),d=a.extend({},h(null,this.options.ajaxOptions),{type:this.options.method,url:this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(f):f,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(a){a=h(e.options,e.options.responseHandler,[a],a),e.load(a),e.trigger("load-success",a)},error:function(a){e.trigger("load-error",a.status,a)},complete:function(){b||e.$tableLoading.hide()}}),this.options.ajax?h(this,this.options.ajax,[d],null):a.ajax(d)));
+
+},n.prototype.initSearchText=function(){if(this.options.search&&""!==this.options.searchText){var a=this.$toolbar.find(".search input");a.val(this.options.searchText),this.onSearch({currentTarget:a})}},n.prototype.getCaret=function(){var b=this;a.each(this.$header.find("th"),function(c,d){a(d).find(".sortable").removeClass("desc asc").addClass(a(d).data("field")===b.options.sortName?b.options.sortOrder:"both")})},n.prototype.updateSelected=function(){var b=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",b),this.$selectItem.each(function(){a(this).closest("tr")[a(this).prop("checked")?"addClass":"removeClass"]("selected")})},n.prototype.updateRows=function(){var b=this;this.$selectItem.each(function(){b.data[a(this).data("index")][b.header.stateField]=a(this).prop("checked")})},n.prototype.resetRows=function(){var b=this;a.each(this.data,function(a,c){b.$selectAll.prop("checked",!1),b.$selectItem.prop("checked",!1),b.header.stateField&&(c[b.header.stateField]=!1)})},n.prototype.trigger=function(b){var c=Array.prototype.slice.call(arguments,1);b+=".bs.table",this.options[n.EVENTS[b]].apply(this.options,c),this.$el.trigger(a.Event(b),c),this.options.onAll(b,c),this.$el.trigger(a.Event("all.bs.table"),[b,c])},n.prototype.resetHeader=function(){clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(a.proxy(this.fitHeader,this),this.$el.is(":hidden")?100:0)},n.prototype.fitHeader=function(){var b,d,e,f,h=this;if(h.$el.is(":hidden"))return void(h.timeoutId_=setTimeout(a.proxy(h.fitHeader,h),100));if(b=this.$tableBody.get(0),d=b.scrollWidth>b.clientWidth&&b.scrollHeight>b.clientHeight+this.$header.outerHeight()?g():0,this.$el.css("margin-top",-this.$header.outerHeight()),e=a(":focus"),e.length>0){var i=e.parents("th");if(i.length>0){var j=i.attr("data-field");if(void 0!==j){var k=this.$header.find("[data-field='"+j+"']");k.length>0&&k.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css({"margin-right":d}).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),f=a(".focus-temp:visible:eq(0)"),f.length>0&&(f.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each(function(){h.$header_.find(c('th[data-field="%s"]',a(this).data("field"))).data(a(this).data())});var l=this.getVisibleFields();this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(b){var d=a(this),e=b;h.options.detailView&&!h.options.cardView&&(0===b&&h.$header_.find("th.detail").find(".fht-cell").width(d.innerWidth()),e=b-1),h.$header_.find(c('th[data-field="%s"]',l[e])).find(".fht-cell").width(d.innerWidth())}),this.$tableBody.off("scroll").on("scroll",function(){h.$tableHeader.scrollLeft(a(this).scrollLeft()),h.options.showFooter&&!h.options.cardView&&h.$tableFooter.scrollLeft(a(this).scrollLeft())}),h.trigger("post-header")},n.prototype.resetFooter=function(){var b=this,d=b.getData(),e=[];this.options.showFooter&&!this.options.cardView&&(!this.options.cardView&&this.options.detailView&&e.push('<td><div class="th-inner">&nbsp;</div><div class="fht-cell"></div></td>'),a.each(this.columns,function(a,f){var g="",i="",j=c(' class="%s"',f["class"]);f.visible&&(!b.options.cardView||f.cardVisible)&&(g=c("text-align: %s; ",f.falign?f.falign:f.align),i=c("vertical-align: %s; ",f.valign),e.push("<td",j,c(' style="%s"',g+i),">"),e.push('<div class="th-inner">'),e.push(h(f,f.footerFormatter,[d],"&nbsp;")||"&nbsp;"),e.push("</div>"),e.push('<div class="fht-cell"></div>'),e.push("</div>"),e.push("</td>"))}),this.$tableFooter.find("tr").html(e.join("")),clearTimeout(this.timeoutFooter_),this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),this.$el.is(":hidden")?100:0))},n.prototype.fitFooter=function(){var b,c,d;return clearTimeout(this.timeoutFooter_),this.$el.is(":hidden")?void(this.timeoutFooter_=setTimeout(a.proxy(this.fitFooter,this),100)):(c=this.$el.css("width"),d=c>this.$tableBody.width()?g():0,this.$tableFooter.css({"margin-right":d}).find("table").css("width",c).attr("class",this.$el.attr("class")),b=this.$tableFooter.find("td"),void this.$body.find(">tr:first-child:not(.no-records-found) > *").each(function(c){var d=a(this);b.eq(c).find(".fht-cell").width(d.innerWidth())}))},n.prototype.toggleColumn=function(a,b,d){if(-1!==a&&(this.columns[a].visible=b,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var e=this.$toolbar.find(".keep-open input").prop("disabled",!1);d&&e.filter(c('[value="%s"]',a)).prop("checked",b),e.filter(":checked").length<=this.options.minimumCountColumns&&e.filter(":checked").prop("disabled",!0)}},n.prototype.toggleRow=function(a,b,d){-1!==a&&this.$body.find("undefined"!=typeof a?c('tr[data-index="%s"]',a):c('tr[data-uniqueid="%s"]',b))[d?"show":"hide"]()},n.prototype.getVisibleFields=function(){var b=this,c=[];return a.each(this.header.fields,function(a,d){var f=b.columns[e(b.columns,d)];f.visible&&c.push(d)}),c},n.prototype.resetView=function(a){var b=0;if(a&&a.height&&(this.options.height=a.height),this.$selectAll.prop("checked",this.$selectItem.length>0&&this.$selectItem.length===this.$selectItem.filter(":checked").length),this.options.height){var c=k(this.$toolbar),d=k(this.$pagination),e=this.options.height-c-d;this.$tableContainer.css("height",e+"px")}return this.options.cardView?(this.$el.css("margin-top","0"),void this.$tableContainer.css("padding-bottom","0")):(this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),b+=this.$header.outerHeight()):(this.$tableHeader.hide(),this.trigger("post-header")),this.options.showFooter&&(this.resetFooter(),this.options.height&&(b+=this.$tableFooter.outerHeight()+1)),this.getCaret(),this.$tableContainer.css("padding-bottom",b+"px"),void this.trigger("reset-view"))},n.prototype.getData=function(b){return!this.searchText&&a.isEmptyObject(this.filterColumns)&&a.isEmptyObject(this.filterColumnsPartial)?b?this.options.data.slice(this.pageFrom-1,this.pageTo):this.options.data:b?this.data.slice(this.pageFrom-1,this.pageTo):this.data},n.prototype.load=function(b){var c=!1;"server"===this.options.sidePagination?(this.options.totalRows=b.total,c=b.fixedScroll,b=b[this.options.dataField]):a.isArray(b)||(c=b.fixedScroll,b=b.data),this.initData(b),this.initSearch(),this.initPagination(),this.initBody(c)},n.prototype.append=function(a){this.initData(a,"append"),this.initSearch(),this.initPagination(),this.initBody(!0)},n.prototype.prepend=function(a){this.initData(a,"prepend"),this.initSearch(),this.initPagination(),this.initBody(!0)},n.prototype.remove=function(b){var c,d,e=this.options.data.length;if(b.hasOwnProperty("field")&&b.hasOwnProperty("values")){for(c=e-1;c>=0;c--)d=this.options.data[c],d.hasOwnProperty(b.field)&&-1!==a.inArray(d[b.field],b.values)&&this.options.data.splice(c,1);e!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initBody(!0))}},n.prototype.removeAll=function(){this.options.data.length>0&&(this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))},n.prototype.getRowByUniqueId=function(a){var b,c,d,e=this.options.uniqueId,f=this.options.data.length,g=null;for(b=f-1;b>=0;b--){if(c=this.options.data[b],c.hasOwnProperty(e))d=c[e];else{if(!c._data.hasOwnProperty(e))continue;d=c._data[e]}if("string"==typeof d?a=a.toString():"number"==typeof d&&(Number(d)===d&&d%1===0?a=parseInt(a):d===Number(d)&&0!==d&&(a=parseFloat(a))),d===a){g=c;break}}return g},n.prototype.removeByUniqueId=function(a){var b=this.options.data.length,c=this.getRowByUniqueId(a);c&&this.options.data.splice(this.options.data.indexOf(c),1),b!==this.options.data.length&&(this.initSearch(),this.initPagination(),this.initBody(!0))},n.prototype.updateByUniqueId=function(b){var c;b.hasOwnProperty("id")&&b.hasOwnProperty("row")&&(c=a.inArray(this.getRowByUniqueId(b.id),this.options.data),-1!==c&&(a.extend(this.data[c],b.row),this.initSort(),this.initBody(!0)))},n.prototype.insertRow=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("row")&&(this.data.splice(a.index,0,a.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))},n.prototype.updateRow=function(b){b.hasOwnProperty("index")&&b.hasOwnProperty("row")&&(a.extend(this.data[b.index],b.row),this.initSort(),this.initBody(!0))},n.prototype.showRow=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("uniqueId")&&this.toggleRow(a.index,a.uniqueId,!0)},n.prototype.hideRow=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("uniqueId")&&this.toggleRow(a.index,a.uniqueId,!1)},n.prototype.getRowsHidden=function(b){var c=a(this.$body[0]).children().filter(":hidden"),d=0;if(b)for(;d<c.length;d++)a(c[d]).show();return c},n.prototype.mergeCells=function(b){var c,d,e,f=b.index,g=a.inArray(b.field,this.getVisibleFields()),h=b.rowspan||1,i=b.colspan||1,j=this.$body.find(">tr");if(this.options.detailView&&!this.options.cardView&&(g+=1),e=j.eq(f).find(">td").eq(g),!(0>f||0>g||f>=this.data.length)){for(c=f;f+h>c;c++)for(d=g;g+i>d;d++)j.eq(c).find(">td").eq(d).hide();e.attr("rowspan",h).attr("colspan",i).show()}},n.prototype.updateCell=function(a){a.hasOwnProperty("index")&&a.hasOwnProperty("field")&&a.hasOwnProperty("value")&&(this.data[a.index][a.field]=a.value,this.initSort(),this.initBody(!0))},n.prototype.getOptions=function(){return this.options},n.prototype.getSelections=function(){var b=this;return a.grep(this.data,function(a){return a[b.header.stateField]})},n.prototype.getAllSelections=function(){var b=this;return a.grep(this.options.data,function(a){return a[b.header.stateField]})},n.prototype.checkAll=function(){this.checkAll_(!0)},n.prototype.uncheckAll=function(){this.checkAll_(!1)},n.prototype.checkAll_=function(a){var b;a||(b=this.getSelections()),this.$selectAll.add(this.$selectAll_).prop("checked",a),this.$selectItem.filter(":enabled").prop("checked",a),this.updateRows(),a&&(b=this.getSelections()),this.trigger(a?"check-all":"uncheck-all",b)},n.prototype.check=function(a){this.check_(!0,a)},n.prototype.uncheck=function(a){this.check_(!1,a)},n.prototype.check_=function(a,b){var d=this.$selectItem.filter(c('[data-index="%s"]',b)).prop("checked",a);this.data[b][this.header.stateField]=a,this.updateSelected(),this.trigger(a?"check":"uncheck",this.data[b],d)},n.prototype.checkBy=function(a){this.checkBy_(!0,a)},n.prototype.uncheckBy=function(a){this.checkBy_(!1,a)},n.prototype.checkBy_=function(b,d){if(d.hasOwnProperty("field")&&d.hasOwnProperty("values")){var e=this,f=[];a.each(this.options.data,function(g,h){if(!h.hasOwnProperty(d.field))return!1;if(-1!==a.inArray(h[d.field],d.values)){var i=e.$selectItem.filter(":enabled").filter(c('[data-index="%s"]',g)).prop("checked",b);h[e.header.stateField]=b,f.push(h),e.trigger(b?"check":"uncheck",h,i)}}),this.updateSelected(),this.trigger(b?"check-some":"uncheck-some",f)}},n.prototype.destroy=function(){this.$el.insertBefore(this.$container),a(this.options.toolbar).insertBefore(this.$el),this.$container.next().remove(),this.$container.remove(),this.$el.html(this.$el_.html()).css("margin-top","0").attr("class",this.$el_.attr("class")||"")},n.prototype.showLoading=function(){this.$tableLoading.show()},n.prototype.hideLoading=function(){this.$tableLoading.hide()},n.prototype.togglePagination=function(){this.options.pagination=!this.options.pagination;var a=this.$toolbar.find('button[name="paginationSwitch"] i');this.options.pagination?a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchDown):a.attr("class",this.options.iconsPrefix+" "+this.options.icons.paginationSwitchUp),this.updatePagination()},n.prototype.refresh=function(a){a&&a.url&&(this.options.url=a.url,this.options.pageNumber=1),this.initServer(a&&a.silent,a&&a.query)},n.prototype.resetWidth=function(){this.options.showHeader&&this.options.height&&this.fitHeader(),this.options.showFooter&&this.fitFooter()},n.prototype.showColumn=function(a){this.toggleColumn(e(this.columns,a),!0,!0)},n.prototype.hideColumn=function(a){this.toggleColumn(e(this.columns,a),!1,!0)},n.prototype.getHiddenColumns=function(){return a.grep(this.columns,function(a){return!a.visible})},n.prototype.filterBy=function(b){this.filterColumns=a.isEmptyObject(b)?{}:b,this.options.pageNumber=1,this.initSearch(),this.updatePagination()},n.prototype.scrollTo=function(a){return"string"==typeof a&&(a="bottom"===a?this.$tableBody[0].scrollHeight:0),"number"==typeof a&&this.$tableBody.scrollTop(a),"undefined"==typeof a?this.$tableBody.scrollTop():void 0},n.prototype.getScrollPosition=function(){return this.scrollTo()},n.prototype.selectPage=function(a){a>0&&a<=this.options.totalPages&&(this.options.pageNumber=a,this.updatePagination())},n.prototype.prevPage=function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())},n.prototype.nextPage=function(){this.options.pageNumber<this.options.totalPages&&(this.options.pageNumber++,this.updatePagination())},n.prototype.toggleView=function(){this.options.cardView=!this.options.cardView,this.initHeader(),this.initBody(),this.trigger("toggle",this.options.cardView)},n.prototype.refreshOptions=function(b){i(this.options,b,!1)||(this.options=a.extend(this.options,b),this.trigger("refresh-options",this.options),this.destroy(),this.init())},n.prototype.resetSearch=function(a){var b=this.$toolbar.find(".search input");b.val(a||""),this.onSearch({currentTarget:b})},n.prototype.expandRow_=function(a,b){var d=this.$body.find(c('> tr[data-index="%s"]',b));d.next().is("tr.detail-view")===(a?!1:!0)&&d.find("> td > .detail-icon").click()},n.prototype.expandRow=function(a){this.expandRow_(!0,a)},n.prototype.collapseRow=function(a){this.expandRow_(!1,a)},n.prototype.expandAllRows=function(b){if(b){var d=this.$body.find(c('> tr[data-index="%s"]',0)),e=this,f=null,g=!1,h=-1;if(d.next().is("tr.detail-view")?d.next().next().is("tr.detail-view")||(d.next().find(".detail-icon").click(),g=!0):(d.find("> td > .detail-icon").click(),g=!0),g)try{h=setInterval(function(){f=e.$body.find("tr.detail-view").last().find(".detail-icon"),f.length>0?f.click():clearInterval(h)},1)}catch(i){clearInterval(h)}}else for(var j=this.$body.children(),k=0;k<j.length;k++)this.expandRow_(!0,a(j[k]).data("index"))},n.prototype.collapseAllRows=function(b){if(b)this.expandRow_(!1,0);else for(var c=this.$body.children(),d=0;d<c.length;d++)this.expandRow_(!1,a(c[d]).data("index"))};var o=["getOptions","getSelections","getAllSelections","getData","load","append","prepend","remove","removeAll","insertRow","updateRow","updateCell","updateByUniqueId","removeByUniqueId","getRowByUniqueId","showRow","hideRow","getRowsHidden","mergeCells","checkAll","uncheckAll","check","uncheck","checkBy","uncheckBy","refresh","resetView","resetWidth","destroy","showLoading","hideLoading","showColumn","hideColumn","getHiddenColumns","filterBy","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","togglePagination","toggleView","refreshOptions","resetSearch","expandRow","collapseRow","expandAllRows","collapseAllRows"];a.fn.bootstrapTable=function(b){var c,d=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=a(this),f=e.data("bootstrap.table"),g=a.extend({},n.DEFAULTS,e.data(),"object"==typeof b&&b);if("string"==typeof b){if(a.inArray(b,o)<0)throw new Error("Unknown method: "+b);if(!f)return;c=f[b].apply(f,d),"destroy"===b&&e.removeData("bootstrap.table")}f||e.data("bootstrap.table",f=new n(this,g))}),"undefined"==typeof c?this:c},a.fn.bootstrapTable.Constructor=n,a.fn.bootstrapTable.defaults=n.DEFAULTS,a.fn.bootstrapTable.columnDefaults=n.COLUMN_DEFAULTS,a.fn.bootstrapTable.locales=n.LOCALES,a.fn.bootstrapTable.methods=o,a.fn.bootstrapTable.utils={sprintf:c,getFieldIndex:e,compareObjects:i,calculateObjectValue:h},a(function(){a('[data-toggle="table"]').bootstrapTable()})}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js b/js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js
new file mode 100644
index 0000000..dc7b4f0
--- /dev/null
+++ b/js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js
@@ -0,0 +1,182 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    var diacriticsMap = {};
+    var defaultAccentsDiacritics = [
+        {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
+        {'base':'AA','letters':'\uA732'},
+        {'base':'AE','letters':'\u00C6\u01FC\u01E2'},
+        {'base':'AO','letters':'\uA734'},
+        {'base':'AU','letters':'\uA736'},
+        {'base':'AV','letters':'\uA738\uA73A'},
+        {'base':'AY','letters':'\uA73C'},
+        {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
+        {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
+        {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779'},
+        {'base':'DZ','letters':'\u01F1\u01C4'},
+        {'base':'Dz','letters':'\u01F2\u01C5'},
+        {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
+        {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
+        {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
+        {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
+        {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
+        {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
+        {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
+        {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
+        {'base':'LJ','letters':'\u01C7'},
+        {'base':'Lj','letters':'\u01C8'},
+        {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
+        {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
+        {'base':'NJ','letters':'\u01CA'},
+        {'base':'Nj','letters':'\u01CB'},
+        {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
+        {'base':'OI','letters':'\u01A2'},
+        {'base':'OO','letters':'\uA74E'},
+        {'base':'OU','letters':'\u0222'},
+        {'base':'OE','letters':'\u008C\u0152'},
+        {'base':'oe','letters':'\u009C\u0153'},
+        {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
+        {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
+        {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
+        {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
+        {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
+        {'base':'TZ','letters':'\uA728'},
+        {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
+        {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
+        {'base':'VY','letters':'\uA760'},
+        {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
+        {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
+        {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
+        {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
+        {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
+        {'base':'aa','letters':'\uA733'},
+        {'base':'ae','letters':'\u00E6\u01FD\u01E3'},
+        {'base':'ao','letters':'\uA735'},
+        {'base':'au','letters':'\uA737'},
+        {'base':'av','letters':'\uA739\uA73B'},
+        {'base':'ay','letters':'\uA73D'},
+        {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
+        {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
+        {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
+        {'base':'dz','letters':'\u01F3\u01C6'},
+        {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
+        {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
+        {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
+        {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
+        {'base':'hv','letters':'\u0195'},
+        {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
+        {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
+        {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
+        {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
+        {'base':'lj','letters':'\u01C9'},
+        {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
+        {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
+        {'base':'nj','letters':'\u01CC'},
+        {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
+        {'base':'oi','letters':'\u01A3'},
+        {'base':'ou','letters':'\u0223'},
+        {'base':'oo','letters':'\uA74F'},
+        {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
+        {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
+        {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
+        {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
+        {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
+        {'base':'tz','letters':'\uA729'},
+        {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
+        {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
+        {'base':'vy','letters':'\uA761'},
+        {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
+        {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
+        {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
+        {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
+    ];
+
+    var initNeutraliser = function () {
+        for (var i=0; i < defaultAccentsDiacritics.length; i++){
+            var letters = defaultAccentsDiacritics[i].letters;
+            for (var j=0; j < letters.length ; j++){
+                diacriticsMap[letters[j]] = defaultAccentsDiacritics[i].base;
+            }
+        }
+    };
+
+    var removeDiacritics = function (str) {
+        return str.replace(/[^\u0000-\u007E]/g, function(a){
+            return diacriticsMap[a] || a;
+        });
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        searchAccentNeutralise: false
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init,
+        _initSearch = BootstrapTable.prototype.initSearch;
+
+    BootstrapTable.prototype.init = function () {
+        if (this.options.searchAccentNeutralise) {
+            initNeutraliser();
+        }
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        var that = this;
+
+        if (this.options.sidePagination !== 'server') {
+            var s = this.searchText && this.searchText.toLowerCase();
+            var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;
+
+            // Check filter
+            this.data = f ? $.grep(this.options.data, function (item, i) {
+                for (var key in f) {
+                    if (item[key] !== f[key]) {
+                        return false;
+                    }
+                }
+                return true;
+            }) : this.options.data;
+
+            this.data = s ? $.grep(this.data, function (item, i) {
+                for (var key in item) {
+                    key = $.isNumeric(key) ? parseInt(key, 10) : key;
+                    var value = item[key],
+                        column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)],
+                        j = $.inArray(key, that.header.fields);
+
+                    if (column && column.searchFormatter) {
+                        value = $.fn.bootstrapTable.utils.calculateObjectValue(column,
+                            that.header.formatters[j], [value, item, i], value);
+                    }
+
+                    var index = $.inArray(key, that.header.fields);
+                    if (index !== -1 && that.header.searchables[index] && (typeof value === 'string' || typeof value === 'number')) {
+                        if (that.options.searchAccentNeutralise) {
+                            value = removeDiacritics(value);
+                            s = removeDiacritics(s);
+                        }
+                        if (that.options.strictSearch) {
+                            if ((value + '').toLowerCase() === s) {
+                                return true;
+                            }
+                        } else {
+                            if ((value + '').toLowerCase().indexOf(s) !== -1) {
+                                return true;
+                            }
+                        }
+                    }
+                }
+                return false;
+            }) : this.data;
+        }
+    };
+
+}(jQuery);
diff --git a/js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.min.js b/js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.min.js
new file mode 100644
index 0000000..d7aa598
--- /dev/null
+++ b/js/table/extensions/accent-neutralise/bootstrap-table-accent-neutralise.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b={},c=[{base:"A",letters:"AⒶAÀÁÂẦẤẪẨÃĀĂẰẮẴẲȦǠÄǞẢÅǺǍȀȂẠẬẶḀĄȺⱯ"},{base:"AA",letters:"Ꜳ"},{base:"AE",letters:"ÆǼǢ"},{base:"AO",letters:"Ꜵ"},{base:"AU",letters:"Ꜷ"},{base:"AV",letters:"ꜸꜺ"},{base:"AY",letters:"Ꜽ"},{base:"B",letters:"BⒷBḂḄḆɃƂƁ"},{base:"C",letters:"CⒸCĆĈĊČÇḈƇȻꜾ"},{base:"D",letters:"DⒹDḊĎḌḐḒḎĐƋƊƉꝹ"},{base:"DZ",letters:"DZDŽ"},{base:"Dz",letters:"DzDž"},{base:"E",letters:"EⒺEÈÉÊỀẾỄỂẼĒḔḖĔĖËẺĚȄȆẸỆȨḜĘḘḚƐƎ"},{base:"F",letters:"FⒻFḞƑꝻ"},{base:"G",letters:"GⒼGǴĜḠĞĠǦĢǤƓꞠꝽꝾ"},{base:"H",letters:"HⒽHĤḢḦȞḤḨḪĦⱧⱵꞍ"},{base:"I",letters:"IⒾIÌÍÎĨĪĬİÏḮỈǏȈȊỊĮḬƗ"},{base:"J",letters:"JⒿJĴɈ"},{base:"K",letters:"KⓀKḰǨḲĶḴƘⱩꝀꝂꝄꞢ"},{base:"L",letters:"LⓁLĿĹĽḶḸĻḼḺŁȽⱢⱠꝈꝆꞀ"},{base:"LJ",letters:"LJ"},{base:"Lj",letters:"Lj"},{base:"M",letters:"MⓂMḾṀṂⱮƜ"},{base:"N",letters:"NⓃNǸŃÑṄŇṆŅṊṈȠƝꞐꞤ"},{base:"NJ",letters:"NJ"},{base:"Nj",letters:"Nj"},{base:"O",letters:"OⓄOÒÓÔỒỐỖỔÕṌȬṎŌṐṒŎȮȰÖȪỎŐǑȌȎƠỜỚỠỞỢỌỘǪǬØǾƆƟꝊꝌ"},{base:"OI",letters:"Ƣ"},{base:"OO",letters:"Ꝏ"},{base:"OU",letters:"Ȣ"},{base:"OE",letters:"ŒŒ"},{base:"oe",letters:"œœ"},{base:"P",letters:"PⓅPṔṖƤⱣꝐꝒꝔ"},{base:"Q",letters:"QⓆQꝖꝘɊ"},{base:"R",letters:"RⓇRŔṘŘȐȒṚṜŖṞɌⱤꝚꞦꞂ"},{base:"S",letters:"SⓈSẞŚṤŜṠŠṦṢṨȘŞⱾꞨꞄ"},{base:"T",letters:"TⓉTṪŤṬȚŢṰṮŦƬƮȾꞆ"},{base:"TZ",letters:"Ꜩ"},{base:"U",letters:"UⓊUÙÚÛŨṸŪṺŬÜǛǗǕǙỦŮŰǓȔȖƯỪỨỮỬỰỤṲŲṶṴɄ"},{base:"V",letters:"VⓋVṼṾƲꝞɅ"},{base:"VY",letters:"Ꝡ"},{base:"W",letters:"WⓌWẀẂŴẆẄẈⱲ"},{base:"X",letters:"XⓍXẊẌ"},{base:"Y",letters:"YⓎYỲÝŶỸȲẎŸỶỴƳɎỾ"},{base:"Z",letters:"ZⓏZŹẐŻŽẒẔƵȤⱿⱫꝢ"},{base:"a",letters:"aⓐaẚàáâầấẫẩãāăằắẵẳȧǡäǟảåǻǎȁȃạậặḁąⱥɐ"},{base:"aa",letters:"ꜳ"},{base:"ae",letters:"æǽǣ"},{base:"ao",letters:"ꜵ"},{base:"au",letters:"ꜷ"},{base:"av",letters:"ꜹꜻ"},{base:"ay",letters:"ꜽ"},{base:"b",letters:"bⓑbḃḅḇƀƃɓ"},{base:"c",letters:"cⓒcćĉċčçḉƈȼꜿↄ"},{base:"d",letters:"dⓓdḋďḍḑḓḏđƌɖɗꝺ"},{base:"dz",letters:"dzdž"},{base:"e",letters:"eⓔeèéêềếễểẽēḕḗĕėëẻěȅȇẹệȩḝęḙḛɇɛǝ"},{base:"f",letters:"fⓕfḟƒꝼ"},{base:"g",letters:"gⓖgǵĝḡğġǧģǥɠꞡᵹꝿ"},{base:"h",letters:"hⓗhĥḣḧȟḥḩḫẖħⱨⱶɥ"},{base:"hv",letters:"ƕ"},{base:"i",letters:"iⓘiìíîĩīĭïḯỉǐȉȋịįḭɨı"},{base:"j",letters:"jⓙjĵǰɉ"},{base:"k",letters:"kⓚkḱǩḳķḵƙⱪꝁꝃꝅꞣ"},{base:"l",letters:"lⓛlŀĺľḷḹļḽḻſłƚɫⱡꝉꞁꝇ"},{base:"lj",letters:"lj"},{base:"m",letters:"mⓜmḿṁṃɱɯ"},{base:"n",letters:"nⓝnǹńñṅňṇņṋṉƞɲʼnꞑꞥ"},{base:"nj",letters:"nj"},{base:"o",letters:"oⓞoòóôồốỗổõṍȭṏōṑṓŏȯȱöȫỏőǒȍȏơờớỡởợọộǫǭøǿɔꝋꝍɵ"},{base:"oi",letters:"ƣ"},{base:"ou",letters:"ȣ"},{base:"oo",letters:"ꝏ"},{base:"p",letters:"pⓟpṕṗƥᵽꝑꝓꝕ"},{base:"q",letters:"qⓠqɋꝗꝙ"},{base:"r",letters:"rⓡrŕṙřȑȓṛṝŗṟɍɽꝛꞧꞃ"},{base:"s",letters:"sⓢsßśṥŝṡšṧṣṩșşȿꞩꞅẛ"},{base:"t",letters:"tⓣtṫẗťṭțţṱṯŧƭʈⱦꞇ"},{base:"tz",letters:"ꜩ"},{base:"u",letters:"uⓤuùúûũṹūṻŭüǜǘǖǚủůűǔȕȗưừứữửựụṳųṷṵʉ"},{base:"v",letters:"vⓥvṽṿʋꝟʌ"},{base:"vy",letters:"ꝡ"},{base:"w",letters:"wⓦwẁẃŵẇẅẘẉⱳ"},{base:"x",letters:"xⓧxẋẍ"},{base:"y",letters:"yⓨyỳýŷỹȳẏÿỷẙỵƴɏỿ"},{base:"z",letters:"zⓩzźẑżžẓẕƶȥɀⱬꝣ"}],d=function(){for(var a=0;a<c.length;a++)for(var d=c[a].letters,e=0;e<d.length;e++)b[d[e]]=c[a].base},e=function(a){return a.replace(/[^\u0000-\u007E]/g,function(a){return b[a]||a})};a.extend(a.fn.bootstrapTable.defaults,{searchAccentNeutralise:!1});{var f=a.fn.bootstrapTable.Constructor,g=f.prototype.init;f.prototype.initSearch}f.prototype.init=function(){this.options.searchAccentNeutralise&&d(),g.apply(this,Array.prototype.slice.apply(arguments))},f.prototype.initSearch=function(){var b=this;if("server"!==this.options.sidePagination){var c=this.searchText&&this.searchText.toLowerCase(),d=a.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.data=d?a.grep(this.options.data,function(a){for(var b in d)if(a[b]!==d[b])return!1;return!0}):this.options.data,this.data=c?a.grep(this.data,function(d,f){for(var g in d){g=a.isNumeric(g)?parseInt(g,10):g;var h=d[g],i=b.columns[a.fn.bootstrapTable.utils.getFieldIndex(b.columns,g)],j=a.inArray(g,b.header.fields);i&&i.searchFormatter&&(h=a.fn.bootstrapTable.utils.calculateObjectValue(i,b.header.formatters[j],[h,d,f],h));var k=a.inArray(g,b.header.fields);if(-1!==k&&b.header.searchables[k]&&("string"==typeof h||"number"==typeof h))if(b.options.searchAccentNeutralise&&(h=e(h),c=e(c)),b.options.strictSearch){if((h+"").toLowerCase()===c)return!0}else if(-1!==(h+"").toLowerCase().indexOf(c))return!0}return!1}):this.data}}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/angular/bootstrap-table-angular.js b/js/table/extensions/angular/bootstrap-table-angular.js
new file mode 100644
index 0000000..84c4ed3
--- /dev/null
+++ b/js/table/extensions/angular/bootstrap-table-angular.js
@@ -0,0 +1,105 @@
+// JavaScript source code
+(function () {
+  if (typeof angular === 'undefined') {
+    return;
+  }
+  angular.module('bsTable', []).directive('bsTableControl', function () {
+    var CONTAINER_SELECTOR = '.bootstrap-table';
+    var SCROLLABLE_SELECTOR = '.fixed-table-body';
+    var SEARCH_SELECTOR = '.search input';
+    var bsTables = {};
+    function getBsTable (el) {
+      var result;
+      $.each(bsTables, function (id, bsTable) {
+        if (!bsTable.$el.closest(CONTAINER_SELECTOR).has(el).length) return;
+        result = bsTable;
+        return true;
+      });
+      return result;
+    }
+
+    $(window).resize(function () {
+      $.each(bsTables, function (id, bsTable) {
+        bsTable.$el.bootstrapTable('resetView');
+      });
+    });
+    function onScroll () {
+      var bsTable = this;
+      var state = bsTable.$s.bsTableControl.state;
+      bsTable.$s.$applyAsync(function () {
+        state.scroll = bsTable.$el.bootstrapTable('getScrollPosition');
+      });
+    }
+    $(document)
+      .on('post-header.bs.table', CONTAINER_SELECTOR+' table', function (evt) { // bootstrap-table calls .off('scroll') in initHeader so reattach here
+        var bsTable = getBsTable(evt.target);
+        if (!bsTable) return;
+        bsTable.$el
+          .closest(CONTAINER_SELECTOR)
+          .find(SCROLLABLE_SELECTOR)
+          .on('scroll', onScroll.bind(bsTable));
+      })
+      .on('sort.bs.table', CONTAINER_SELECTOR+' table', function (evt, sortName, sortOrder) {
+        var bsTable = getBsTable(evt.target);
+        if (!bsTable) return;
+        var state = bsTable.$s.bsTableControl.state;
+        bsTable.$s.$applyAsync(function () {
+          state.sortName = sortName;
+          state.sortOrder = sortOrder;
+        });
+      })
+      .on('page-change.bs.table', CONTAINER_SELECTOR+' table', function (evt, pageNumber, pageSize) {
+        var bsTable = getBsTable(evt.target);
+        if (!bsTable) return;
+        var state = bsTable.$s.bsTableControl.state;
+        bsTable.$s.$applyAsync(function () {
+          state.pageNumber = pageNumber;
+          state.pageSize = pageSize;
+        });
+      })
+      .on('search.bs.table', CONTAINER_SELECTOR+' table', function (evt, searchText) {
+        var bsTable = getBsTable(evt.target);
+        if (!bsTable) return;
+        var state = bsTable.$s.bsTableControl.state;
+        bsTable.$s.$applyAsync(function () {
+          state.searchText = searchText;
+        });
+      })
+      .on('focus blur', CONTAINER_SELECTOR+' '+SEARCH_SELECTOR, function (evt) {
+        var bsTable = getBsTable(evt.target);
+        if (!bsTable) return;
+        var state = bsTable.$s.bsTableControl.state;
+        bsTable.$s.$applyAsync(function () {
+          state.searchHasFocus = $(evt.target).is(':focus');
+        });
+      });
+
+    return {
+      restrict: 'EA',
+      scope: {bsTableControl: '='},
+      link: function ($s, $el) {
+        var bsTable = bsTables[$s.$id] = {$s: $s, $el: $el};
+        $s.instantiated = false;
+        $s.$watch('bsTableControl.options', function (options) {
+          if (!options) options = $s.bsTableControl.options = {};
+          var state = $s.bsTableControl.state || {};
+
+          if ($s.instantiated) $el.bootstrapTable('destroy');
+          $el.bootstrapTable(angular.extend(angular.copy(options), state));
+          $s.instantiated = true;
+
+          // Update the UI for state that isn't settable via options
+          if ('scroll' in state) $el.bootstrapTable('scrollTo', state.scroll);
+          if ('searchHasFocus' in state) $el.closest(CONTAINER_SELECTOR).find(SEARCH_SELECTOR).focus(); // $el gets detached so have to recompute whole chain
+        }, true);
+        $s.$watch('bsTableControl.state', function (state) {
+          if (!state) state = $s.bsTableControl.state = {};
+          $el.trigger('directive-updated.bs.table', [state]);
+        }, true);
+        $s.$on('$destroy', function () {
+          delete bsTables[$s.$id];
+        });
+      }
+    };
+  })
+})();
diff --git a/js/table/extensions/angular/bootstrap-table-angular.min.js b/js/table/extensions/angular/bootstrap-table-angular.min.js
new file mode 100644
index 0000000..43c3d7d
--- /dev/null
+++ b/js/table/extensions/angular/bootstrap-table-angular.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(){"undefined"!=typeof angular&&angular.module("bsTable",[]).directive("bsTableControl",function(){function a(a){var b;return $.each(f,function(d,e){return e.$el.closest(c).has(a).length?(b=e,!0):void 0}),b}function b(){var a=this,b=a.$s.bsTableControl.state;a.$s.$applyAsync(function(){b.scroll=a.$el.bootstrapTable("getScrollPosition")})}var c=".bootstrap-table",d=".fixed-table-body",e=".search input",f={};return $(window).resize(function(){$.each(f,function(a,b){b.$el.bootstrapTable("resetView")})}),$(document).on("post-header.bs.table",c+" table",function(e){var f=a(e.target);f&&f.$el.closest(c).find(d).on("scroll",b.bind(f))}).on("sort.bs.table",c+" table",function(b,c,d){var e=a(b.target);if(e){var f=e.$s.bsTableControl.state;e.$s.$applyAsync(function(){f.sortName=c,f.sortOrder=d})}}).on("page-change.bs.table",c+" table",function(b,c,d){var e=a(b.target);if(e){var f=e.$s.bsTableControl.state;e.$s.$applyAsync(function(){f.pageNumber=c,f.pageSize=d})}}).on("search.bs.table",c+" table",function(b,c){var d=a(b.target);if(d){var e=d.$s.bsTableControl.state;d.$s.$applyAsync(function(){e.searchText=c})}}).on("focus blur",c+" "+e,function(b){var c=a(b.target);if(c){var d=c.$s.bsTableControl.state;c.$s.$applyAsync(function(){d.searchHasFocus=$(b.target).is(":focus")})}}),{restrict:"EA",scope:{bsTableControl:"="},link:function(a,b){f[a.$id]={$s:a,$el:b};a.instantiated=!1,a.$watch("bsTableControl.options",function(d){d||(d=a.bsTableControl.options={});var f=a.bsTableControl.state||{};a.instantiated&&b.bootstrapTable("destroy"),b.bootstrapTable(angular.extend(angular.copy(d),f)),a.instantiated=!0,"scroll"in f&&b.bootstrapTable("scrollTo",f.scroll),"searchHasFocus"in f&&b.closest(c).find(e).focus()},!0),a.$watch("bsTableControl.state",function(c){c||(c=a.bsTableControl.state={}),b.trigger("directive-updated.bs.table",[c])},!0),a.$on("$destroy",function(){delete f[a.$id]})}}})}();
\ No newline at end of file
diff --git a/js/table/extensions/cookie/bootstrap-table-cookie.js b/js/table/extensions/cookie/bootstrap-table-cookie.js
new file mode 100644
index 0000000..3192bde
--- /dev/null
+++ b/js/table/extensions/cookie/bootstrap-table-cookie.js
@@ -0,0 +1,331 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.2.0
+ *
+ * @update zhixin wen <wenzhixin2010@gmail.com>
+ */
+
+(function ($) {
+    'use strict';
+
+    var cookieIds = {
+        sortOrder: 'bs.table.sortOrder',
+        sortName: 'bs.table.sortName',
+        pageNumber: 'bs.table.pageNumber',
+        pageList: 'bs.table.pageList',
+        columns: 'bs.table.columns',
+        searchText: 'bs.table.searchText',
+        filterControl: 'bs.table.filterControl'
+    };
+
+    var getCurrentHeader = function (that) {
+        var header = that.$header;
+        if (that.options.height) {
+            header = that.$tableHeader;
+        }
+
+        return header;
+    };
+
+    var getCurrentSearchControls = function (that) {
+        var searchControls = 'select, input';
+        if (that.options.height) {
+            searchControls = 'table select, table input';
+        }
+
+        return searchControls;
+    };
+
+    var cookieEnabled = function () {
+        return !!(navigator.cookieEnabled);
+    };
+
+    var inArrayCookiesEnabled = function (cookieName, cookiesEnabled) {
+        var index = -1;
+
+        for (var i = 0; i < cookiesEnabled.length; i++) {
+            if (cookieName.toLowerCase() === cookiesEnabled[i].toLowerCase()) {
+                index = i;
+                break;
+            }
+        }
+
+        return index;
+    };
+
+    var setCookie = function (that, cookieName, cookieValue) {
+        if ((!that.options.cookie) || (!cookieEnabled()) || (that.options.cookieIdTable === '')) {
+            return;
+        }
+
+        if (inArrayCookiesEnabled(cookieName, that.options.cookiesEnabled) === -1) {
+            return;
+        }
+
+        cookieName = that.options.cookieIdTable + '.' + cookieName;
+        if (!cookieName || /^(?:expires|max\-age|path|domain|secure)$/i.test(cookieName)) {
+            return false;
+        }
+
+        document.cookie = encodeURIComponent(cookieName) + '=' + encodeURIComponent(cookieValue) + calculateExpiration(that.options.cookieExpire) + (that.options.cookieDomain ? '; domain=' + that.options.cookieDomain : '') + (that.options.cookiePath ? '; path=' + that.options.cookiePath : '') + (that.cookieSecure ? '; secure' : '');
+        return true;
+    };
+
+    var getCookie = function (that, tableName, cookieName) {
+        if (!cookieName) {
+            return null;
+        }
+
+        if (inArrayCookiesEnabled(cookieName, that.options.cookiesEnabled) === -1) {
+            return null;
+        }
+
+        cookieName = tableName + '.' + cookieName;
+
+        return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
+    };
+
+    var hasCookie = function (cookieName) {
+        if (!cookieName) {
+            return false;
+        }
+        return (new RegExp('(?:^|;\\s*)' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=')).test(document.cookie);
+    };
+
+    var deleteCookie = function (tableName, cookieName, sPath, sDomain) {
+        cookieName = tableName + '.' + cookieName;
+        if (!hasCookie(cookieName)) {
+            return false;
+        }
+        document.cookie = encodeURIComponent(cookieName) + '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' + (sDomain ? '; domain=' + sDomain : '') + (sPath ? '; path=' + sPath : '');
+        return true;
+    };
+
+    var calculateExpiration = function(cookieExpire) {
+        var time = cookieExpire.replace(/[0-9]*/, ''); //s,mi,h,d,m,y
+        cookieExpire = cookieExpire.replace(/[A-Za-z]/, ''); //number
+
+        switch (time.toLowerCase()) {
+            case 's':
+                cookieExpire = +cookieExpire;
+                break;
+            case 'mi':
+                cookieExpire = cookieExpire * 60;
+                break;
+            case 'h':
+                cookieExpire = cookieExpire * 60 * 60;
+                break;
+            case 'd':
+                cookieExpire = cookieExpire * 24 * 60 * 60;
+                break;
+            case 'm':
+                cookieExpire = cookieExpire * 30 * 24 * 60 * 60;
+                break;
+            case 'y':
+                cookieExpire = cookieExpire * 365 * 30 * 24 * 60 * 60;
+                break;
+            default:
+                cookieExpire = undefined;
+                break;
+        }
+
+        return cookieExpire === undefined ? '' : '; max-age=' + cookieExpire;
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        cookie: false,
+        cookieExpire: '2h',
+        cookiePath: null,
+        cookieDomain: null,
+        cookieSecure: null,
+        cookieIdTable: '',
+        cookiesEnabled: ['bs.table.sortOrder', 'bs.table.sortName', 'bs.table.pageNumber', 'bs.table.pageList', 'bs.table.columns', 'bs.table.searchText', 'bs.table.filterControl'],
+        //internal variable
+        filterControls: [],
+        filterControlValuesLoaded: false
+    });
+
+    $.fn.bootstrapTable.methods.push('deleteCookie');
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init,
+        _initTable = BootstrapTable.prototype.initTable,
+        _onSort = BootstrapTable.prototype.onSort,
+        _onPageNumber = BootstrapTable.prototype.onPageNumber,
+        _onPageListChange = BootstrapTable.prototype.onPageListChange,
+        _onPageFirst = BootstrapTable.prototype.onPageFirst,
+        _onPagePre = BootstrapTable.prototype.onPagePre,
+        _onPageNext = BootstrapTable.prototype.onPageNext,
+        _onPageLast = BootstrapTable.prototype.onPageLast,
+        _toggleColumn = BootstrapTable.prototype.toggleColumn,
+        _selectPage = BootstrapTable.prototype.selectPage,
+        _onSearch = BootstrapTable.prototype.onSearch;
+
+    BootstrapTable.prototype.init = function () {
+        var timeoutId = 0;
+        this.options.filterControls = [];
+        this.options.filterControlValuesLoaded = false;
+
+
+        this.options.cookiesEnabled = typeof this.options.cookiesEnabled === 'string' ?
+            this.options.cookiesEnabled.replace('[', '').replace(']', '').replace(/ /g, '').toLowerCase().split(',') : this.options.cookiesEnabled;
+
+        if (this.options.filterControl) {
+            var that = this;
+            this.$el.on('column-search.bs.table', function (e, field, text) {
+                var isNewField = true;
+
+                for (var i = 0; i < that.options.filterControls.length; i++) {
+                    if (that.options.filterControls[i].field === field) {
+                        that.options.filterControls[i].text = text;
+                        isNewField = false;
+                        break;
+                    }
+                }
+                if (isNewField) {
+                    that.options.filterControls.push({
+                        field: field,
+                        text: text
+                    });
+                }
+
+                setCookie(that, cookieIds.filterControl, JSON.stringify(that.options.filterControls));
+            }).on('post-body.bs.table', function () {
+                setTimeout(function () {
+                    if (!that.options.filterControlValuesLoaded) {
+                        that.options.filterControlValuesLoaded = true;
+                        var filterControl = JSON.parse(getCookie(that, that.options.cookieIdTable, cookieIds.filterControl));
+                        if (filterControl) {
+                            var field = null,
+                                result = [],
+                                header = getCurrentHeader(that),
+                                searchControls = getCurrentSearchControls(that);
+
+                            header.find(searchControls).each(function (index, ele) {
+                                field = $(this).parent().parent().parent().data('field');
+                                result = $.grep(filterControl, function (valueObj) {
+                                    return valueObj.field === field;
+                                });
+
+                                if (result.length > 0) {
+                                    $(this).val(result[0].text);
+                                    that.onColumnSearch({currentTarget: $(this)});
+                                }
+                            });
+                        }
+                    }
+                }, 250);
+            });
+        }
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+    };
+
+    BootstrapTable.prototype.initTable = function () {
+        _initTable.apply(this, Array.prototype.slice.apply(arguments));
+        this.initCookie();
+    };
+
+    BootstrapTable.prototype.initCookie = function () {
+        if (!this.options.cookie) {
+            return;
+        }
+
+        if ((this.options.cookieIdTable === '') || (this.options.cookieExpire === '') || (!cookieEnabled())) {
+            throw new Error("Configuration error. Please review the cookieIdTable, cookieExpire properties, if those properties are ok, then this browser does not support the cookies");
+            return;
+        }
+
+        var sortOrderCookie = getCookie(this, this.options.cookieIdTable, cookieIds.sortOrder),
+            sortOrderNameCookie = getCookie(this, this.options.cookieIdTable, cookieIds.sortName),
+            pageNumberCookie = getCookie(this, this.options.cookieIdTable, cookieIds.pageNumber),
+            pageListCookie = getCookie(this, this.options.cookieIdTable, cookieIds.pageList),
+            columnsCookie = JSON.parse(getCookie(this, this.options.cookieIdTable, cookieIds.columns)),
+            searchTextCookie = getCookie(this, this.options.cookieIdTable, cookieIds.searchText);
+
+        //sortOrder
+        this.options.sortOrder = sortOrderCookie ? sortOrderCookie : this.options.sortOrder;
+        //sortName
+        this.options.sortName = sortOrderNameCookie ? sortOrderNameCookie : this.options.sortName;
+        //pageNumber
+        this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber;
+        //pageSize
+        this.options.pageSize = pageListCookie ? pageListCookie === this.options.formatAllRows() ? pageListCookie : +pageListCookie : this.options.pageSize;
+        //searchText
+        this.options.searchText = searchTextCookie ? searchTextCookie : '';
+
+        if (columnsCookie) {
+            $.each(this.columns, function (i, column) {
+                column.visible = $.inArray(column.field, columnsCookie) !== -1;
+            });
+        }
+    };
+
+    BootstrapTable.prototype.onSort = function () {
+        _onSort.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.sortOrder, this.options.sortOrder);
+        setCookie(this, cookieIds.sortName, this.options.sortName);
+    };
+
+    BootstrapTable.prototype.onPageNumber = function () {
+        _onPageNumber.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+    };
+
+    BootstrapTable.prototype.onPageListChange = function () {
+        _onPageListChange.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageList, this.options.pageSize);
+    };
+
+    BootstrapTable.prototype.onPageFirst = function () {
+        _onPageFirst.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+    };
+
+    BootstrapTable.prototype.onPagePre = function () {
+        _onPagePre.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+    };
+
+    BootstrapTable.prototype.onPageNext = function () {
+        _onPageNext.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+    };
+
+    BootstrapTable.prototype.onPageLast = function () {
+        _onPageLast.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
+    };
+
+    BootstrapTable.prototype.toggleColumn = function () {
+        _toggleColumn.apply(this, Array.prototype.slice.apply(arguments));
+
+        var visibleColumns = [];
+
+        $.each(this.columns, function (i, column) {
+            if (column.visible) {
+                visibleColumns.push(column.field);
+            }
+        });
+
+        setCookie(this, cookieIds.columns, JSON.stringify(visibleColumns));
+    };
+    
+    BootstrapTable.prototype.selectPage = function (page) {
+        _selectPage.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.pageNumber, page);
+    };
+
+    BootstrapTable.prototype.onSearch = function () {
+        _onSearch.apply(this, Array.prototype.slice.apply(arguments));
+        setCookie(this, cookieIds.searchText, this.searchText);
+    };
+
+    BootstrapTable.prototype.deleteCookie = function (cookieName) {
+        if ((cookieName === '') || (!cookieEnabled())) {
+            return;
+        }
+
+        deleteCookie(this.options.cookieIdTable, cookieIds[cookieName], this.options.cookiePath, this.options.cookieDomain);
+    };
+})(jQuery);
diff --git a/js/table/extensions/cookie/bootstrap-table-cookie.min.js b/js/table/extensions/cookie/bootstrap-table-cookie.min.js
new file mode 100644
index 0000000..0a3c257
--- /dev/null
+++ b/js/table/extensions/cookie/bootstrap-table-cookie.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b={sortOrder:"bs.table.sortOrder",sortName:"bs.table.sortName",pageNumber:"bs.table.pageNumber",pageList:"bs.table.pageList",columns:"bs.table.columns",searchText:"bs.table.searchText",filterControl:"bs.table.filterControl"},c=function(a){var b=a.$header;return a.options.height&&(b=a.$tableHeader),b},d=function(a){var b="select, input";return a.options.height&&(b="table select, table input"),b},e=function(){return!!navigator.cookieEnabled},f=function(a,b){for(var c=-1,d=0;d<b.length;d++)if(a.toLowerCase()===b[d].toLowerCase()){c=d;break}return c},g=function(a,b,c){return a.options.cookie&&e()&&""!==a.options.cookieIdTable&&-1!==f(b,a.options.cookiesEnabled)?(b=a.options.cookieIdTable+"."+b,!b||/^(?:expires|max\-age|path|domain|secure)$/i.test(b)?!1:(document.cookie=encodeURIComponent(b)+"="+encodeURIComponent(c)+k(a.options.cookieExpire)+(a.options.cookieDomain?"; domain="+a.options.cookieDomain:"")+(a.options.cookiePath?"; path="+a.options.cookiePath:"")+(a.cookieSecure?"; secure":""),!0)):void 0},h=function(a,b,c){return c?-1===f(c,a.options.cookiesEnabled)?null:(c=b+"."+c,decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(c).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null):null},i=function(a){return a?new RegExp("(?:^|;\\s*)"+encodeURIComponent(a).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=").test(document.cookie):!1},j=function(a,b,c,d){return b=a+"."+b,i(b)?(document.cookie=encodeURIComponent(b)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(d?"; domain="+d:"")+(c?"; path="+c:""),!0):!1},k=function(a){var b=a.replace(/[0-9]*/,"");switch(a=a.replace(/[A-Za-z]/,""),b.toLowerCase()){case"s":a=+a;break;case"mi":a=60*a;break;case"h":a=60*a*60;break;case"d":a=24*a*60*60;break;case"m":a=30*a*24*60*60;break;case"y":a=365*a*30*24*60*60;break;default:a=void 0}return void 0===a?"":"; max-age="+a};a.extend(a.fn.bootstrapTable.defaults,{cookie:!1,cookieExpire:"2h",cookiePath:null,cookieDomain:null,cookieSecure:null,cookieIdTable:"",cookiesEnabled:["bs.table.sortOrder","bs.table.sortName","bs.table.pageNumber","bs.table.pageList","bs.table.columns","bs.table.searchText","bs.table.filterControl"],filterControls:[],filterControlValuesLoaded:!1}),a.fn.bootstrapTable.methods.push("deleteCookie");var l=a.fn.bootstrapTable.Constructor,m=l.prototype.init,n=l.prototype.initTable,o=l.prototype.onSort,p=l.prototype.onPageNumber,q=l.prototype.onPageListChange,r=l.prototype.onPageFirst,s=l.prototype.onPagePre,t=l.prototype.onPageNext,u=l.prototype.onPageLast,v=l.prototype.toggleColumn,w=l.prototype.selectPage,x=l.prototype.onSearch;l.prototype.init=function(){if(this.options.filterControls=[],this.options.filterControlValuesLoaded=!1,this.options.cookiesEnabled="string"==typeof this.options.cookiesEnabled?this.options.cookiesEnabled.replace("[","").replace("]","").replace(/ /g,"").toLowerCase().split(","):this.options.cookiesEnabled,this.options.filterControl){var e=this;this.$el.on("column-search.bs.table",function(a,c,d){for(var f=!0,h=0;h<e.options.filterControls.length;h++)if(e.options.filterControls[h].field===c){e.options.filterControls[h].text=d,f=!1;break}f&&e.options.filterControls.push({field:c,text:d}),g(e,b.filterControl,JSON.stringify(e.options.filterControls))}).on("post-body.bs.table",function(){setTimeout(function(){if(!e.options.filterControlValuesLoaded){e.options.filterControlValuesLoaded=!0;var f=JSON.parse(h(e,e.options.cookieIdTable,b.filterControl));if(f){var g=null,i=[],j=c(e),k=d(e);j.find(k).each(function(){g=a(this).parent().parent().parent().data("field"),i=a.grep(f,function(a){return a.field===g}),i.length>0&&(a(this).val(i[0].text),e.onColumnSearch({currentTarget:a(this)}))})}}},250)})}m.apply(this,Array.prototype.slice.apply(arguments))},l.prototype.initTable=function(){n.apply(this,Array.prototype.slice.apply(arguments)),this.initCookie()},l.prototype.initCookie=function(){if(this.options.cookie){if(""===this.options.cookieIdTable||""===this.options.cookieExpire||!e())throw new Error("Configuration error. Please review the cookieIdTable, cookieExpire properties, if those properties are ok, then this browser does not support the cookies");var c=h(this,this.options.cookieIdTable,b.sortOrder),d=h(this,this.options.cookieIdTable,b.sortName),f=h(this,this.options.cookieIdTable,b.pageNumber),g=h(this,this.options.cookieIdTable,b.pageList),i=JSON.parse(h(this,this.options.cookieIdTable,b.columns)),j=h(this,this.options.cookieIdTable,b.searchText);this.options.sortOrder=c?c:this.options.sortOrder,this.options.sortName=d?d:this.options.sortName,this.options.pageNumber=f?+f:this.options.pageNumber,this.options.pageSize=g?g===this.options.formatAllRows()?g:+g:this.options.pageSize,this.options.searchText=j?j:"",i&&a.each(this.columns,function(b,c){c.visible=-1!==a.inArray(c.field,i)})}},l.prototype.onSort=function(){o.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.sortOrder,this.options.sortOrder),g(this,b.sortName,this.options.sortName)},l.prototype.onPageNumber=function(){p.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPageListChange=function(){q.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageList,this.options.pageSize)},l.prototype.onPageFirst=function(){r.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPagePre=function(){s.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPageNext=function(){t.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.onPageLast=function(){u.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,this.options.pageNumber)},l.prototype.toggleColumn=function(){v.apply(this,Array.prototype.slice.apply(arguments));var c=[];a.each(this.columns,function(a,b){b.visible&&c.push(b.field)}),g(this,b.columns,JSON.stringify(c))},l.prototype.selectPage=function(a){w.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.pageNumber,a)},l.prototype.onSearch=function(){x.apply(this,Array.prototype.slice.apply(arguments)),g(this,b.searchText,this.searchText)},l.prototype.deleteCookie=function(a){""!==a&&e()&&j(this.options.cookieIdTable,b[a],this.options.cookiePath,this.options.cookieDomain)}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/editable/bootstrap-table-editable.js b/js/table/extensions/editable/bootstrap-table-editable.js
new file mode 100644
index 0000000..0bb43a6
--- /dev/null
+++ b/js/table/extensions/editable/bootstrap-table-editable.js
@@ -0,0 +1,107 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * extensions: https://github.com/vitalets/x-editable
+ */
+
+!function ($) {
+
+    'use strict';
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        editable: true,
+        onEditableInit: function () {
+            return false;
+        },
+        onEditableSave: function (field, row, oldValue, $el) {
+            return false;
+        },
+        onEditableShown: function (field, row, $el, editable) {
+            return false;
+        },
+        onEditableHidden: function (field, row, $el, reason) {
+            return false;
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'editable-init.bs.table': 'onEditableInit',
+        'editable-save.bs.table': 'onEditableSave',
+        'editable-shown.bs.table': 'onEditableShown',
+        'editable-hidden.bs.table': 'onEditableHidden'
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initTable = BootstrapTable.prototype.initTable,
+        _initBody = BootstrapTable.prototype.initBody;
+
+    BootstrapTable.prototype.initTable = function () {
+        var that = this;
+        _initTable.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.editable) {
+            return;
+        }
+
+        $.each(this.columns, function (i, column) {
+            if (!column.editable) {
+                return;
+            }
+
+            var _formatter = column.formatter;
+            column.formatter = function (value, row, index) {
+                var result = _formatter ? _formatter(value, row, index) : value;
+
+                return ['<a href="javascript:void(0)"',
+                    ' data-name="' + column.field + '"',
+                    ' data-pk="' + row[that.options.idField] + '"',
+                    ' data-value="' + result + '"',
+                    '>' + '</a>'
+                ].join('');
+            };
+        });
+    };
+
+    BootstrapTable.prototype.initBody = function () {
+        var that = this;
+        _initBody.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.editable) {
+            return;
+        }
+
+        $.each(this.columns, function (i, column) {
+            if (!column.editable) {
+                return;
+            }
+
+            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
+                .off('save').on('save', function (e, params) {
+                    var data = that.getData(),
+                        index = $(this).parents('tr[data-index]').data('index'),
+                        row = data[index],
+                        oldValue = row[column.field];
+
+                    row[column.field] = params.submitValue;
+                    that.trigger('editable-save', column.field, row, oldValue, $(this));
+                });
+            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
+                .off('shown').on('shown', function (e, editable) {
+                    var data = that.getData(),
+                        index = $(this).parents('tr[data-index]').data('index'),
+                        row = data[index];
+                    
+                    that.trigger('editable-shown', column.field, row, $(this), editable);
+                });
+            that.$body.find('a[data-name="' + column.field + '"]').editable(column.editable)
+                .off('hidden').on('hidden', function (e, reason) {
+                    var data = that.getData(),
+                        index = $(this).parents('tr[data-index]').data('index'),
+                        row = data[index];
+                    
+                    that.trigger('editable-hidden', column.field, row, $(this), reason);
+                });
+        });
+        this.trigger('editable-init');
+    };
+
+}(jQuery);
diff --git a/js/table/extensions/editable/bootstrap-table-editable.min.js b/js/table/extensions/editable/bootstrap-table-editable.min.js
new file mode 100644
index 0000000..5c95094
--- /dev/null
+++ b/js/table/extensions/editable/bootstrap-table-editable.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{editable:!0,onEditableInit:function(){return!1},onEditableSave:function(){return!1},onEditableShown:function(){return!1},onEditableHidden:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"editable-init.bs.table":"onEditableInit","editable-save.bs.table":"onEditableSave","editable-shown.bs.table":"onEditableShown","editable-hidden.bs.table":"onEditableHidden"});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initTable,d=b.prototype.initBody;b.prototype.initTable=function(){var b=this;c.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&a.each(this.columns,function(a,c){if(c.editable){var d=c.formatter;c.formatter=function(a,e,f){var g=d?d(a,e,f):a;return['<a href="javascript:void(0)"',' data-name="'+c.field+'"',' data-pk="'+e[b.options.idField]+'"',' data-value="'+g+'"',"></a>"].join("")}}})},b.prototype.initBody=function(){var b=this;d.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&(a.each(this.columns,function(c,d){d.editable&&(b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("save").on("save",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g],i=h[d.field];h[d.field]=e.submitValue,b.trigger("editable-save",d.field,h,i,a(this))}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("shown").on("shown",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-shown",d.field,h,a(this),e)}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("hidden").on("hidden",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-hidden",d.field,h,a(this),e)}))}),this.trigger("editable-init"))}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/export/bootstrap-table-export.js b/js/table/extensions/export/bootstrap-table-export.js
new file mode 100644
index 0000000..06fe03b
--- /dev/null
+++ b/js/table/extensions/export/bootstrap-table-export.js
@@ -0,0 +1,105 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * extensions: https://github.com/kayalshri/tableExport.jquery.plugin
+ */
+
+(function ($) {
+    'use strict';
+
+    var TYPE_NAME = {
+        json: 'JSON',
+        xml: 'XML',
+        png: 'PNG',
+        csv: 'CSV',
+        txt: 'TXT',
+        sql: 'SQL',
+        doc: 'MS-Word',
+        excel: 'MS-Excel',
+        powerpoint: 'MS-Powerpoint',
+        pdf: 'PDF'
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        showExport: false,
+        exportDataType: 'basic', // basic, all, selected
+        // 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'
+        exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
+        exportOptions: {}
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initToolbar = BootstrapTable.prototype.initToolbar;
+
+    BootstrapTable.prototype.initToolbar = function () {
+        this.showToolbar = this.options.showExport;
+
+        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (this.options.showExport) {
+            var that = this,
+                $btnGroup = this.$toolbar.find('>.btn-group'),
+                $export = $btnGroup.find('div.export');
+
+            if (!$export.length) {
+                $export = $([
+                    '<div class="export btn-group">',
+                        '<button class="btn btn-default dropdown-toggle" ' +
+                            'data-toggle="dropdown" type="button">',
+                            '<i class="glyphicon glyphicon-export icon-share"></i> ',
+                            '<span class="caret"></span>',
+                        '</button>',
+                        '<ul class="dropdown-menu" role="menu">',
+                        '</ul>',
+                    '</div>'].join('')).appendTo($btnGroup);
+
+                var $menu = $export.find('.dropdown-menu'),
+                    exportTypes = this.options.exportTypes;
+
+                if (typeof this.options.exportTypes === 'string') {
+                    var types = this.options.exportTypes.slice(1, -1).replace(/ /g, '').split(',');
+
+                    exportTypes = [];
+                    $.each(types, function (i, value) {
+                        exportTypes.push(value.slice(1, -1));
+                    });
+                }
+                $.each(exportTypes, function (i, type) {
+                    if (TYPE_NAME.hasOwnProperty(type)) {
+                        $menu.append(['<li data-type="' + type + '">',
+                                '<a href="javascript:void(0)">',
+                                    TYPE_NAME[type],
+                                '</a>',
+                            '</li>'].join(''));
+                    }
+                });
+
+                $menu.find('li').click(function () {
+                    var type = $(this).data('type'),
+                        doExport = function () {
+                            that.$el.tableExport($.extend({}, that.options.exportOptions, {
+                                type: type,
+                                escape: false
+                            }));
+                        };
+
+                    if (that.options.exportDataType === 'all' && that.options.pagination) {
+                        that.$el.one('load-success.bs.table page-change.bs.table', function () {
+                            doExport();
+                            that.togglePagination();
+                        });
+                        that.togglePagination();
+                    } else if (that.options.exportDataType === 'selected') {
+                        var data = that.getData(),
+                            selectedData = that.getAllSelections();
+
+                        that.load(selectedData);
+                        doExport();
+                        that.load(data);
+                    } else {
+                        doExport();
+                    }
+                });
+            }
+        }
+    };
+})(jQuery);
diff --git a/js/table/extensions/export/bootstrap-table-export.min.js b/js/table/extensions/export/bootstrap-table-export.min.js
new file mode 100644
index 0000000..f8ba702
--- /dev/null
+++ b/js/table/extensions/export/bootstrap-table-export.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b={json:"JSON",xml:"XML",png:"PNG",csv:"CSV",txt:"TXT",sql:"SQL",doc:"MS-Word",excel:"MS-Excel",powerpoint:"MS-Powerpoint",pdf:"PDF"};a.extend(a.fn.bootstrapTable.defaults,{showExport:!1,exportDataType:"basic",exportTypes:["json","xml","csv","txt","sql","excel"],exportOptions:{}});var c=a.fn.bootstrapTable.Constructor,d=c.prototype.initToolbar;c.prototype.initToolbar=function(){if(this.showToolbar=this.options.showExport,d.apply(this,Array.prototype.slice.apply(arguments)),this.options.showExport){var c=this,e=this.$toolbar.find(">.btn-group"),f=e.find("div.export");if(!f.length){f=a(['<div class="export btn-group">','<button class="btn btn-default dropdown-toggle" data-toggle="dropdown" type="button">','<i class="glyphicon glyphicon-export icon-share"></i> ','<span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">',"</ul>","</div>"].join("")).appendTo(e);var g=f.find(".dropdown-menu"),h=this.options.exportTypes;if("string"==typeof this.options.exportTypes){var i=this.options.exportTypes.slice(1,-1).replace(/ /g,"").split(",");h=[],a.each(i,function(a,b){h.push(b.slice(1,-1))})}a.each(h,function(a,c){b.hasOwnProperty(c)&&g.append(['<li data-type="'+c+'">','<a href="javascript:void(0)">',b[c],"</a>","</li>"].join(""))}),g.find("li").click(function(){var b=a(this).data("type"),d=function(){c.$el.tableExport(a.extend({},c.options.exportOptions,{type:b,escape:!1}))};if("all"===c.options.exportDataType&&c.options.pagination)c.$el.one("load-success.bs.table page-change.bs.table",function(){d(),c.togglePagination()}),c.togglePagination();else if("selected"===c.options.exportDataType){var e=c.getData(),f=c.getAllSelections();c.load(f),d(),c.load(e)}else d()})}}}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/filter-control/bootstrap-table-filter-control.js b/js/table/extensions/filter-control/bootstrap-table-filter-control.js
new file mode 100644
index 0000000..fa696d3
--- /dev/null
+++ b/js/table/extensions/filter-control/bootstrap-table-filter-control.js
@@ -0,0 +1,436 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    var sprintf = $.fn.bootstrapTable.utils.sprintf;
+
+    var addOptionToSelectControl = function (selectControl, value, text) {
+        selectControl = $(selectControl.get(selectControl.length - 1));
+        if (existsOptionInSelectControl(selectControl, value)) {
+            selectControl.append($("<option></option>")
+                .attr("value", value)
+                .text($('<div />').html(text).text()));
+
+            // Sort it. Not overly efficient to do this here
+            var $opts = selectControl.find('option:gt(0)');
+            $opts.sort(function (a, b) {
+                a = $(a).text().toLowerCase();
+                b = $(b).text().toLowerCase();
+                if ($.isNumeric(a) && $.isNumeric(b)) {
+                    // Convert numerical values from string to float.
+                    a = parseFloat(a);
+                    b = parseFloat(b);
+                }
+                return a > b ? 1 : a < b ? -1 : 0;
+            });
+
+            selectControl.find('option:gt(0)').remove();
+            selectControl.append($opts);
+        }
+    };
+
+    var existsOptionInSelectControl = function (selectControl, value) {
+        var options = selectControl.get(selectControl.length - 1).options;
+        for (var i = 0; i < options.length; i++) {
+            if (options[i].value === value.toString()) {
+                //The value is nor valid to add
+                return false;
+            }
+        }
+
+        //If we get here, the value is valid to add
+        return true;
+    };
+
+    var fixHeaderCSS = function (that) {
+        that.$tableHeader.css('height', '77px');
+    };
+
+    var getCurrentHeader = function (that) {
+        var header = that.$header;
+        if (that.options.height) {
+            header = that.$tableHeader;
+        }
+
+        return header;
+    };
+
+    var getCurrentSearchControls = function (that) {
+        var searchControls = 'select, input';
+        if (that.options.height) {
+            searchControls = 'table select, table input';
+        }
+
+        return searchControls;
+    };
+
+    var copyValues = function (that) {
+        var header = getCurrentHeader(that),
+            searchControls = getCurrentSearchControls(that);
+
+        that.options.values = [];
+
+        header.find(searchControls).each(function () {
+            that.options.values.push(
+                {
+                    field: $(this).parent().parent().parent().data('field'),
+                    value: $(this).val()
+                });
+        });
+    };
+
+    var setValues = function(that) {
+        var field = null,
+            result = [],
+            header = getCurrentHeader(that),
+            searchControls = getCurrentSearchControls(that);
+
+        if (that.options.values.length > 0) {
+            header.find(searchControls).each(function (index, ele) {
+                field = $(this).parent().parent().parent().data('field');
+                result = $.grep(that.options.values, function (valueObj) {
+                    return valueObj.field === field;
+                });
+
+                if (result.length > 0) {
+                    $(this).val(result[0].value);
+                }
+            });
+        }
+    };
+
+    var createControls = function (that, header) {
+        var addedFilterControl = false,
+            isVisible,
+            html,
+            timeoutId = 0;
+
+        $.each(that.columns, function (i, column) {
+            isVisible = 'hidden';
+            html = [];
+
+            if (!column.visible) {
+                return;
+            }
+
+            if (!column.filterControl) {
+                html.push('<div style="height: 34px;"></div>');
+            } else {
+                html.push('<div style="margin: 0px 2px 2px 2px;" class="filterControl">');
+
+                if (column.filterControl && column.searchable) {
+                    addedFilterControl = true;
+                    isVisible = 'visible'
+                }
+                switch (column.filterControl.toLowerCase()) {
+                    case 'input' :
+                        html.push(sprintf('<input type="text" class="form-control" style="width: 100%; visibility: %s">', isVisible));
+                        break;
+                    case 'select':
+                        html.push(sprintf('<select class="%s form-control" style="width: 100%; visibility: %s"></select>',
+                            column.field, isVisible))
+                        break;
+                    case 'datepicker':
+                        html.push(sprintf('<input type="text" class="date-filter-control %s form-control" style="width: 100%; visibility: %s">',
+                            column.field, isVisible));
+                        break;
+                }
+            }
+
+            $.each(header.children().children(), function (i, tr) {
+                tr = $(tr);
+                if (tr.data('field') === column.field) {
+                    tr.find('.fht-cell').append(html.join(''));
+                    return false;
+                }
+            });
+            if (column.filterData !== undefined && column.filterData.toLowerCase() !== 'column') {
+                var filterDataType = column.filterData.substring(0, 3);
+                var filterDataSource = column.filterData.substring(4, column.filterData.length);
+                var selectControl = $('.' + column.field);
+                addOptionToSelectControl(selectControl, '', '');
+
+                switch (filterDataType) {
+                    case 'url':
+                        $.ajax({
+                            url: filterDataSource,
+                            dataType: 'json',
+                            success: function (data) {
+                                $.each(data, function (key, value) {
+                                    addOptionToSelectControl(selectControl, key, value);
+                                });
+                            }
+                        });
+                        break;
+                    case 'var':
+                        var variableValues = window[filterDataSource];
+                        for (var key in variableValues) {
+                            addOptionToSelectControl(selectControl, key, variableValues[key]);
+                        }
+                        break;
+                }
+            }
+        });
+
+        if (addedFilterControl) {
+            header.off('keyup', 'input').on('keyup', 'input', function (event) {
+                clearTimeout(timeoutId);
+                timeoutId = setTimeout(function () {
+                    that.onColumnSearch(event);
+                }, that.options.searchTimeOut);
+            });
+
+            header.off('change', 'select').on('change', 'select', function (event) {
+                clearTimeout(timeoutId);
+                timeoutId = setTimeout(function () {
+                    that.onColumnSearch(event);
+                }, that.options.searchTimeOut);
+            });
+
+            header.off('mouseup', 'input').on('mouseup', 'input', function (event) {
+                var $input = $(this),
+                oldValue = $input.val();
+
+                if (oldValue === "") {
+                    return;
+                }
+
+                setTimeout(function(){
+                    var newValue = $input.val();
+
+                    if (newValue === "") {
+                        clearTimeout(timeoutId);
+                        timeoutId = setTimeout(function () {
+                            that.onColumnSearch(event);
+                        }, that.options.searchTimeOut);
+                    }
+                }, 1);
+            });
+
+            if (header.find('.date-filter-control').length > 0) {
+                $.each(that.columns, function (i, column) {
+                    if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'datepicker') {
+                        header.find('.date-filter-control.' + column.field).datepicker(column.filterDatepickerOptions)
+                            .on('changeDate', function (e) {
+                                //Fired the keyup event
+                                $(e.currentTarget).keyup();
+                            });
+                    }
+                });
+            }
+        } else {
+            header.find('.filterControl').hide();
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        filterControl: false,
+        onColumnSearch: function (field, text) {
+            return false;
+        },
+        filterShowClear: false,
+        //internal variables
+        values: []
+    });
+
+    $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
+        filterControl: undefined,
+        filterData: undefined,
+        filterDatepickerOptions: undefined,
+        filterStrictSearch: false
+    });
+
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'column-search.bs.table': 'onColumnSearch'
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init,
+        _initToolbar = BootstrapTable.prototype.initToolbar,
+        _initHeader = BootstrapTable.prototype.initHeader,
+        _initBody = BootstrapTable.prototype.initBody,
+        _initSearch = BootstrapTable.prototype.initSearch;
+
+    BootstrapTable.prototype.init = function () {
+        //Make sure that the filtercontrol option is set
+        if (this.options.filterControl) {
+            var that = this;
+            //Make sure that the internal variables are set correctly
+            this.options.values = [];
+
+            this.$el.on('reset-view.bs.table', function () {
+                //Create controls on $tableHeader if the height is set
+                if (!that.options.height) {
+                    return;
+                }
+
+                //Avoid recreate the controls
+                if (that.$tableHeader.find('select').length > 0 || that.$tableHeader.find('input').length > 0) {
+                    return;
+                }
+
+                createControls(that, that.$tableHeader);
+            }).on('post-header.bs.table', function () {
+                setValues(that);
+            }).on('post-body.bs.table', function () {
+                if (that.options.height) {
+                    fixHeaderCSS(that);
+                }
+            }).on('column-switch.bs.table', function(field, checked) {
+                setValues(that);
+            });
+        }
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+    };
+
+    BootstrapTable.prototype.initToolbar = function () {
+        if ((!this.showToolbar) && (this.options.filterControl)) {
+            this.showToolbar = this.options.filterControl;
+        }
+
+        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (this.options.filterControl && this.options.filterShowClear) {
+            var $btnGroup = this.$toolbar.find('>.btn-group'),
+                $btnClear = $btnGroup.find('div.export');
+
+            if (!$btnClear.length) {
+              $btnClear = $([
+                    '<button class="btn btn-default " ' +
+                        'type="button">',
+                    '<i class="glyphicon glyphicon-trash icon-share"></i> ',
+                    '</button>',
+                    '</ul>'].join('')).appendTo($btnGroup);
+
+                $btnClear.off('click').on('click', $.proxy(this.clearFilterControl, this));
+            }
+        }
+    };
+
+    BootstrapTable.prototype.initHeader = function () {
+        _initHeader.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.filterControl) {
+            return;
+        }
+        createControls(this, this.$header);
+    };
+
+    BootstrapTable.prototype.initBody = function () {
+        _initBody.apply(this, Array.prototype.slice.apply(arguments));
+
+        var that = this,
+            data = this.options.data,
+            pageTo = this.pageTo < this.options.data.length ? this.options.data.length : this.pageTo;
+
+        for (var i = this.pageFrom - 1; i < pageTo; i++) {
+            var item = data[i];
+
+            $.each(this.header.fields, function (j, field) {
+                var value = item[field],
+                    column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)];
+
+                value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, that.header.formatters[j], [value, item, i], value);
+
+                if ((!column.checkbox) || (!column.radio)) {
+                    if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'select' && column.searchable) {
+                        if (column.filterData === undefined || column.filterData.toLowerCase() === 'column') {
+                            var selectControl = $('.' + column.field);
+                            if (selectControl !== undefined && selectControl.length > 0) {
+                                if (selectControl.get(selectControl.length - 1).options.length === 0) {
+                                    //Added the default option
+                                    addOptionToSelectControl(selectControl, '', '');
+                                }
+
+                                //Added a new value
+                                addOptionToSelectControl(selectControl, value, value);
+                            }
+                        }
+                    }
+                }
+            });
+        }
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+
+        var that = this;
+        var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
+
+        //Check partial column filter
+        this.data = fp ? $.grep(this.data, function (item, i) {
+            for (var key in fp) {
+                var thisColumn = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)];
+                var fval = fp[key].toLowerCase();
+                var value = item[key];
+                value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
+                    that.header.formatters[$.inArray(key, that.header.fields)],
+                    [value, item, i], value);
+
+                if(thisColumn.filterStrictSearch){
+                    if (!($.inArray(key, that.header.fields) !== -1 &&
+                        (typeof value === 'string' || typeof value === 'number') &&
+                        value.toString().toLowerCase() === fval.toString().toLowerCase())) {
+                        return false;
+                    }
+                }
+                else{
+                    if (!($.inArray(key, that.header.fields) !== -1 &&
+                        (typeof value === 'string' || typeof value === 'number') &&
+                        (value + '').toLowerCase().indexOf(fval) !== -1)) {
+                        return false;
+                    }
+                };
+            }
+            return true;
+        }) : this.data;
+    };
+
+    BootstrapTable.prototype.onColumnSearch = function (event) {
+        copyValues(this);
+        var text = $.trim($(event.currentTarget).val());
+        var $field = $(event.currentTarget).parent().parent().parent().data('field')
+
+        if ($.isEmptyObject(this.filterColumnsPartial)) {
+            this.filterColumnsPartial = {};
+        }
+        if (text) {
+            this.filterColumnsPartial[$field] = text;
+        } else {
+            delete this.filterColumnsPartial[$field];
+        }
+
+        this.options.pageNumber = 1;
+        this.onSearch(event);
+        this.updatePagination();
+        this.trigger('column-search', $field, text);
+    };
+
+    BootstrapTable.prototype.clearFilterControl = function () {
+        if (this.options.filterControl && this.options.filterShowClear) {
+            $.each(this.options.values, function (i, item) {
+                item.value = '';
+            });
+
+            setValues(this);
+
+            var controls = getCurrentHeader(this).find(getCurrentSearchControls(this)),
+                timeoutId = 0;
+
+            if (controls.length > 0) {
+                this.filterColumnsPartial = {};
+                clearTimeout(timeoutId);
+                timeoutId = setTimeout(function () {
+                    $(controls[0]).trigger(controls[0].tagName === 'INPUT' ? 'keyup' : 'change');
+                }, this.options.searchTimeOut);
+            }
+        }
+    };
+}(jQuery);
diff --git a/js/table/extensions/filter-control/bootstrap-table-filter-control.min.js b/js/table/extensions/filter-control/bootstrap-table-filter-control.min.js
new file mode 100644
index 0000000..1de25e7
--- /dev/null
+++ b/js/table/extensions/filter-control/bootstrap-table-filter-control.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=a.fn.bootstrapTable.utils.sprintf,c=function(b,c,e){if(b=a(b.get(b.length-1)),d(b,c)){b.append(a("<option></option>").attr("value",c).text(a("<div />").html(e).text()));var f=b.find("option:gt(0)");f.sort(function(b,c){return b=a(b).text().toLowerCase(),c=a(c).text().toLowerCase(),a.isNumeric(b)&&a.isNumeric(c)&&(b=parseFloat(b),c=parseFloat(c)),b>c?1:c>b?-1:0}),b.find("option:gt(0)").remove(),b.append(f)}},d=function(a,b){for(var c=a.get(a.length-1).options,d=0;d<c.length;d++)if(c[d].value===b.toString())return!1;return!0},e=function(a){a.$tableHeader.css("height","77px")},f=function(a){var b=a.$header;return a.options.height&&(b=a.$tableHeader),b},g=function(a){var b="select, input";return a.options.height&&(b="table select, table input"),b},h=function(b){var c=f(b),d=g(b);b.options.values=[],c.find(d).each(function(){b.options.values.push({field:a(this).parent().parent().parent().data("field"),value:a(this).val()})})},i=function(b){var c=null,d=[],e=f(b),h=g(b);b.options.values.length>0&&e.find(h).each(function(){c=a(this).parent().parent().parent().data("field"),d=a.grep(b.options.values,function(a){return a.field===c}),d.length>0&&a(this).val(d[0].value)})},j=function(d,e){var f,g,h=!1,i=0;a.each(d.columns,function(d,i){if(f="hidden",g=[],i.visible){if(i.filterControl)switch(g.push('<div style="margin: 0px 2px 2px 2px;" class="filterControl">'),i.filterControl&&i.searchable&&(h=!0,f="visible"),i.filterControl.toLowerCase()){case"input":g.push(b('<input type="text" class="form-control" style="width: 100%; visibility: %s">',f));break;case"select":g.push(b('<select class="%s form-control" style="width: 100%; visibility: %s"></select>',i.field,f));break;case"datepicker":g.push(b('<input type="text" class="date-filter-control %s form-control" style="width: 100%; visibility: %s">',i.field,f))}else g.push('<div style="height: 34px;"></div>');if(a.each(e.children().children(),function(b,c){return c=a(c),c.data("field")===i.field?(c.find(".fht-cell").append(g.join("")),!1):void 0}),void 0!==i.filterData&&"column"!==i.filterData.toLowerCase()){var j=i.filterData.substring(0,3),k=i.filterData.substring(4,i.filterData.length),l=a("."+i.field);switch(c(l,"",""),j){case"url":a.ajax({url:k,dataType:"json",success:function(b){a.each(b,function(a,b){c(l,a,b)})}});break;case"var":var m=window[k];for(var n in m)c(l,n,m[n])}}}}),h?(e.off("keyup","input").on("keyup","input",function(a){clearTimeout(i),i=setTimeout(function(){d.onColumnSearch(a)},d.options.searchTimeOut)}),e.off("change","select").on("change","select",function(a){clearTimeout(i),i=setTimeout(function(){d.onColumnSearch(a)},d.options.searchTimeOut)}),e.off("mouseup","input").on("mouseup","input",function(b){var c=a(this),e=c.val();""!==e&&setTimeout(function(){var a=c.val();""===a&&(clearTimeout(i),i=setTimeout(function(){d.onColumnSearch(b)},d.options.searchTimeOut))},1)}),e.find(".date-filter-control").length>0&&a.each(d.columns,function(b,c){void 0!==c.filterControl&&"datepicker"===c.filterControl.toLowerCase()&&e.find(".date-filter-control."+c.field).datepicker(c.filterDatepickerOptions).on("changeDate",function(b){a(b.currentTarget).keyup()})})):e.find(".filterControl").hide()};a.extend(a.fn.bootstrapTable.defaults,{filterControl:!1,onColumnSearch:function(){return!1},filterShowClear:!1,values:[]}),a.extend(a.fn.bootstrapTable.COLUMN_DEFAULTS,{filterControl:void 0,filterData:void 0,filterDatepickerOptions:void 0,filterStrictSearch:!1}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"column-search.bs.table":"onColumnSearch"});var k=a.fn.bootstrapTable.Constructor,l=k.prototype.init,m=k.prototype.initToolbar,n=k.prototype.initHeader,o=k.prototype.initBody,p=k.prototype.initSearch;k.prototype.init=function(){if(this.options.filterControl){var a=this;this.options.values=[],this.$el.on("reset-view.bs.table",function(){a.options.height&&(a.$tableHeader.find("select").length>0||a.$tableHeader.find("input").length>0||j(a,a.$tableHeader))}).on("post-header.bs.table",function(){i(a)}).on("post-body.bs.table",function(){a.options.height&&e(a)}).on("column-switch.bs.table",function(){i(a)})}l.apply(this,Array.prototype.slice.apply(arguments))},k.prototype.initToolbar=function(){if(!this.showToolbar&&this.options.filterControl&&(this.showToolbar=this.options.filterControl),m.apply(this,Array.prototype.slice.apply(arguments)),this.options.filterControl&&this.options.filterShowClear){var b=this.$toolbar.find(">.btn-group"),c=b.find("div.export");c.length||(c=a(['<button class="btn btn-default " type="button">','<i class="glyphicon glyphicon-trash icon-share"></i> ',"</button>","</ul>"].join("")).appendTo(b),c.off("click").on("click",a.proxy(this.clearFilterControl,this)))}},k.prototype.initHeader=function(){n.apply(this,Array.prototype.slice.apply(arguments)),this.options.filterControl&&j(this,this.$header)},k.prototype.initBody=function(){o.apply(this,Array.prototype.slice.apply(arguments));for(var b=this,d=this.options.data,e=this.pageTo<this.options.data.length?this.options.data.length:this.pageTo,f=this.pageFrom-1;e>f;f++){var g=d[f];a.each(this.header.fields,function(d,e){var h=g[e],i=b.columns[a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e)];if(h=a.fn.bootstrapTable.utils.calculateObjectValue(b.header,b.header.formatters[d],[h,g,f],h),!(i.checkbox&&i.radio||void 0===i.filterControl||"select"!==i.filterControl.toLowerCase()||!i.searchable||void 0!==i.filterData&&"column"!==i.filterData.toLowerCase())){var j=a("."+i.field);void 0!==j&&j.length>0&&(0===j.get(j.length-1).options.length&&c(j,"",""),c(j,h,h))}})}},k.prototype.initSearch=function(){p.apply(this,Array.prototype.slice.apply(arguments));var b=this,c=a.isEmptyObject(this.filterColumnsPartial)?null:this.filterColumnsPartial;this.data=c?a.grep(this.data,function(d,e){for(var f in c){var g=b.columns[a.fn.bootstrapTable.utils.getFieldIndex(b.columns,f)],h=c[f].toLowerCase(),i=d[f];if(i=a.fn.bootstrapTable.utils.calculateObjectValue(b.header,b.header.formatters[a.inArray(f,b.header.fields)],[i,d,e],i),g.filterStrictSearch){if(-1===a.inArray(f,b.header.fields)||"string"!=typeof i&&"number"!=typeof i||i.toString().toLowerCase()!==h.toString().toLowerCase())return!1}else if(-1===a.inArray(f,b.header.fields)||"string"!=typeof i&&"number"!=typeof i||-1===(i+"").toLowerCase().indexOf(h))return!1}return!0}):this.data},k.prototype.onColumnSearch=function(b){h(this);var c=a.trim(a(b.currentTarget).val()),d=a(b.currentTarget).parent().parent().parent().data("field");a.isEmptyObject(this.filterColumnsPartial)&&(this.filterColumnsPartial={}),c?this.filterColumnsPartial[d]=c:delete this.filterColumnsPartial[d],this.options.pageNumber=1,this.onSearch(b),this.updatePagination(),this.trigger("column-search",d,c)},k.prototype.clearFilterControl=function(){if(this.options.filterControl&&this.options.filterShowClear){a.each(this.options.values,function(a,b){b.value=""}),i(this);var b=f(this).find(g(this)),c=0;b.length>0&&(this.filterColumnsPartial={},clearTimeout(c),c=setTimeout(function(){a(b[0]).trigger("INPUT"===b[0].tagName?"keyup":"change")},this.options.searchTimeOut))}}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/filter/bootstrap-table-filter.js b/js/table/extensions/filter/bootstrap-table-filter.js
new file mode 100644
index 0000000..14af13d
--- /dev/null
+++ b/js/table/extensions/filter/bootstrap-table-filter.js
@@ -0,0 +1,67 @@
+/**
+ * @author zhixin wen <wenzhixin2010@gmail.com>
+ * extensions: https://github.com/lukaskral/bootstrap-table-filter
+ */
+
+!function($) {
+
+    'use strict';
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        showFilter: false
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init,
+        _initSearch = BootstrapTable.prototype.initSearch;
+
+    BootstrapTable.prototype.init = function () {
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+
+        var that = this;
+        this.$el.on('load-success.bs.table', function () {
+            if (that.options.showFilter) {
+                $(that.options.toolbar).bootstrapTableFilter({
+                    connectTo: that.$el
+                });
+            }
+        });
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (this.options.sidePagination !== 'server') {
+            if (typeof this.searchCallback === 'function') {
+                this.data = $.grep(this.options.data, this.searchCallback);
+            }
+        }
+    };
+
+    BootstrapTable.prototype.getData = function () {
+        return (this.searchText || this.searchCallback) ? this.data : this.options.data;
+    };
+
+    BootstrapTable.prototype.getColumns = function () {
+        return this.columns;
+    };
+
+    BootstrapTable.prototype.registerSearchCallback = function (callback) {
+        this.searchCallback = callback;
+    };
+
+    BootstrapTable.prototype.updateSearch = function () {
+        this.options.pageNumber = 1;
+        this.initSearch();
+        this.updatePagination();
+    };
+
+    BootstrapTable.prototype.getServerUrl = function () {
+        return (this.options.sidePagination === 'server') ? this.options.url : false;
+    };
+
+    $.fn.bootstrapTable.methods.push('getColumns',
+        'registerSearchCallback', 'updateSearch',
+        'getServerUrl');
+
+}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/filter/bootstrap-table-filter.min.js b/js/table/extensions/filter/bootstrap-table-filter.min.js
new file mode 100644
index 0000000..9d0e057
--- /dev/null
+++ b/js/table/extensions/filter/bootstrap-table-filter.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{showFilter:!1});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.init,d=b.prototype.initSearch;b.prototype.init=function(){c.apply(this,Array.prototype.slice.apply(arguments));var b=this;this.$el.on("load-success.bs.table",function(){b.options.showFilter&&a(b.options.toolbar).bootstrapTableFilter({connectTo:b.$el})})},b.prototype.initSearch=function(){d.apply(this,Array.prototype.slice.apply(arguments)),"server"!==this.options.sidePagination&&"function"==typeof this.searchCallback&&(this.data=a.grep(this.options.data,this.searchCallback))},b.prototype.getData=function(){return this.searchText||this.searchCallback?this.data:this.options.data},b.prototype.getColumns=function(){return this.columns},b.prototype.registerSearchCallback=function(a){this.searchCallback=a},b.prototype.updateSearch=function(){this.options.pageNumber=1,this.initSearch(),this.updatePagination()},b.prototype.getServerUrl=function(){return"server"===this.options.sidePagination?this.options.url:!1},a.fn.bootstrapTable.methods.push("getColumns","registerSearchCallback","updateSearch","getServerUrl")}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/flat-json/bootstrap-table-flat-json.js b/js/table/extensions/flat-json/bootstrap-table-flat-json.js
new file mode 100644
index 0000000..4bbf3a2
--- /dev/null
+++ b/js/table/extensions/flat-json/bootstrap-table-flat-json.js
@@ -0,0 +1,62 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.3.0
+ */
+
+(function ($) {
+    'use strict';
+
+    var flat = function (element, that) {
+        var result = {};
+
+        function recurse(cur, prop) {
+            if (Object(cur) !== cur) {
+                result[prop] = cur;
+            } else if ($.isArray(cur)) {
+                for (var i = 0, l = cur.length; i < l; i++) {
+                    recurse(cur[i], prop ? prop + that.options.flatSeparator + i : "" + i);
+                    if (l == 0) {
+                        result[prop] = [];
+                    }
+                }
+            } else {
+                var isEmpty = true;
+                for (var p in cur) {
+                    isEmpty = false;
+                    recurse(cur[p], prop ? prop + that.options.flatSeparator + p : p);
+                }
+                if (isEmpty) {
+                    result[prop] = {};
+                }
+            }
+        }
+
+        recurse(element, "");
+        return result;
+    };
+
+    var flatHelper = function (data, that) {
+        var flatArray = [];
+
+        $.each(!$.isArray(data) ? [data] : data, function (i, element) {
+            flatArray.push(flat(element, that));
+        });
+        return flatArray;
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        flat: false,
+        flatSeparator: '.'
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initData = BootstrapTable.prototype.initData;
+
+    BootstrapTable.prototype.initData = function (data, type) {
+        if (this.options.flat) {
+            data = flatHelper(data ? data : this.options.data, this);
+        }
+        _initData.apply(this, [data, type]);
+    };
+})(jQuery);
diff --git a/js/table/extensions/flat-json/bootstrap-table-flat-json.min.js b/js/table/extensions/flat-json/bootstrap-table-flat-json.min.js
new file mode 100644
index 0000000..844f542
--- /dev/null
+++ b/js/table/extensions/flat-json/bootstrap-table-flat-json.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=function(b,c){function d(b,f){if(Object(b)!==b)e[f]=b;else if(a.isArray(b))for(var g=0,h=b.length;h>g;g++)d(b[g],f?f+c.options.flatSeparator+g:""+g),0==h&&(e[f]=[]);else{var i=!0;for(var j in b)i=!1,d(b[j],f?f+c.options.flatSeparator+j:j);i&&(e[f]={})}}var e={};return d(b,""),e},c=function(c,d){var e=[];return a.each(a.isArray(c)?c:[c],function(a,c){e.push(b(c,d))}),e};a.extend(a.fn.bootstrapTable.defaults,{flat:!1,flatSeparator:"."});var d=a.fn.bootstrapTable.Constructor,e=d.prototype.initData;d.prototype.initData=function(a,b){this.options.flat&&(a=c(a?a:this.options.data,this)),e.apply(this,[a,b])}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/flatJSON/bootstrap-table-flatJSON.min.js b/js/table/extensions/flatJSON/bootstrap-table-flatJSON.min.js
new file mode 100644
index 0000000..42981f7
--- /dev/null
+++ b/js/table/extensions/flatJSON/bootstrap-table-flatJSON.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.6.0 - 2015-03-03
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{flat:!1});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initData;b.prototype.initData=function(){c.apply(this,Array.prototype.slice.apply(arguments)),this.options.flat&&(this.options.data=d.flatHelper(this.options.data)),"server"===this.options.sidePagination&&(this.data=this.options.data)};var d={flat:function(a){function b(a,d){if(Object(a)!==a)c[d]=a;else if(Array.isArray(a))for(var e=0,f=a.length;f>e;e++)b(a[e],d?d+"."+e:""+e),0==f&&(c[d]=[]);else{var g=!0;for(var h in a)g=!1,b(a[h],d?d+"."+h:h);g&&(c[d]={})}}var c={};return b(a,""),c},flatHelper:function(b){var c=[],e=[];return a.isArray(b)||(e.push(b),b=e),a.each(b,function(a,b){c.push(d.flat(b))}),c}}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/group-by/bootstrap-table-group-by.css b/js/table/extensions/group-by/bootstrap-table-group-by.css
new file mode 100644
index 0000000..fce5a9a
--- /dev/null
+++ b/js/table/extensions/group-by/bootstrap-table-group-by.css
@@ -0,0 +1,53 @@
+table.treetable tbody tr td {
+    cursor: default;
+}
+
+table.treetable span {
+    background-position: center left;
+    background-repeat: no-repeat;
+    padding: .2em 0 .2em 1.5em;
+}
+
+table.treetable tr.collapsed span.indenter a {
+    background-image: url(data:image/png;base64,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);
+    padding-right: 12px;
+}
+
+table.treetable tr.expanded span.indenter a {
+    background-image: url(data:image/png;base64,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);
+    padding-right: 12px;
+}
+
+table.treetable tr.branch {
+    background-color: #f9f9f9;
+}
+
+table.treetable tr.selected {
+    background-color: #3875d7;
+    color: #fff;
+}
+
+table.treetable tr span.indenter a {
+    outline: none; /* Expander shows outline after upgrading to 3.0 (#141) */
+}
+
+table.treetable tr.collapsed.selected span.indenter a {
+    background-image: url(data:image/png;base64,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);
+}
+
+table.treetable tr.expanded.selected span.indenter a {
+    background-image: url(data:image/png;base64,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);
+}
+
+table.treetable tr.accept {
+    background-color: #a3bce4;
+    color: #fff
+}
+
+table.treetable tr.collapsed.accept td span.indenter a {
+    background-image: url(data:image/x-png;base64,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);
+}
+
+table.treetable tr.expanded.accept td span.indenter a {
+    background-image: url(data:image/x-png;base64,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);
+}
\ No newline at end of file
diff --git a/js/table/extensions/group-by/bootstrap-table-group-by.js b/js/table/extensions/group-by/bootstrap-table-group-by.js
new file mode 100644
index 0000000..6f95e61
--- /dev/null
+++ b/js/table/extensions/group-by/bootstrap-table-group-by.js
@@ -0,0 +1,243 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.1.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    var originalRowAttr,
+        dataTTId = 'data-tt-id',
+        dataTTParentId = 'data-tt-parent-id',
+        obj = {},
+        parentId = undefined;
+
+    var getParentRowId = function (that, id) {
+        var parentRows = that.$body.find('tr').not('[' + 'data-tt-parent-id]');
+
+        for (var i = 0; i < parentRows.length; i++) {
+            if (i === id) {
+                return $(parentRows[i]).attr('data-tt-id');
+            }
+        }
+
+        return undefined;
+    };
+
+    var sumData = function (that, data) {
+        var sumRow = {};
+        $.each(data, function (i, row) {
+            if (!row.IsParent) {
+                for (var prop in row) {
+                    if (!isNaN(parseFloat(row[prop]))) {
+                        if (that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, prop)].groupBySumGroup) {
+                            if (sumRow[prop] === undefined) {
+                                sumRow[prop] = 0;
+                            }
+                            sumRow[prop] += +row[prop];
+                        }
+                    }
+                }
+            }
+        });
+        return sumRow;
+    };
+
+    var rowAttr = function (row, index) {
+        //Call the User Defined Function
+        originalRowAttr.apply([row, index]);
+
+        obj[dataTTId.toString()] = index;
+
+        if (!row.IsParent) {
+            obj[dataTTParentId.toString()] = parentId === undefined ? index : parentId;
+        } else {
+            parentId = index;
+            delete obj[dataTTParentId.toString()];
+        }
+
+        return obj;
+    };
+
+    var setObjectKeys = function () {
+        // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
+        Object.keys = function (o) {
+            if (o !== Object(o)) {
+                throw new TypeError('Object.keys called on a non-object');
+            }
+            var k = [],
+                p;
+            for (p in o) {
+                if (Object.prototype.hasOwnProperty.call(o, p)) {
+                    k.push(p);
+                }
+            }
+            return k;
+        }
+    };
+
+    var getDataArrayFromItem = function (that, item) {
+        var itemDataArray = [];
+        for (var i = 0; i < that.options.groupByField.length; i++) {
+            itemDataArray.push(item[that.options.groupByField[i]]);
+        }
+
+        return itemDataArray;
+    };
+
+    var getNewRow = function (that, result, index) {
+        var newRow = {};
+        for (var i = 0; i < that.options.groupByField.length; i++) {
+            newRow[that.options.groupByField[i].toString()] = result[index][0][that.options.groupByField[i]];
+        }
+
+        newRow.IsParent = true;
+
+        return newRow;
+    };
+
+    var groupBy = function (array, f) {
+        var groups = {};
+        $.each(array, function (i, o) {
+            var group = JSON.stringify(f(o));
+            groups[group] = groups[group] || [];
+            groups[group].push(o);
+        });
+        return Object.keys(groups).map(function (group) {
+            return groups[group];
+        });
+    };
+
+    var makeGrouped = function (that, data) {
+        var newData = [],
+            sumRow = {};
+
+        var result = groupBy(data, function (item) {
+            return getDataArrayFromItem(that, item);
+        });
+
+        for (var i = 0; i < result.length; i++) {
+            result[i].unshift(getNewRow(that, result, i));
+            if (that.options.groupBySumGroup) {
+                sumRow = sumData(that, result[i]);
+                if (!$.isEmptyObject(sumRow)) {
+                    result[i].push(sumRow);
+                }
+            }
+        }
+
+        newData = newData.concat.apply(newData, result);
+
+        if (!that.options.loaded && newData.length > 0) {
+            that.options.loaded = true;
+            that.options.originalData = that.options.data;
+            that.options.data = newData;
+        }
+
+        return newData;
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        groupBy: false,
+        groupByField: [],
+        groupBySumGroup: false,
+        groupByInitExpanded: undefined, //node, 'all'
+        //internal variables
+        loaded: false,
+        originalData: undefined
+    });
+
+    $.fn.bootstrapTable.methods.push('collapseAll', 'expandAll', 'refreshGroupByField');
+
+    $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
+        groupBySumGroup: false
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init,
+        _initData = BootstrapTable.prototype.initData;
+
+    BootstrapTable.prototype.init = function () {
+        //Temporal validation
+        if (!this.options.sortName) {
+            if ((this.options.groupBy) && (this.options.groupByField.length > 0)) {
+                var that = this;
+
+                // Compatibility: IE < 9 and old browsers
+                if (!Object.keys) {
+                    setObjectKeys();
+                }
+
+                //Make sure that the internal variables are set correctly
+                this.options.loaded = false;
+                this.options.originalData = undefined;
+
+                originalRowAttr = this.options.rowAttributes;
+                this.options.rowAttributes = rowAttr;
+                this.$el.on('post-body.bs.table', function () {
+                    that.$el.treetable({
+                        expandable: true,
+                        onNodeExpand: function () {
+                            if (that.options.height) {
+                                that.resetHeader();
+                            }
+                        },
+                        onNodeCollapse: function () {
+                            if (that.options.height) {
+                                that.resetHeader();
+                            }
+                        }
+                    }, true);
+
+                    if (that.options.groupByInitExpanded !== undefined) {
+                        if (typeof that.options.groupByInitExpanded === 'number') {
+                            that.expandNode(that.options.groupByInitExpanded);
+                        } else if (that.options.groupByInitExpanded.toLowerCase() === 'all') {
+                            that.expandAll();
+                        }
+                    }
+                });
+            }
+        }
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+    };
+
+    BootstrapTable.prototype.initData = function (data, type) {
+        //Temporal validation
+        if (!this.options.sortName) {
+            if ((this.options.groupBy) && (this.options.groupByField.length > 0)) {
+
+                this.options.groupByField = typeof this.options.groupByField === 'string' ?
+                    this.options.groupByField.replace('[', '').replace(']', '')
+                        .replace(/ /g, '').toLowerCase().split(',') : this.options.groupByField;
+
+                data = makeGrouped(this, data ? data : this.options.data);
+            }
+        }
+        _initData.apply(this, [data, type]);
+    };
+
+    BootstrapTable.prototype.expandAll = function () {
+        this.$el.treetable('expandAll');
+    };
+
+    BootstrapTable.prototype.collapseAll = function () {
+        this.$el.treetable('collapseAll');
+    };
+
+    BootstrapTable.prototype.expandNode = function (id) {
+        id = getParentRowId(this, id);
+        if (id !== undefined) {
+            this.$el.treetable('expandNode', id);
+        }
+    };
+
+    BootstrapTable.prototype.refreshGroupByField = function (groupByFields) {
+        if (!$.fn.bootstrapTable.utils.compareObjects(this.options.groupByField, groupByFields)) {
+            this.options.groupByField = groupByFields;
+            this.load(this.options.originalData);
+        }
+    };
+}(jQuery);
diff --git a/js/table/extensions/group-by/bootstrap-table-group-by.min.js b/js/table/extensions/group-by/bootstrap-table-group-by.min.js
new file mode 100644
index 0000000..9d55090
--- /dev/null
+++ b/js/table/extensions/group-by/bootstrap-table-group-by.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b,c="data-tt-id",d="data-tt-parent-id",e={},f=void 0,g=function(b,c){for(var d=b.$body.find("tr").not("[data-tt-parent-id]"),e=0;e<d.length;e++)if(e===c)return a(d[e]).attr("data-tt-id");return void 0},h=function(b,c){var d={};return a.each(c,function(c,e){if(!e.IsParent)for(var f in e)isNaN(parseFloat(e[f]))||b.columns[a.fn.bootstrapTable.utils.getFieldIndex(b.columns,f)].groupBySumGroup&&(void 0===d[f]&&(d[f]=0),d[f]+=+e[f])}),d},i=function(a,g){return b.apply([a,g]),e[c.toString()]=g,a.IsParent?(f=g,delete e[d.toString()]):e[d.toString()]=void 0===f?g:f,e},j=function(){Object.keys=function(a){if(a!==Object(a))throw new TypeError("Object.keys called on a non-object");var b,c=[];for(b in a)Object.prototype.hasOwnProperty.call(a,b)&&c.push(b);return c}},k=function(a,b){for(var c=[],d=0;d<a.options.groupByField.length;d++)c.push(b[a.options.groupByField[d]]);return c},l=function(a,b,c){for(var d={},e=0;e<a.options.groupByField.length;e++)d[a.options.groupByField[e].toString()]=b[c][0][a.options.groupByField[e]];return d.IsParent=!0,d},m=function(b,c){var d={};return a.each(b,function(a,b){var e=JSON.stringify(c(b));d[e]=d[e]||[],d[e].push(b)}),Object.keys(d).map(function(a){return d[a]})},n=function(b,c){for(var d=[],e={},f=m(c,function(a){return k(b,a)}),g=0;g<f.length;g++)f[g].unshift(l(b,f,g)),b.options.groupBySumGroup&&(e=h(b,f[g]),a.isEmptyObject(e)||f[g].push(e));return d=d.concat.apply(d,f),!b.options.loaded&&d.length>0&&(b.options.loaded=!0,b.options.originalData=b.options.data,b.options.data=d),d};a.extend(a.fn.bootstrapTable.defaults,{groupBy:!1,groupByField:[],groupBySumGroup:!1,groupByInitExpanded:void 0,loaded:!1,originalData:void 0}),a.fn.bootstrapTable.methods.push("collapseAll","expandAll","refreshGroupByField"),a.extend(a.fn.bootstrapTable.COLUMN_DEFAULTS,{groupBySumGroup:!1});var o=a.fn.bootstrapTable.Constructor,p=o.prototype.init,q=o.prototype.initData;o.prototype.init=function(){if(!this.options.sortName&&this.options.groupBy&&this.options.groupByField.length>0){var a=this;Object.keys||j(),this.options.loaded=!1,this.options.originalData=void 0,b=this.options.rowAttributes,this.options.rowAttributes=i,this.$el.on("post-body.bs.table",function(){a.$el.treetable({expandable:!0,onNodeExpand:function(){a.options.height&&a.resetHeader()},onNodeCollapse:function(){a.options.height&&a.resetHeader()}},!0),void 0!==a.options.groupByInitExpanded&&("number"==typeof a.options.groupByInitExpanded?a.expandNode(a.options.groupByInitExpanded):"all"===a.options.groupByInitExpanded.toLowerCase()&&a.expandAll())})}p.apply(this,Array.prototype.slice.apply(arguments))},o.prototype.initData=function(a,b){this.options.sortName||this.options.groupBy&&this.options.groupByField.length>0&&(this.options.groupByField="string"==typeof this.options.groupByField?this.options.groupByField.replace("[","").replace("]","").replace(/ /g,"").toLowerCase().split(","):this.options.groupByField,a=n(this,a?a:this.options.data)),q.apply(this,[a,b])},o.prototype.expandAll=function(){this.$el.treetable("expandAll")},o.prototype.collapseAll=function(){this.$el.treetable("collapseAll")},o.prototype.expandNode=function(a){a=g(this,a),void 0!==a&&this.$el.treetable("expandNode",a)},o.prototype.refreshGroupByField=function(b){a.fn.bootstrapTable.utils.compareObjects(this.options.groupByField,b)||(this.options.groupByField=b,this.load(this.options.originalData))}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/key-events/bootstrap-table-key-events.js b/js/table/extensions/key-events/bootstrap-table-key-events.js
new file mode 100644
index 0000000..887f803
--- /dev/null
+++ b/js/table/extensions/key-events/bootstrap-table-key-events.js
@@ -0,0 +1,80 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ *
+ * @update zhixin wen <wenzhixin2010@gmail.com>
+ */
+
+!function ($) {
+
+    'use strict';
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        keyEvents: false
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init;
+
+    BootstrapTable.prototype.init = function () {
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+        this.initKeyEvents();
+    };
+
+    BootstrapTable.prototype.initKeyEvents = function () {
+        if (this.options.keyEvents) {
+            var that = this;
+
+            $(document).off('keydown').on('keydown', function (e) {
+                var $search = that.$toolbar.find('.search input'),
+                    $refresh = that.$toolbar.find('button[name="refresh"]'),
+                    $toggle = that.$toolbar.find('button[name="toggle"]'),
+                    $paginationSwitch = that.$toolbar.find('button[name="paginationSwitch"]');
+
+                if (document.activeElement === $search.get(0)) {
+                    return true;
+                }
+
+                switch (e.keyCode) {
+                    case 83: //s
+                        if (!that.options.search) {
+                            return;
+                        }
+                        $search.focus();
+                        return false;
+                    case 82: //r
+                        if (!that.options.showRefresh) {
+                            return;
+                        }
+                        $refresh.click();
+                        return false;
+                    case 84: //t
+                        if (!that.options.showToggle) {
+                            return;
+                        }
+                        $toggle.click();
+                        return false;
+                    case 80: //p
+                        if (!that.options.showPaginationSwitch) {
+                            return;
+                        }
+                        $paginationSwitch.click();
+                        return false;
+                    case 37: // left
+                        if (!that.options.pagination) {
+                            return;
+                        }
+                        that.prevPage();
+                        return false;
+                    case 39: // right
+                        if (!that.options.pagination) {
+                            return;
+                        }
+                        that.nextPage();
+                        return;
+                }
+            });
+        }
+    };
+}(jQuery);
diff --git a/js/table/extensions/key-events/bootstrap-table-key-events.min.js b/js/table/extensions/key-events/bootstrap-table-key-events.min.js
new file mode 100644
index 0000000..db1561a
--- /dev/null
+++ b/js/table/extensions/key-events/bootstrap-table-key-events.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{keyEvents:!1});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.init;b.prototype.init=function(){c.apply(this,Array.prototype.slice.apply(arguments)),this.initKeyEvents()},b.prototype.initKeyEvents=function(){if(this.options.keyEvents){var b=this;a(document).off("keydown").on("keydown",function(a){var c=b.$toolbar.find(".search input"),d=b.$toolbar.find('button[name="refresh"]'),e=b.$toolbar.find('button[name="toggle"]'),f=b.$toolbar.find('button[name="paginationSwitch"]');if(document.activeElement===c.get(0))return!0;switch(a.keyCode){case 83:if(!b.options.search)return;return c.focus(),!1;case 82:if(!b.options.showRefresh)return;return d.click(),!1;case 84:if(!b.options.showToggle)return;return e.click(),!1;case 80:if(!b.options.showPaginationSwitch)return;return f.click(),!1;case 37:if(!b.options.pagination)return;return b.prevPage(),!1;case 39:if(!b.options.pagination)return;return void b.nextPage()}})}}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/mobile/bootstrap-table-mobile.js b/js/table/extensions/mobile/bootstrap-table-mobile.js
new file mode 100644
index 0000000..5fb6704
--- /dev/null
+++ b/js/table/extensions/mobile/bootstrap-table-mobile.js
@@ -0,0 +1,131 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.1.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    var showHideColumns = function (that, checked) {
+        if (that.options.columnsHidden.length > 0 ) {
+            $.each(that.columns, function (i, column) {
+                if (that.options.columnsHidden.indexOf(column.field) !== -1) {
+                    if (column.visible !== checked) {
+                        that.toggleColumn($.fn.bootstrapTable.utils.getFieldIndex(that.columns, column.field), checked, true);
+                    }
+                }
+            });
+        }
+    };
+
+    var resetView = function (that) {
+        if (that.options.height || that.options.showFooter) {
+            setTimeout(function(){
+                that.resetView.call(that);
+            }, 1);
+        }
+    };
+
+    var changeView = function (that, width, height) {
+        if (that.options.minHeight) {
+            if ((width <= that.options.minWidth) && (height <= that.options.minHeight)) {
+                conditionCardView(that);
+            } else if ((width > that.options.minWidth) && (height > that.options.minHeight)) {
+                conditionFullView(that);
+            }
+        } else {
+            if (width <= that.options.minWidth) {
+                conditionCardView(that);
+            } else if (width > that.options.minWidth) {
+                conditionFullView(that);
+            }
+        }
+
+        resetView(that);
+    };
+
+    var conditionCardView = function (that) {
+        changeTableView(that, false);
+        showHideColumns(that, false);
+    };
+
+    var conditionFullView = function (that) {
+        changeTableView(that, true);
+        showHideColumns(that, true);
+    };
+
+    var changeTableView = function (that, cardViewState) {
+        that.options.cardView = cardViewState;
+        that.toggleView();
+    };
+
+    var debounce = function(func,wait) {
+        var timeout;
+        return function() {
+            var context = this,
+                args = arguments;
+            var later = function() {
+                timeout = null;
+                func.apply(context,args);
+            };
+            clearTimeout(timeout);
+            timeout = setTimeout(later, wait);
+        };
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        mobileResponsive: false,
+        minWidth: 562,
+        minHeight: undefined,
+        heightThreshold: 100, // just slightly larger than mobile chrome's auto-hiding toolbar
+        checkOnInit: true,
+        columnsHidden: []
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init;
+
+    BootstrapTable.prototype.init = function () {
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.mobileResponsive) {
+            return;
+        }
+
+        if (!this.options.minWidth) {
+            return;
+        }
+
+        var that = this,
+            old = {
+                width: $(window).width(),
+                height: $(window).height()
+            };
+
+        $(window).on('resize orientationchange',debounce(function (evt) {
+            // reset view if height has only changed by at least the threshold.
+            var height = $(this).height(),
+                width = $(this).width();
+
+            if (Math.abs(old.height - height) > that.options.heightThreshold || old.width != width) {
+                changeView(that, width, height);
+                old = {
+                    width: width,
+                    height: height
+                };
+            }
+        },200));
+
+        if (this.options.checkOnInit) {
+            var height = $(window).height(),
+                width = $(window).width();
+            changeView(this, width, height);
+            old = {
+                width: width,
+                height: height
+            };
+        }
+    };
+}(jQuery);
diff --git a/js/table/extensions/mobile/bootstrap-table-mobile.min.js b/js/table/extensions/mobile/bootstrap-table-mobile.min.js
new file mode 100644
index 0000000..c693a82
--- /dev/null
+++ b/js/table/extensions/mobile/bootstrap-table-mobile.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=function(b,c){b.options.columnsHidden.length>0&&a.each(b.columns,function(d,e){-1!==b.options.columnsHidden.indexOf(e.field)&&e.visible!==c&&b.toggleColumn(a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e.field),c,!0)})},c=function(a){(a.options.height||a.options.showFooter)&&setTimeout(function(){a.resetView.call(a)},1)},d=function(a,b,d){a.options.minHeight?b<=a.options.minWidth&&d<=a.options.minHeight?e(a):b>a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if(j.apply(this,Array.prototype.slice.apply(arguments)),this.options.mobileResponsive&&this.options.minWidth){var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on("resize orientationchange",h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/multiple-search/bootstrap-table-multiple-search.js b/js/table/extensions/multiple-search/bootstrap-table-multiple-search.js
new file mode 100644
index 0000000..22df2ae
--- /dev/null
+++ b/js/table/extensions/multiple-search/bootstrap-table-multiple-search.js
@@ -0,0 +1,67 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        multipleSearch: false
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initSearch = BootstrapTable.prototype.initSearch;
+
+    BootstrapTable.prototype.initSearch = function () {
+        if (this.options.multipleSearch) {
+            var strArray = this.searchText.split(" "),
+                that = this,
+                f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns,
+                dataFiltered = [];
+
+            if (strArray.length === 1) {
+                _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+            } else {
+                for (var i = 0; i < strArray.length; i++) {
+                    var str = strArray[i].trim();
+                    dataFiltered = str ? $.grep(dataFiltered.length === 0 ? this.options.data : dataFiltered, function (item, i) {
+                        for (var key in item) {
+                            key = $.isNumeric(key) ? parseInt(key, 10) : key;
+                            var value = item[key],
+                                column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, key)],
+                                j = $.inArray(key, that.header.fields);
+
+                            // Fix #142: search use formated data
+                            if (column && column.searchFormatter) {
+                                value = $.fn.bootstrapTable.utils.calculateObjectValue(column,
+                                    that.header.formatters[j], [value, item, i], value);
+                            }
+
+                            var index = $.inArray(key, that.header.fields);
+                            if (index !== -1 && that.header.searchables[index] && (typeof value === 'string' || typeof value === 'number')) {
+                                if (that.options.strictSearch) {
+                                    if ((value + '').toLowerCase() === str) {
+                                        return true;
+                                    }
+                                } else {
+                                    if ((value + '').toLowerCase().indexOf(str) !== -1) {
+                                        return true;
+                                    }
+                                }
+                            }
+                        }
+                        return false;
+                    }) : this.data;
+                }
+
+                this.data = dataFiltered;
+            }
+        } else {
+            _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+        }
+    };
+
+}(jQuery);
diff --git a/js/table/extensions/multiple-search/bootstrap-table-multiple-search.min.js b/js/table/extensions/multiple-search/bootstrap-table-multiple-search.min.js
new file mode 100644
index 0000000..49cbf7c
--- /dev/null
+++ b/js/table/extensions/multiple-search/bootstrap-table-multiple-search.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{multipleSearch:!1});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initSearch;b.prototype.initSearch=function(){if(this.options.multipleSearch){var b=this.searchText.split(" "),d=this,e=(a.isEmptyObject(this.filterColumns)?null:this.filterColumns,[]);if(1===b.length)c.apply(this,Array.prototype.slice.apply(arguments));else{for(var f=0;f<b.length;f++){var g=b[f].trim();e=g?a.grep(0===e.length?this.options.data:e,function(b,c){for(var e in b){e=a.isNumeric(e)?parseInt(e,10):e;var f=b[e],h=d.columns[a.fn.bootstrapTable.utils.getFieldIndex(d.columns,e)],i=a.inArray(e,d.header.fields);h&&h.searchFormatter&&(f=a.fn.bootstrapTable.utils.calculateObjectValue(h,d.header.formatters[i],[f,b,c],f));var j=a.inArray(e,d.header.fields);if(-1!==j&&d.header.searchables[j]&&("string"==typeof f||"number"==typeof f))if(d.options.strictSearch){if((f+"").toLowerCase()===g)return!0}else if(-1!==(f+"").toLowerCase().indexOf(g))return!0}return!1}):this.data}this.data=e}}else c.apply(this,Array.prototype.slice.apply(arguments))}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.js b/js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.js
new file mode 100644
index 0000000..68f6a52
--- /dev/null
+++ b/js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.js
@@ -0,0 +1,378 @@
+/**
+ * @author Nadim Basalamah <dimbslmh@gmail.com>
+ * @version: v1.0.0
+ * https://github.com/dimbslmh/bootstrap-table/tree/master/src/extensions/multiple-sort/bootstrap-table-multiple-sort.js
+ */
+
+(function($) {
+    'use strict';
+
+    var isSingleSort = false;
+
+    var sort_order = {
+        asc: 'Ascending',
+        desc: 'Descending'
+    };
+
+    var showSortModal = function(that) {
+        var _selector = that.$sortModal.selector,
+            _id = _selector.substr(1);
+
+        if (!$(_id).hasClass("modal")) {
+            var sModal = '  <div class="modal fade" id="' + _id + '" tabindex="-1" role="dialog" aria-labelledby="' + _id + 'Label" aria-hidden="true">';
+            sModal += '         <div class="modal-dialog">';
+            sModal += '             <div class="modal-content">';
+            sModal += '                 <div class="modal-header">';
+            sModal += '                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
+            sModal += '                     <h4 class="modal-title" id="' + _id + 'Label">' + that.options.formatMultipleSort() + '</h4>';
+            sModal += '                 </div>';
+            sModal += '                 <div class="modal-body">';
+            sModal += '                     <div class="bootstrap-table">';
+            sModal += '                         <div class="fixed-table-toolbar">';
+            sModal += '                             <div class="bars">';
+            sModal += '                                 <div id="toolbar">';
+            sModal += '                                     <button id="add" type="button" class="btn btn-default"><i class="' + that.options.iconsPrefix + ' ' + that.options.icons.plus + '"></i> ' + that.options.formatAddLevel() + '</button>';
+            sModal += '                                     <button id="delete" type="button" class="btn btn-default" disabled><i class="' + that.options.iconsPrefix + ' ' + that.options.icons.minus + '"></i> ' + that.options.formatDeleteLevel() + '</button>';
+            sModal += '                                 </div>';
+            sModal += '                             </div>';
+            sModal += '                         </div>';
+            sModal += '                         <div class="fixed-table-container">';
+            sModal += '                             <table id="multi-sort" class="table">';
+            sModal += '                                 <thead>';
+            sModal += '                                     <tr>';
+            sModal += '                                         <th></th>';
+            sModal += '                                         <th><div class="th-inner">' + that.options.formatColumn() + '</div></th>';
+            sModal += '                                         <th><div class="th-inner">' + that.options.formatOrder() + '</div></th>';
+            sModal += '                                     </tr>';
+            sModal += '                                 </thead>';
+            sModal += '                                 <tbody></tbody>';
+            sModal += '                             </table>';
+            sModal += '                         </div>';
+            sModal += '                     </div>';
+            sModal += '                 </div>';
+            sModal += '                 <div class="modal-footer">';
+            sModal += '                     <button type="button" class="btn btn-default" data-dismiss="modal">' + that.options.formatCancel() + '</button>';
+            sModal += '                     <button type="button" class="btn btn-primary">' + that.options.formatSort() + '</button>';
+            sModal += '                 </div>';
+            sModal += '             </div>';
+            sModal += '         </div>';
+            sModal += '     </div>';
+
+            $("body").append($(sModal));
+
+            that.$sortModal = $(_selector);
+            var $rows = that.$sortModal.find("tbody > tr");
+
+            that.$sortModal.off('click', '#add').on('click', '#add', function() {
+                var total = that.$sortModal.find('.multi-sort-name:first option').length,
+                    current = that.$sortModal.find('tbody tr').length;
+
+                if (current < total) {
+                    current++;
+                    that.addLevel();
+                    that.setButtonStates();
+                }
+            });
+
+            that.$sortModal.off('click', '#delete').on('click', '#delete', function() {
+                var total = that.$sortModal.find('.multi-sort-name:first option').length,
+                    current = that.$sortModal.find('tbody tr').length;
+
+                if (current > 1 && current <= total) {
+                    current--;
+                    that.$sortModal.find('tbody tr:last').remove();
+                    that.setButtonStates();
+                }
+            });
+
+            that.$sortModal.off('click', '.btn-primary').on('click', '.btn-primary', function() {
+                var $rows = that.$sortModal.find("tbody > tr"),
+                    $alert = that.$sortModal.find('div.alert'),
+                    fields = [],
+                    results = [];
+
+
+                that.options.sortPriority = $.map($rows, function(row) {
+                    var $row = $(row),
+                        name = $row.find('.multi-sort-name').val(),
+                        order = $row.find('.multi-sort-order').val();
+
+                    fields.push(name);
+
+                    return {
+                        sortName: name,
+                        sortOrder: order
+                    };
+                });
+
+                var sorted_fields = fields.sort();
+
+                for (var i = 0; i < fields.length - 1; i++) {
+                    if (sorted_fields[i + 1] == sorted_fields[i]) {
+                        results.push(sorted_fields[i]);
+                    }
+                }
+
+                if (results.length > 0) {
+                    if ($alert.length === 0) {
+                        $alert = '<div class="alert alert-danger" role="alert"><strong>' + that.options.formatDuplicateAlertTitle() + '</strong> ' + that.options.formatDuplicateAlertDescription() + '</div>';
+                        $($alert).insertBefore(that.$sortModal.find('.bars'));
+                    }
+                } else {
+                    if ($alert.length === 1) {
+                        $($alert).remove();
+                    }
+
+                    that.options.sortName = "";
+                    that.onMultipleSort();
+                    that.$sortModal.modal('hide');
+                }
+            });
+
+            if (that.options.sortPriority === null || that.options.sortPriority.length === 0) {
+                if (that.options.sortName) {
+                    that.options.sortPriority = [{
+                        sortName: that.options.sortName,
+                        sortOrder: that.options.sortOrder
+                    }];
+                }
+            }
+
+            if (that.options.sortPriority !== null && that.options.sortPriority.length > 0) {
+                if ($rows.length < that.options.sortPriority.length && typeof that.options.sortPriority === 'object') {
+                    for (var i = 0; i < that.options.sortPriority.length; i++) {
+                        that.addLevel(i, that.options.sortPriority[i]);
+                    }
+                }
+            } else {
+                that.addLevel(0);
+            }
+
+            that.setButtonStates();
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        showMultiSort: false,
+        sortPriority: null,
+        onMultipleSort: function() {
+            return false;
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.defaults.icons, {
+        sort: 'glyphicon-sort',
+        plus: 'glyphicon-plus',
+        minus: 'glyphicon-minus'
+    });
+
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'multiple-sort.bs.table': 'onMultipleSort'
+    });
+
+    $.extend($.fn.bootstrapTable.locales, {
+        formatMultipleSort: function() {
+            return 'Multiple Sort';
+        },
+        formatAddLevel: function() {
+            return "Add Level";
+        },
+        formatDeleteLevel: function() {
+            return "Delete Level";
+        },
+        formatColumn: function() {
+            return "Column";
+        },
+        formatOrder: function() {
+            return "Order";
+        },
+        formatSortBy: function() {
+            return "Sort by";
+        },
+        formatThenBy: function() {
+            return "Then by";
+        },
+        formatSort: function() {
+            return "Sort";
+        },
+        formatCancel: function() {
+            return "Cancel";
+        },
+        formatDuplicateAlertTitle: function() {
+            return "Duplicate(s) detected!";
+        },
+        formatDuplicateAlertDescription: function() {
+            return "Please remove or change any duplicate column.";
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initToolbar = BootstrapTable.prototype.initToolbar;
+
+    BootstrapTable.prototype.initToolbar = function() {
+        this.showToolbar = true;
+        var that = this,
+            sortModalId = '#sortModal_' + this.$el.attr('id');
+        this.$sortModal = $(sortModalId);
+
+        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (this.options.showMultiSort) {
+            var $btnGroup = this.$toolbar.find('>.btn-group').first(),
+                $multiSortBtn = this.$toolbar.find('div.multi-sort');
+
+            if (!$multiSortBtn.length) {
+                $multiSortBtn = '  <button class="multi-sort btn btn-default' + (this.options.iconSize === undefined ? '' : ' btn-' + this.options.iconSize) + '" type="button" data-toggle="modal" data-target="' + sortModalId + '" title="' + this.options.formatMultipleSort() + '">';
+                $multiSortBtn += '     <i class="' + this.options.iconsPrefix + ' ' + this.options.icons.sort + '"></i>';
+                $multiSortBtn += '</button>';
+
+                $btnGroup.append($multiSortBtn);
+
+                showSortModal(that);
+            }
+
+            this.$el.on('sort.bs.table', function() {
+                isSingleSort = true;
+            });
+
+            this.$el.on('multiple-sort.bs.table', function() {
+                isSingleSort = false;
+            });
+
+            this.$el.on('load-success.bs.table', function() {
+                if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object') {
+                    that.onMultipleSort();
+                }
+            });
+
+            this.$el.on('column-switch.bs.table', function(field, checked) {
+                for (var i = 0; i < that.options.sortPriority.length; i++) {
+                    if (that.options.sortPriority[i].sortName === checked) {
+                        that.options.sortPriority.splice(i, 1);
+                    }
+                }
+
+                that.assignSortableArrows();
+                that.$sortModal.remove();
+                showSortModal(that);
+            });
+
+            this.$el.on('reset-view.bs.table', function() {
+                if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object') {
+                    that.assignSortableArrows();
+                }
+            });
+        }
+    };
+
+    BootstrapTable.prototype.onMultipleSort = function() {
+        var that = this;
+
+        var cmp = function(x, y) {
+            return x > y ? 1 : x < y ? -1 : 0;
+        };
+
+        var arrayCmp = function(a, b) {
+            var arr1 = [],
+                arr2 = [];
+
+            for (var i = 0; i < that.options.sortPriority.length; i++) {
+                var order = that.options.sortPriority[i].sortOrder === 'desc' ? -1 : 1,
+                    aa = a[that.options.sortPriority[i].sortName],
+                    bb = b[that.options.sortPriority[i].sortName];
+
+                if (aa === undefined || aa === null) {
+                    aa = '';
+                }
+                if (bb === undefined || bb === null) {
+                    bb = '';
+                }
+                if ($.isNumeric(aa) && $.isNumeric(bb)) {
+                    aa = parseFloat(aa);
+                    bb = parseFloat(bb);
+                }
+                if (typeof aa !== 'string') {
+                    aa = aa.toString();
+                }
+
+                arr1.push(
+                    order * cmp(aa, bb));
+                arr2.push(
+                    order * cmp(bb, aa));
+            }
+
+            return cmp(arr1, arr2);
+        };
+
+        this.data.sort(function(a, b) {
+            return arrayCmp(a, b);
+        });
+
+        this.initBody();
+        this.assignSortableArrows();
+        this.trigger('multiple-sort');
+    };
+
+    BootstrapTable.prototype.addLevel = function(index, sortPriority) {
+        var text = index === 0 ? this.options.formatSortBy() : this.options.formatThenBy();
+
+        this.$sortModal.find('tbody')
+            .append($('<tr>')
+                .append($('<td>').text(text))
+                .append($('<td>').append($('<select class="form-control multi-sort-name">')))
+                .append($('<td>').append($('<select class="form-control multi-sort-order">')))
+        );
+
+        var $multiSortName = this.$sortModal.find('.multi-sort-name').last(),
+            $multiSortOrder = this.$sortModal.find('.multi-sort-order').last();
+
+        $.each(this.columns, function (i, column) {
+            if (column.sortable === false || column.visible === false) {
+                return true;
+            }
+            $multiSortName.append('<option value="' + column.field + '">' + column.title + '</option>');
+        });
+
+        $.each(sort_order, function(value, order) {
+            $multiSortOrder.append('<option value="' + value + '">' + order + '</option>');
+        });
+
+        if (sortPriority !== undefined) {
+            $multiSortName.find('option[value="' + sortPriority.sortName + '"]').attr("selected", true);
+            $multiSortOrder.find('option[value="' + sortPriority.sortOrder + '"]').attr("selected", true);
+        }
+    };
+
+    BootstrapTable.prototype.assignSortableArrows = function() {
+        var that = this,
+            headers = that.$header.find('th');
+
+        for (var i = 0; i < headers.length; i++) {
+            for (var c = 0; c < that.options.sortPriority.length; c++) {
+                if ($(headers[i]).data('field') === that.options.sortPriority[c].sortName) {
+                    $(headers[i]).find('.sortable').removeClass('desc asc').addClass(that.options.sortPriority[c].sortOrder);
+                }
+            }
+        }
+    };
+
+    BootstrapTable.prototype.setButtonStates = function() {
+        var total = this.$sortModal.find('.multi-sort-name:first option').length,
+            current = this.$sortModal.find('tbody tr').length;
+
+        if (current == total) {
+            this.$sortModal.find('#add').attr('disabled', 'disabled');
+        }
+        if (current > 1) {
+            this.$sortModal.find('#delete').removeAttr('disabled');
+        }
+        if (current < total) {
+            this.$sortModal.find('#add').removeAttr('disabled');
+        }
+        if (current == 1) {
+            this.$sortModal.find('#delete').attr('disabled', 'disabled');
+        }
+    };
+})(jQuery);
diff --git a/js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js b/js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js
new file mode 100644
index 0000000..a8cb610
--- /dev/null
+++ b/js/table/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=!1,c={asc:"Ascending",desc:"Descending"},d=function(b){var c=b.$sortModal.selector,d=c.substr(1);if(!a(d).hasClass("modal")){var e='  <div class="modal fade" id="'+d+'" tabindex="-1" role="dialog" aria-labelledby="'+d+'Label" aria-hidden="true">';e+='         <div class="modal-dialog">',e+='             <div class="modal-content">',e+='                 <div class="modal-header">',e+='                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>',e+='                     <h4 class="modal-title" id="'+d+'Label">'+b.options.formatMultipleSort()+"</h4>",e+="                 </div>",e+='                 <div class="modal-body">',e+='                     <div class="bootstrap-table">',e+='                         <div class="fixed-table-toolbar">',e+='                             <div class="bars">',e+='                                 <div id="toolbar">',e+='                                     <button id="add" type="button" class="btn btn-default"><i class="'+b.options.iconsPrefix+" "+b.options.icons.plus+'"></i> '+b.options.formatAddLevel()+"</button>",e+='                                     <button id="delete" type="button" class="btn btn-default" disabled><i class="'+b.options.iconsPrefix+" "+b.options.icons.minus+'"></i> '+b.options.formatDeleteLevel()+"</button>",e+="                                 </div>",e+="                             </div>",e+="                         </div>",e+='                         <div class="fixed-table-container">',e+='                             <table id="multi-sort" class="table">',e+="                                 <thead>",e+="                                     <tr>",e+="                                         <th></th>",e+='                                         <th><div class="th-inner">'+b.options.formatColumn()+"</div></th>",e+='                                         <th><div class="th-inner">'+b.options.formatOrder()+"</div></th>",e+="                                     </tr>",e+="                                 </thead>",e+="                                 <tbody></tbody>",e+="                             </table>",e+="                         </div>",e+="                     </div>",e+="                 </div>",e+='                 <div class="modal-footer">',e+='                     <button type="button" class="btn btn-default" data-dismiss="modal">'+b.options.formatCancel()+"</button>",e+='                     <button type="button" class="btn btn-primary">'+b.options.formatSort()+"</button>",e+="                 </div>",e+="             </div>",e+="         </div>",e+="     </div>",a("body").append(a(e)),b.$sortModal=a(c);var f=b.$sortModal.find("tbody > tr");if(b.$sortModal.off("click","#add").on("click","#add",function(){var a=b.$sortModal.find(".multi-sort-name:first option").length,c=b.$sortModal.find("tbody tr").length;a>c&&(c++,b.addLevel(),b.setButtonStates())}),b.$sortModal.off("click","#delete").on("click","#delete",function(){var a=b.$sortModal.find(".multi-sort-name:first option").length,c=b.$sortModal.find("tbody tr").length;c>1&&a>=c&&(c--,b.$sortModal.find("tbody tr:last").remove(),b.setButtonStates())}),b.$sortModal.off("click",".btn-primary").on("click",".btn-primary",function(){var c=b.$sortModal.find("tbody > tr"),d=b.$sortModal.find("div.alert"),e=[],f=[];b.options.sortPriority=a.map(c,function(b){var c=a(b),d=c.find(".multi-sort-name").val(),f=c.find(".multi-sort-order").val();return e.push(d),{sortName:d,sortOrder:f}});for(var g=e.sort(),h=0;h<e.length-1;h++)g[h+1]==g[h]&&f.push(g[h]);f.length>0?0===d.length&&(d='<div class="alert alert-danger" role="alert"><strong>'+b.options.formatDuplicateAlertTitle()+"</strong> "+b.options.formatDuplicateAlertDescription()+"</div>",a(d).insertBefore(b.$sortModal.find(".bars"))):(1===d.length&&a(d).remove(),b.options.sortName="",b.onMultipleSort(),b.$sortModal.modal("hide"))}),(null===b.options.sortPriority||0===b.options.sortPriority.length)&&b.options.sortName&&(b.options.sortPriority=[{sortName:b.options.sortName,sortOrder:b.options.sortOrder}]),null!==b.options.sortPriority&&b.options.sortPriority.length>0){if(f.length<b.options.sortPriority.length&&"object"==typeof b.options.sortPriority)for(var g=0;g<b.options.sortPriority.length;g++)b.addLevel(g,b.options.sortPriority[g])}else b.addLevel(0);b.setButtonStates()}};a.extend(a.fn.bootstrapTable.defaults,{showMultiSort:!1,sortPriority:null,onMultipleSort:function(){return!1}}),a.extend(a.fn.bootstrapTable.defaults.icons,{sort:"glyphicon-sort",plus:"glyphicon-plus",minus:"glyphicon-minus"}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"multiple-sort.bs.table":"onMultipleSort"}),a.extend(a.fn.bootstrapTable.locales,{formatMultipleSort:function(){return"Multiple Sort"},formatAddLevel:function(){return"Add Level"},formatDeleteLevel:function(){return"Delete Level"},formatColumn:function(){return"Column"},formatOrder:function(){return"Order"},formatSortBy:function(){return"Sort by"},formatThenBy:function(){return"Then by"},formatSort:function(){return"Sort"},formatCancel:function(){return"Cancel"},formatDuplicateAlertTitle:function(){return"Duplicate(s) detected!"},formatDuplicateAlertDescription:function(){return"Please remove or change any duplicate column."}}),a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales);var e=a.fn.bootstrapTable.Constructor,f=e.prototype.initToolbar;e.prototype.initToolbar=function(){this.showToolbar=!0;var c=this,e="#sortModal_"+this.$el.attr("id");if(this.$sortModal=a(e),f.apply(this,Array.prototype.slice.apply(arguments)),this.options.showMultiSort){var g=this.$toolbar.find(">.btn-group").first(),h=this.$toolbar.find("div.multi-sort");h.length||(h='  <button class="multi-sort btn btn-default'+(void 0===this.options.iconSize?"":" btn-"+this.options.iconSize)+'" type="button" data-toggle="modal" data-target="'+e+'" title="'+this.options.formatMultipleSort()+'">',h+='     <i class="'+this.options.iconsPrefix+" "+this.options.icons.sort+'"></i>',h+="</button>",g.append(h),d(c)),this.$el.on("sort.bs.table",function(){b=!0}),this.$el.on("multiple-sort.bs.table",function(){b=!1}),this.$el.on("load-success.bs.table",function(){b||null===c.options.sortPriority||"object"!=typeof c.options.sortPriority||c.onMultipleSort()}),this.$el.on("column-switch.bs.table",function(a,b){for(var e=0;e<c.options.sortPriority.length;e++)c.options.sortPriority[e].sortName===b&&c.options.sortPriority.splice(e,1);c.assignSortableArrows(),c.$sortModal.remove(),d(c)}),this.$el.on("reset-view.bs.table",function(){b||null===c.options.sortPriority||"object"!=typeof c.options.sortPriority||c.assignSortableArrows()})}},e.prototype.onMultipleSort=function(){var b=this,c=function(a,b){return a>b?1:b>a?-1:0},d=function(d,e){for(var f=[],g=[],h=0;h<b.options.sortPriority.length;h++){var i="desc"===b.options.sortPriority[h].sortOrder?-1:1,j=d[b.options.sortPriority[h].sortName],k=e[b.options.sortPriority[h].sortName];(void 0===j||null===j)&&(j=""),(void 0===k||null===k)&&(k=""),a.isNumeric(j)&&a.isNumeric(k)&&(j=parseFloat(j),k=parseFloat(k)),"string"!=typeof j&&(j=j.toString()),f.push(i*c(j,k)),g.push(i*c(k,j))}return c(f,g)};this.data.sort(function(a,b){return d(a,b)}),this.initBody(),this.assignSortableArrows(),this.trigger("multiple-sort")},e.prototype.addLevel=function(b,d){var e=0===b?this.options.formatSortBy():this.options.formatThenBy();this.$sortModal.find("tbody").append(a("<tr>").append(a("<td>").text(e)).append(a("<td>").append(a('<select class="form-control multi-sort-name">'))).append(a("<td>").append(a('<select class="form-control multi-sort-order">'))));var f=this.$sortModal.find(".multi-sort-name").last(),g=this.$sortModal.find(".multi-sort-order").last();a.each(this.columns,function(a,b){return b.sortable===!1||b.visible===!1?!0:void f.append('<option value="'+b.field+'">'+b.title+"</option>")}),a.each(c,function(a,b){g.append('<option value="'+a+'">'+b+"</option>")}),void 0!==d&&(f.find('option[value="'+d.sortName+'"]').attr("selected",!0),g.find('option[value="'+d.sortOrder+'"]').attr("selected",!0))},e.prototype.assignSortableArrows=function(){for(var b=this,c=b.$header.find("th"),d=0;d<c.length;d++)for(var e=0;e<b.options.sortPriority.length;e++)a(c[d]).data("field")===b.options.sortPriority[e].sortName&&a(c[d]).find(".sortable").removeClass("desc asc").addClass(b.options.sortPriority[e].sortOrder)},e.prototype.setButtonStates=function(){var a=this.$sortModal.find(".multi-sort-name:first option").length,b=this.$sortModal.find("tbody tr").length;b==a&&this.$sortModal.find("#add").attr("disabled","disabled"),b>1&&this.$sortModal.find("#delete").removeAttr("disabled"),a>b&&this.$sortModal.find("#add").removeAttr("disabled"),1==b&&this.$sortModal.find("#delete").attr("disabled","disabled")}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.js b/js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.js
new file mode 100644
index 0000000..8e84eb6
--- /dev/null
+++ b/js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.js
@@ -0,0 +1,47 @@
+/**
+ * @author: Brian Huisman
+ * @webSite: http://www.greywyvern.com
+ * @version: v1.0.0
+ * JS function to allow natural sorting on bootstrap-table columns
+ * just add data-sorter="alphanum" to any th
+ *
+ * @update Dennis Hernández <http://djhvscf.github.io/Blog>
+ */
+
+function alphanum(a, b) {
+  function chunkify(t) {
+    var tz = [],
+        x = 0,
+        y = -1,
+        n = 0,
+        i,
+        j;
+
+    while (i = (j = t.charAt(x++)).charCodeAt(0)) {
+      var m = (i === 46 || (i >= 48 && i <= 57));
+      if (m !== n) {
+        tz[++y] = "";
+        n = m;
+      }
+      tz[y] += j;
+    }
+    return tz;
+  }
+
+  var aa = chunkify(a);
+  var bb = chunkify(b);
+
+  for (x = 0; aa[x] && bb[x]; x++) {
+    if (aa[x] !== bb[x]) {
+      var c = Number(aa[x]),
+          d = Number(bb[x]);
+
+      if (c == aa[x] && d == bb[x]) {
+        return c - d;
+      } else {
+          return (aa[x] > bb[x]) ? 1 : -1;
+      }
+    }
+  }
+  return aa.length - bb.length;
+}
\ No newline at end of file
diff --git a/js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js b/js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js
new file mode 100644
index 0000000..2ccb66b
--- /dev/null
+++ b/js/table/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+function alphanum(a,b){function c(a){for(var b,c,d=[],e=0,f=-1,g=0;b=(c=a.charAt(e++)).charCodeAt(0);){var h=46===b||b>=48&&57>=b;h!==g&&(d[++f]="",g=h),d[f]+=c}return d}var d=c(a),e=c(b);for(x=0;d[x]&&e[x];x++)if(d[x]!==e[x]){var f=Number(d[x]),g=Number(e[x]);return f==d[x]&&g==e[x]?f-g:d[x]>e[x]?1:-1}return d.length-e.length}
\ No newline at end of file
diff --git a/js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.js b/js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.js
new file mode 100644
index 0000000..0c8b8b3
--- /dev/null
+++ b/js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.js
@@ -0,0 +1,121 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.1.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        reorderableColumns: false,
+        maxMovingRows: 10,
+        onReorderColumn: function (headerFields) {
+            return false;
+        },
+        dragaccept: null
+    });
+
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'reorder-column.bs.table': 'onReorderColumn'
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initHeader = BootstrapTable.prototype.initHeader,
+        _toggleColumn = BootstrapTable.prototype.toggleColumn,
+        _toggleView = BootstrapTable.prototype.toggleView,
+        _resetView = BootstrapTable.prototype.resetView;
+
+    BootstrapTable.prototype.initHeader = function () {
+        _initHeader.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.reorderableColumns) {
+            return;
+        }
+
+        this.makeRowsReorderable();
+    };
+
+    BootstrapTable.prototype.toggleColumn = function () {
+        _toggleColumn.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.reorderableColumns) {
+            return;
+        }
+
+        this.makeRowsReorderable();
+    };
+
+    BootstrapTable.prototype.toggleView = function () {
+        _toggleView.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.reorderableColumns) {
+            return;
+        }
+
+        if (this.options.cardView) {
+            return;
+        }
+
+        this.makeRowsReorderable();
+    };
+
+    BootstrapTable.prototype.resetView = function () {
+        _resetView.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.reorderableColumns) {
+            return;
+        }
+
+        this.makeRowsReorderable();
+    };
+
+    BootstrapTable.prototype.makeRowsReorderable = function () {
+        var that = this;
+        try {
+            $(this.$el).dragtable('destroy');
+        } catch (e) {}
+        $(this.$el).dragtable({
+            maxMovingRows: that.options.maxMovingRows,
+            dragaccept: that.options.dragaccept,
+            clickDelay:200,
+            beforeStop: function() {
+                var ths = [],
+                    formatters = [],
+                    columns = [],
+                    columnsHidden = [],
+                    columnIndex = -1;
+                that.$header.find('th').each(function (i) {
+                    ths.push($(this).data('field'));
+                    formatters.push($(this).data('formatter'));
+                });
+
+                //Exist columns not shown
+                if (ths.length < that.columns.length) {
+                    columnsHidden = $.grep(that.columns, function (column) {
+                       return !column.visible;
+                    });
+                    for (var i = 0; i < columnsHidden.length; i++) {
+                        ths.push(columnsHidden[i].field);
+                        formatters.push(columnsHidden[i].formatter);
+                    }
+                }
+
+                for (var i = 0; i < ths.length; i++ ) {
+                    columnIndex = $.fn.bootstrapTable.utils.getFieldIndex(that.columns, ths[i]);
+                    if (columnIndex !== -1) {
+                        columns.push(that.columns[columnIndex]);
+                        that.columns.splice(columnIndex, 1);
+                    }
+                }
+
+                that.columns = that.columns.concat(columns);
+                that.header.fields = ths;
+                that.header.formatters = formatters;
+                that.resetView();
+                that.trigger('reorder-column', ths);
+            }
+        });
+    };
+}(jQuery);
diff --git a/js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js b/js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js
new file mode 100644
index 0000000..50cad77
--- /dev/null
+++ b/js/table/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{reorderableColumns:!1,maxMovingRows:10,onReorderColumn:function(){return!1},dragaccept:null}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"reorder-column.bs.table":"onReorderColumn"});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initHeader,d=b.prototype.toggleColumn,e=b.prototype.toggleView,f=b.prototype.resetView;b.prototype.initHeader=function(){c.apply(this,Array.prototype.slice.apply(arguments)),this.options.reorderableColumns&&this.makeRowsReorderable()},b.prototype.toggleColumn=function(){d.apply(this,Array.prototype.slice.apply(arguments)),this.options.reorderableColumns&&this.makeRowsReorderable()},b.prototype.toggleView=function(){e.apply(this,Array.prototype.slice.apply(arguments)),this.options.reorderableColumns&&(this.options.cardView||this.makeRowsReorderable())},b.prototype.resetView=function(){f.apply(this,Array.prototype.slice.apply(arguments)),this.options.reorderableColumns&&this.makeRowsReorderable()},b.prototype.makeRowsReorderable=function(){var b=this;try{a(this.$el).dragtable("destroy")}catch(c){}a(this.$el).dragtable({maxMovingRows:b.options.maxMovingRows,dragaccept:b.options.dragaccept,clickDelay:200,beforeStop:function(){var c=[],d=[],e=[],f=[],g=-1;if(b.$header.find("th").each(function(){c.push(a(this).data("field")),d.push(a(this).data("formatter"))}),c.length<b.columns.length){f=a.grep(b.columns,function(a){return!a.visible});for(var h=0;h<f.length;h++)c.push(f[h].field),d.push(f[h].formatter)}for(var h=0;h<c.length;h++)g=a.fn.bootstrapTable.utils.getFieldIndex(b.columns,c[h]),-1!==g&&(e.push(b.columns[g]),b.columns.splice(g,1));b.columns=b.columns.concat(e),b.header.fields=c,b.header.formatters=d,b.resetView(),b.trigger("reorder-column",c)}})}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.css b/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.css
new file mode 100644
index 0000000..412ff14
--- /dev/null
+++ b/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.css
@@ -0,0 +1,14 @@
+.reorder_rows_onDragClass td {
+    background-color: #eee;
+    -webkit-box-shadow: 11px 5px 12px 2px #333, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
+    -webkit-box-shadow: 6px 3px 5px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
+    -moz-box-shadow: 6px 4px 5px 1px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
+    -box-shadow: 6px 4px 5px 1px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
+}
+
+.reorder_rows_onDragClass td:last-child {
+    -webkit-box-shadow: 8px 7px 12px 0 #333, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
+    -webkit-box-shadow: 1px 8px 6px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset;
+    -moz-box-shadow: 0 9px 4px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset, -1px 0 0 #ccc inset;
+    -box-shadow: 0 9px 4px -4px #555, 0 1px 0 #ccc inset, 0 -1px 0 #ccc inset, -1px 0 0 #ccc inset;
+}
\ No newline at end of file
diff --git a/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.js b/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.js
new file mode 100644
index 0000000..c733717
--- /dev/null
+++ b/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.js
@@ -0,0 +1,115 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ */
+
+!function ($) {
+
+    'use strict';
+
+    var isSearch = false;
+
+    var rowAttr = function (row, index) {
+        return {
+            id: 'customId_' + index
+        };
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        reorderableRows: false,
+        onDragStyle: null,
+        onDropStyle: null,
+        onDragClass: "reorder_rows_onDragClass",
+        dragHandle: null,
+        useRowAttrFunc: false,
+        onReorderRowsDrag: function (table, row) {
+            return false;
+        },
+        onReorderRowsDrop: function (table, row) {
+            return false;
+        },
+        onReorderRow: function (newData) {
+             return false;
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'reorder-row.bs.table': 'onReorderRow'
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _init = BootstrapTable.prototype.init,
+        _initSearch = BootstrapTable.prototype.initSearch;
+
+    BootstrapTable.prototype.init = function () {
+
+        if (!this.options.reorderableRows) {
+            return;
+        }
+
+        var that = this;
+        if (this.options.useRowAttrFunc) {
+            this.options.rowAttributes = rowAttr;
+        }
+
+        var onPostBody = this.options.onPostBody;
+        this.options.onPostBody = function () {
+            setTimeout(function () {
+                that.makeRowsReorderable();
+                onPostBody.apply();
+            }, 1);
+        };
+
+        _init.apply(this, Array.prototype.slice.apply(arguments));
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.reorderableRows) {
+            return;
+        }
+
+        //Known issue after search if you reorder the rows the data is not display properly
+        //isSearch = true;
+    };
+
+    BootstrapTable.prototype.makeRowsReorderable = function () {
+        if (this.options.cardView) {
+            return;
+        }
+
+        var that = this;
+        this.$el.tableDnD({
+            onDragStyle: that.options.onDragStyle,
+            onDropStyle: that.options.onDropStyle,
+            onDragClass: that.options.onDragClass,
+            onDrop: that.onDrop,
+            onDragStart: that.options.onReorderRowsDrag,
+            dragHandle: that.options.dragHandle
+        });
+    };
+
+    BootstrapTable.prototype.onDrop = function (table, droppedRow) {
+        var tableBs = $(table),
+            tableBsData = tableBs.data('bootstrap.table'),
+            tableBsOptions = tableBs.data('bootstrap.table').options,
+            row = null,
+            newData = [];
+
+        for (var i = 0; i < table.tBodies[0].rows.length; i++) {
+            row = $(table.tBodies[0].rows[i]);
+            newData.push(tableBsOptions.data[row.data('index')]);
+            row.data('index', i).attr('data-index', i);
+        }
+
+        tableBsOptions.data = newData;
+
+        //Call the user defined function
+        tableBsOptions.onReorderRowsDrop.apply(table, [table, droppedRow]);
+
+        //Call the event reorder-row
+        tableBsData.trigger('reorder-row', newData);
+    };
+}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js b/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js
new file mode 100644
index 0000000..a47c9bb
--- /dev/null
+++ b/js/table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=function(a,b){return{id:"customId_"+b}};a.extend(a.fn.bootstrapTable.defaults,{reorderableRows:!1,onDragStyle:null,onDropStyle:null,onDragClass:"reorder_rows_onDragClass",dragHandle:null,useRowAttrFunc:!1,onReorderRowsDrag:function(){return!1},onReorderRowsDrop:function(){return!1},onReorderRow:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"reorder-row.bs.table":"onReorderRow"});var c=a.fn.bootstrapTable.Constructor,d=c.prototype.init,e=c.prototype.initSearch;c.prototype.init=function(){if(this.options.reorderableRows){var a=this;this.options.useRowAttrFunc&&(this.options.rowAttributes=b);var c=this.options.onPostBody;this.options.onPostBody=function(){setTimeout(function(){a.makeRowsReorderable(),c.apply()},1)},d.apply(this,Array.prototype.slice.apply(arguments))}},c.prototype.initSearch=function(){e.apply(this,Array.prototype.slice.apply(arguments)),!this.options.reorderableRows},c.prototype.makeRowsReorderable=function(){if(!this.options.cardView){var a=this;this.$el.tableDnD({onDragStyle:a.options.onDragStyle,onDropStyle:a.options.onDropStyle,onDragClass:a.options.onDragClass,onDrop:a.onDrop,onDragStart:a.options.onReorderRowsDrag,dragHandle:a.options.dragHandle})}},c.prototype.onDrop=function(b,c){for(var d=a(b),e=d.data("bootstrap.table"),f=d.data("bootstrap.table").options,g=null,h=[],i=0;i<b.tBodies[0].rows.length;i++)g=a(b.tBodies[0].rows[i]),h.push(f.data[g.data("index")]),g.data("index",i).attr("data-index",i);f.data=h,f.onReorderRowsDrop.apply(b,[b,c]),e.trigger("reorder-row",h)}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/resizable/bootstrap-table-resizable.js b/js/table/extensions/resizable/bootstrap-table-resizable.js
new file mode 100644
index 0000000..8be7b09
--- /dev/null
+++ b/js/table/extensions/resizable/bootstrap-table-resizable.js
@@ -0,0 +1,74 @@
+/**
+ * @author: Dennis Hernández
+ * @webSite: http://djhvscf.github.io/Blog
+ * @version: v1.0.0
+ */
+
+(function ($) {
+    'use strict';
+
+    var initResizable = function (that) {
+        //Deletes the plugin to re-create it
+        that.$el.colResizable({disable: true});
+
+        //Creates the plugin
+        that.$el.colResizable({
+            liveDrag: that.options.liveDrag,
+            fixed: that.options.fixed,
+            headerOnly: that.options.headerOnly,
+            minWidth: that.options.minWidth,
+            hoverCursor: that.options.hoverCursor,
+            dragCursor: that.options.dragCursor,
+            onResize: that.onResize,
+            onDrag: that.options.onResizableDrag
+        });
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        resizable: false,
+        liveDrag: false,
+        fixed: true,
+        headerOnly: false,
+        minWidth: 15,
+        hoverCursor: 'e-resize',
+        dragCursor: 'e-resize',
+        onResizableResize: function (e) {
+            return false;
+        },
+        onResizableDrag: function (e) {
+            return false;
+        }
+    });
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _toggleView = BootstrapTable.prototype.toggleView,
+        _resetView = BootstrapTable.prototype.resetView;
+
+    BootstrapTable.prototype.toggleView = function () {
+        _toggleView.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (this.options.resizable && this.options.cardView) {
+            //Deletes the plugin
+            $(this.$el).colResizable({disable: true});
+        }
+    };
+
+    BootstrapTable.prototype.resetView = function () {
+        var that = this;
+
+        _resetView.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (this.options.resizable) {
+            // because in fitHeader function, we use setTimeout(func, 100);
+            setTimeout(function () {
+                initResizable(that);
+            }, 100);
+        }
+    };
+
+    BootstrapTable.prototype.onResize = function (e) {
+        var that = $(e.currentTarget);
+        that.bootstrapTable('resetView');
+        that.data('bootstrap.table').options.onResizableResize.apply(e);
+    }
+})(jQuery);
diff --git a/js/table/extensions/resizable/bootstrap-table-resizable.min.js b/js/table/extensions/resizable/bootstrap-table-resizable.min.js
new file mode 100644
index 0000000..3b4a9ac
--- /dev/null
+++ b/js/table/extensions/resizable/bootstrap-table-resizable.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=function(a){a.$el.colResizable({disable:!0}),a.$el.colResizable({liveDrag:a.options.liveDrag,fixed:a.options.fixed,headerOnly:a.options.headerOnly,minWidth:a.options.minWidth,hoverCursor:a.options.hoverCursor,dragCursor:a.options.dragCursor,onResize:a.onResize,onDrag:a.options.onResizableDrag})};a.extend(a.fn.bootstrapTable.defaults,{resizable:!1,liveDrag:!1,fixed:!0,headerOnly:!1,minWidth:15,hoverCursor:"e-resize",dragCursor:"e-resize",onResizableResize:function(){return!1},onResizableDrag:function(){return!1}});var c=a.fn.bootstrapTable.Constructor,d=c.prototype.toggleView,e=c.prototype.resetView;c.prototype.toggleView=function(){d.apply(this,Array.prototype.slice.apply(arguments)),this.options.resizable&&this.options.cardView&&a(this.$el).colResizable({disable:!0})},c.prototype.resetView=function(){var a=this;e.apply(this,Array.prototype.slice.apply(arguments)),this.options.resizable&&setTimeout(function(){b(a)},100)},c.prototype.onResize=function(b){var c=a(b.currentTarget);c.bootstrapTable("resetView"),c.data("bootstrap.table").options.onResizableResize.apply(b)}}(jQuery);
\ No newline at end of file
diff --git a/js/table/extensions/sorting/bootstrap-table_natural-sorting.min.js b/js/table/extensions/sorting/bootstrap-table_natural-sorting.min.js
new file mode 100644
index 0000000..1b61616
--- /dev/null
+++ b/js/table/extensions/sorting/bootstrap-table_natural-sorting.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.6.0 - 2015-03-03
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+function alphanum(a,b){function c(a){for(var b,c,d=[],e=0,f=-1,g=0;b=(c=a.charAt(e++)).charCodeAt(0);){var h=46==b||b>=48&&57>=b;h!==g&&(d[++f]="",g=h),d[f]+=c}return d}var d=c(a),e=c(b);for(x=0;d[x]&&e[x];x++)if(d[x]!==e[x]){var f=Number(d[x]),g=Number(e[x]);return f==d[x]&&g==e[x]?f-g:d[x]>e[x]?1:-1}return d.length-e.length}
\ No newline at end of file
diff --git a/js/table/extensions/toolbar/bootstrap-table-toolbar.js b/js/table/extensions/toolbar/bootstrap-table-toolbar.js
new file mode 100644
index 0000000..fd4e585
--- /dev/null
+++ b/js/table/extensions/toolbar/bootstrap-table-toolbar.js
@@ -0,0 +1,211 @@
+/**
+ * @author: aperez <aperez@datadec.es>
+ * @version: v2.0.0
+ *
+ * @update Dennis Hernández <http://djhvscf.github.io/Blog>
+ */
+
+!function($) {
+    'use strict';
+
+    var firstLoad = false;
+
+    var sprintf = $.fn.bootstrapTable.utils.sprintf;
+
+    var showAvdSearch = function(pColumns, searchTitle, searchText, that) {
+        if (!$("#avdSearchModal" + "_" + that.options.idTable).hasClass("modal")) {
+            var vModal = sprintf("<div id=\"avdSearchModal%s\"  class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mySmallModalLabel\" aria-hidden=\"true\">", "_" + that.options.idTable);
+            vModal += "<div class=\"modal-dialog modal-xs\">";
+            vModal += " <div class=\"modal-content\">";
+            vModal += "  <div class=\"modal-header\">";
+            vModal += "   <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\" >&times;</button>";
+            vModal += sprintf("   <h4 class=\"modal-title\">%s</h4>", searchTitle);
+            vModal += "  </div>";
+            vModal += "  <div class=\"modal-body modal-body-custom\">";
+            vModal += sprintf("   <div class=\"container-fluid\" id=\"avdSearchModalContent%s\" style=\"padding-right: 0px;padding-left: 0px;\" >", "_" + that.options.idTable);
+            vModal += "   </div>";
+            vModal += "  </div>";
+            vModal += "  </div>";
+            vModal += " </div>";
+            vModal += "</div>";
+
+            $("body").append($(vModal));
+
+            var vFormAvd = createFormAvd(pColumns, searchText, that),
+                timeoutId = 0;;
+
+            $('#avdSearchModalContent' + "_" + that.options.idTable).append(vFormAvd.join(''));
+
+            $('#' + that.options.idForm).off('keyup blur', 'input').on('keyup blur', 'input', function (event) {
+                clearTimeout(timeoutId);
+                timeoutId = setTimeout(function () {
+                    that.onColumnAdvancedSearch(event);
+                }, that.options.searchTimeOut);
+            });
+
+            $("#btnCloseAvd" + "_" + that.options.idTable).click(function() {
+                $("#avdSearchModal" + "_" + that.options.idTable).modal('hide');
+            });
+
+            $("#avdSearchModal" + "_" + that.options.idTable).modal();
+        } else {
+            $("#avdSearchModal" + "_" + that.options.idTable).modal();
+        }
+    };
+
+    var createFormAvd = function(pColumns, searchText, that) {
+        var htmlForm = [];
+        htmlForm.push(sprintf('<form class="form-horizontal" id="%s" action="%s" >', that.options.idForm, that.options.actionForm));
+        for (var i in pColumns) {
+            var vObjCol = pColumns[i];
+            if (!vObjCol.checkbox && vObjCol.visible && vObjCol.searchable) {
+                htmlForm.push('<div class="form-group">');
+                htmlForm.push(sprintf('<label class="col-sm-4 control-label">%s</label>', vObjCol.title));
+                htmlForm.push('<div class="col-sm-6">');
+                htmlForm.push(sprintf('<input type="text" class="form-control input-md" name="%s" placeholder="%s" id="%s">', vObjCol.field, vObjCol.title, vObjCol.field));
+                htmlForm.push('</div>');
+                htmlForm.push('</div>');
+            }
+        }
+
+        htmlForm.push('<div class="form-group">');
+        htmlForm.push('<div class="col-sm-offset-9 col-sm-3">');
+        htmlForm.push(sprintf('<button type="button" id="btnCloseAvd%s" class="btn btn-default" >%s</button>', "_" + that.options.idTable, searchText));
+        htmlForm.push('</div>');
+        htmlForm.push('</div>');
+        htmlForm.push('</form>');
+
+        return htmlForm;
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        advancedSearch: false,
+        idForm: 'advancedSearch',
+        actionForm: '',
+        idTable: undefined,
+        onColumnAdvancedSearch: function (field, text) {
+            return false;
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.defaults.icons, {
+        advancedSearchIcon: 'glyphicon-chevron-down'
+    });
+
+    $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
+        'column-advanced-search.bs.table': 'onColumnAdvancedSearch'
+    });
+
+    $.extend($.fn.bootstrapTable.locales, {
+        formatAdvancedSearch: function() {
+            return 'Advanced search';
+        },
+        formatAdvancedCloseButton: function() {
+            return "Close";
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initToolbar = BootstrapTable.prototype.initToolbar,        
+        _load = BootstrapTable.prototype.load,
+        _initSearch = BootstrapTable.prototype.initSearch;
+
+    BootstrapTable.prototype.initToolbar = function() {
+        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.search) {
+            return;
+        }
+
+        if (!this.options.advancedSearch) {
+            return;
+        }
+
+        if (!this.options.idTable) {
+            return;
+        }
+
+        var that = this,
+            html = [];
+
+        html.push(sprintf('<div class="columns columns-%s btn-group pull-%s" role="group">', this.options.buttonsAlign, this.options.buttonsAlign));
+        html.push(sprintf('<button class="btn btn-default%s' + '" type="button" name="advancedSearch" title="%s">', that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize, that.options.formatAdvancedSearch()));
+        html.push(sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.advancedSearchIcon))
+        html.push('</button></div>');
+
+        that.$toolbar.prepend(html.join(''));
+
+        that.$toolbar.find('button[name="advancedSearch"]')
+            .off('click').on('click', function() {
+                showAvdSearch(that.columns, that.options.formatAdvancedSearch(), that.options.formatAdvancedCloseButton(), that);
+            });
+    };
+
+    BootstrapTable.prototype.load = function(data) {
+        _load.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.advancedSearch) {
+            return;
+        }
+
+        if (typeof this.options.idTable === 'undefined') {
+            return;
+        } else {
+            if (!firstLoad) {
+                var height = parseInt($(".bootstrap-table").height());
+                height += 10;
+                $("#" + this.options.idTable).bootstrapTable("resetView", {height: height});
+                firstLoad = true;
+            }
+        }
+    };
+
+    BootstrapTable.prototype.initSearch = function () {
+        _initSearch.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (!this.options.advancedSearch) {
+            return;
+        }
+
+        var that = this;
+        var fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial;
+
+        this.data = fp ? $.grep(this.data, function (item, i) {
+            for (var key in fp) {
+                var fval = fp[key].toLowerCase();
+                var value = item[key];
+                value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header,
+                    that.header.formatters[$.inArray(key, that.header.fields)],
+                    [value, item, i], value);
+
+                if (!($.inArray(key, that.header.fields) !== -1 &&
+                    (typeof value === 'string' || typeof value === 'number') &&
+                    (value + '').toLowerCase().indexOf(fval) !== -1)) {
+                    return false;
+                }
+            }
+            return true;
+        }) : this.data;
+    };
+
+    BootstrapTable.prototype.onColumnAdvancedSearch = function (event) {
+        var text = $.trim($(event.currentTarget).val());
+        var $field = $(event.currentTarget)[0].id;
+
+        if ($.isEmptyObject(this.filterColumnsPartial)) {
+            this.filterColumnsPartial = {};
+        }
+        if (text) {
+            this.filterColumnsPartial[$field] = text;
+        } else {
+            delete this.filterColumnsPartial[$field];
+        }
+
+        this.options.pageNumber = 1;
+        this.onSearch(event);
+        this.updatePagination();
+        this.trigger('column-advanced-search', $field, text);
+    };
+}(jQuery);
diff --git a/js/table/extensions/toolbar/bootstrap-table-toolbar.min.js b/js/table/extensions/toolbar/bootstrap-table-toolbar.min.js
new file mode 100644
index 0000000..f5a6490
--- /dev/null
+++ b/js/table/extensions/toolbar/bootstrap-table-toolbar.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";var b=!1,c=a.fn.bootstrapTable.utils.sprintf,d=function(b,d,f,g){if(a("#avdSearchModal_"+g.options.idTable).hasClass("modal"))a("#avdSearchModal_"+g.options.idTable).modal();else{var h=c('<div id="avdSearchModal%s"  class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">',"_"+g.options.idTable);h+='<div class="modal-dialog modal-xs">',h+=' <div class="modal-content">',h+='  <div class="modal-header">',h+='   <button type="button" class="close" data-dismiss="modal" aria-hidden="true" >&times;</button>',h+=c('   <h4 class="modal-title">%s</h4>',d),h+="  </div>",h+='  <div class="modal-body modal-body-custom">',h+=c('   <div class="container-fluid" id="avdSearchModalContent%s" style="padding-right: 0px;padding-left: 0px;" >',"_"+g.options.idTable),h+="   </div>",h+="  </div>",h+="  </div>",h+=" </div>",h+="</div>",a("body").append(a(h));var i=e(b,f,g),j=0;a("#avdSearchModalContent_"+g.options.idTable).append(i.join("")),a("#"+g.options.idForm).off("keyup blur","input").on("keyup blur","input",function(a){clearTimeout(j),j=setTimeout(function(){g.onColumnAdvancedSearch(a)},g.options.searchTimeOut)}),a("#btnCloseAvd_"+g.options.idTable).click(function(){a("#avdSearchModal_"+g.options.idTable).modal("hide")}),a("#avdSearchModal_"+g.options.idTable).modal()}},e=function(a,b,d){var e=[];e.push(c('<form class="form-horizontal" id="%s" action="%s" >',d.options.idForm,d.options.actionForm));for(var f in a){var g=a[f];!g.checkbox&&g.visible&&g.searchable&&(e.push('<div class="form-group">'),e.push(c('<label class="col-sm-4 control-label">%s</label>',g.title)),e.push('<div class="col-sm-6">'),e.push(c('<input type="text" class="form-control input-md" name="%s" placeholder="%s" id="%s">',g.field,g.title,g.field)),e.push("</div>"),e.push("</div>"))}return e.push('<div class="form-group">'),e.push('<div class="col-sm-offset-9 col-sm-3">'),e.push(c('<button type="button" id="btnCloseAvd%s" class="btn btn-default" >%s</button>',"_"+d.options.idTable,b)),e.push("</div>"),e.push("</div>"),e.push("</form>"),e};a.extend(a.fn.bootstrapTable.defaults,{advancedSearch:!1,idForm:"advancedSearch",actionForm:"",idTable:void 0,onColumnAdvancedSearch:function(){return!1}}),a.extend(a.fn.bootstrapTable.defaults.icons,{advancedSearchIcon:"glyphicon-chevron-down"}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"column-advanced-search.bs.table":"onColumnAdvancedSearch"}),a.extend(a.fn.bootstrapTable.locales,{formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"}}),a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales);var f=a.fn.bootstrapTable.Constructor,g=f.prototype.initToolbar,h=f.prototype.load,i=f.prototype.initSearch;f.prototype.initToolbar=function(){if(g.apply(this,Array.prototype.slice.apply(arguments)),this.options.search&&this.options.advancedSearch&&this.options.idTable){var a=this,b=[];b.push(c('<div class="columns columns-%s btn-group pull-%s" role="group">',this.options.buttonsAlign,this.options.buttonsAlign)),b.push(c('<button class="btn btn-default%s" type="button" name="advancedSearch" title="%s">',void 0===a.options.iconSize?"":" btn-"+a.options.iconSize,a.options.formatAdvancedSearch())),b.push(c('<i class="%s %s"></i>',a.options.iconsPrefix,a.options.icons.advancedSearchIcon)),b.push("</button></div>"),a.$toolbar.prepend(b.join("")),a.$toolbar.find('button[name="advancedSearch"]').off("click").on("click",function(){d(a.columns,a.options.formatAdvancedSearch(),a.options.formatAdvancedCloseButton(),a)})}},f.prototype.load=function(){if(h.apply(this,Array.prototype.slice.apply(arguments)),this.options.advancedSearch&&"undefined"!=typeof this.options.idTable&&!b){var c=parseInt(a(".bootstrap-table").height());c+=10,a("#"+this.options.idTable).bootstrapTable("resetView",{height:c}),b=!0}},f.prototype.initSearch=function(){if(i.apply(this,Array.prototype.slice.apply(arguments)),this.options.advancedSearch){var b=this,c=a.isEmptyObject(this.filterColumnsPartial)?null:this.filterColumnsPartial;this.data=c?a.grep(this.data,function(d,e){for(var f in c){var g=c[f].toLowerCase(),h=d[f];if(h=a.fn.bootstrapTable.utils.calculateObjectValue(b.header,b.header.formatters[a.inArray(f,b.header.fields)],[h,d,e],h),-1===a.inArray(f,b.header.fields)||"string"!=typeof h&&"number"!=typeof h||-1===(h+"").toLowerCase().indexOf(g))return!1}return!0}):this.data}},f.prototype.onColumnAdvancedSearch=function(b){var c=a.trim(a(b.currentTarget).val()),d=a(b.currentTarget)[0].id;a.isEmptyObject(this.filterColumnsPartial)&&(this.filterColumnsPartial={}),c?this.filterColumnsPartial[d]=c:delete this.filterColumnsPartial[d],this.options.pageNumber=1,this.onSearch(b),this.updatePagination(),this.trigger("column-advanced-search",d,c)}}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-af-ZA.js b/js/table/locale/bootstrap-table-af-ZA.js
new file mode 100644
index 0000000..1c7ff88
--- /dev/null
+++ b/js/table/locale/bootstrap-table-af-ZA.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Afrikaans translation
+ * Author: Phillip Kruger <phillip.kruger@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['af-ZA'] = {
+        formatLoadingMessage: function () {
+            return 'Besig om te laai, wag asseblief ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekords per bladsy';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Resultate ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' rye';
+        },
+        formatSearch: function () {
+            return 'Soek';
+        },
+        formatNoMatches: function () {
+            return 'Geen rekords gevind nie';
+        },
+        formatPaginationSwitch: function () {
+            return 'Wys/verberg bladsy nummering';
+        },
+        formatRefresh: function () {
+            return 'Herlaai';
+        },
+        formatToggle: function () {
+            return 'Wissel';
+        },
+        formatColumns: function () {
+            return 'Kolomme';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['af-ZA']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-af-ZA.min.js b/js/table/locale/bootstrap-table-af-ZA.min.js
new file mode 100644
index 0000000..e047440
--- /dev/null
+++ b/js/table/locale/bootstrap-table-af-ZA.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["af-ZA"]={formatLoadingMessage:function(){return"Besig om te laai, wag asseblief ..."},formatRecordsPerPage:function(a){return a+" rekords per bladsy"},formatShowingRows:function(a,b,c){return"Resultate "+a+" tot "+b+" van "+c+" rye"},formatSearch:function(){return"Soek"},formatNoMatches:function(){return"Geen rekords gevind nie"},formatPaginationSwitch:function(){return"Wys/verberg bladsy nummering"},formatRefresh:function(){return"Herlaai"},formatToggle:function(){return"Wissel"},formatColumns:function(){return"Kolomme"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["af-ZA"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ar-SA.js b/js/table/locale/bootstrap-table-ar-SA.js
new file mode 100644
index 0000000..c362236
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ar-SA.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table English translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ar-SA'] = {
+        formatLoadingMessage: function () {
+            return 'جاري التحميل, يرجى الإنتظار...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' سجل لكل صفحة';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'الظاهر ' + pageFrom + ' إلى ' + pageTo + ' من ' + totalRows + ' سجل';
+        },
+        formatSearch: function () {
+            return 'بحث';
+        },
+        formatNoMatches: function () {
+            return 'لا توجد نتائج مطابقة للبحث';
+        },
+        formatPaginationSwitch: function () {
+            return 'إخفاء\إظهار ترقيم الصفحات';
+        },
+        formatRefresh: function () {
+            return 'تحديث';
+        },
+        formatToggle: function () {
+            return 'تغيير';
+        },
+        formatColumns: function () {
+            return 'أعمدة';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ar-SA']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-ar-SA.min.js b/js/table/locale/bootstrap-table-ar-SA.min.js
new file mode 100644
index 0000000..fd3c4b4
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ar-SA.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ar-SA"]={formatLoadingMessage:function(){return"جاري التحميل, يرجى الإنتظار..."},formatRecordsPerPage:function(a){return a+" سجل لكل صفحة"},formatShowingRows:function(a,b,c){return"الظاهر "+a+" إلى "+b+" من "+c+" سجل"},formatSearch:function(){return"بحث"},formatNoMatches:function(){return"لا توجد نتائج مطابقة للبحث"},formatPaginationSwitch:function(){return"إخفاءإظهار ترقيم الصفحات"},formatRefresh:function(){return"تحديث"},formatToggle:function(){return"تغيير"},formatColumns:function(){return"أعمدة"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ar-SA"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ca-ES.js b/js/table/locale/bootstrap-table-ca-ES.js
new file mode 100644
index 0000000..f155c13
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ca-ES.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Catalan translation
+ * Author: Marc Pina<iwalkalone69@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ca-ES'] = {
+        formatLoadingMessage: function () {
+            return 'Si us plau esperi...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' resultats per pàgina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrant de ' + pageFrom + ' fins ' + pageTo + ' - total ' + totalRows + ' resultats';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No s\'han trobat resultats';
+        },
+        formatPaginationSwitch: function () {
+            return 'Amagar/Mostrar paginació';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Amagar/Mostrar';
+        },
+        formatColumns: function () {
+            return 'Columnes';
+        },
+        formatAllRows: function () {
+            return 'Tots';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ca-ES']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-ca-ES.min.js b/js/table/locale/bootstrap-table-ca-ES.min.js
new file mode 100644
index 0000000..7895ed9
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ca-ES.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ca-ES"]={formatLoadingMessage:function(){return"Si us plau esperi..."},formatRecordsPerPage:function(a){return a+" resultats per pàgina"},formatShowingRows:function(a,b,c){return"Mostrant de "+a+" fins "+b+" - total "+c+" resultats"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No s'han trobat resultats"},formatPaginationSwitch:function(){return"Amagar/Mostrar paginació"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Amagar/Mostrar"},formatColumns:function(){return"Columnes"},formatAllRows:function(){return"Tots"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ca-ES"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-cs-CZ.js b/js/table/locale/bootstrap-table-cs-CZ.js
new file mode 100644
index 0000000..d8c7130
--- /dev/null
+++ b/js/table/locale/bootstrap-table-cs-CZ.js
@@ -0,0 +1,44 @@
+/**
+ * Bootstrap Table Czech translation
+ * Author: Lukas Kral (monarcha@seznam.cz)
+ * Author: Jakub Svestka <svestka1999@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['cs-CZ'] = {
+        formatLoadingMessage: function () {
+            return 'Čekejte, prosím...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' položek na stránku';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Zobrazena ' + pageFrom + '. - ' + pageTo + '. položka z celkových ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Vyhledávání';
+        },
+        formatNoMatches: function () {
+            return 'Nenalezena žádná vyhovující položka';
+        },
+        formatPaginationSwitch: function () {
+            return 'Skrýt/Zobrazit stránkování';
+        },
+        formatRefresh: function () {
+            return 'Aktualizovat';
+        },
+        formatToggle: function () {
+            return 'Přepni';
+        },
+        formatColumns: function () {
+            return 'Sloupce';
+        },
+        formatAllRows: function () {
+            return 'Vše';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['cs-CZ']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-cs-CZ.min.js b/js/table/locale/bootstrap-table-cs-CZ.min.js
new file mode 100644
index 0000000..6fee62e
--- /dev/null
+++ b/js/table/locale/bootstrap-table-cs-CZ.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["cs-CZ"]={formatLoadingMessage:function(){return"Čekejte, prosím..."},formatRecordsPerPage:function(a){return a+" položek na stránku"},formatShowingRows:function(a,b,c){return"Zobrazena "+a+". - "+b+". položka z celkových "+c},formatSearch:function(){return"Vyhledávání"},formatNoMatches:function(){return"Nenalezena žádná vyhovující položka"},formatPaginationSwitch:function(){return"Skrýt/Zobrazit stránkování"},formatRefresh:function(){return"Aktualizovat"},formatToggle:function(){return"Přepni"},formatColumns:function(){return"Sloupce"},formatAllRows:function(){return"Vše"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["cs-CZ"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-da-DK.js b/js/table/locale/bootstrap-table-da-DK.js
new file mode 100644
index 0000000..de38a17
--- /dev/null
+++ b/js/table/locale/bootstrap-table-da-DK.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table danish translation
+ * Author: Your Name Jan Borup Coyle, github@coyle.dk
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['da-DK'] = {
+        formatLoadingMessage: function () {
+            return 'Indlæser, vent venligst...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' poster pr side';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Viser ' + pageFrom + ' til ' + pageTo + ' af ' + totalRows + ' rækker';
+        },
+        formatSearch: function () {
+            return 'Søg';
+        },
+        formatNoMatches: function () {
+            return 'Ingen poster fundet';
+        },
+        formatRefresh: function () {
+            return 'Opdater';
+        },
+        formatToggle: function () {
+            return 'Skift';
+        },
+        formatColumns: function () {
+            return 'Kolonner';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['da-DK']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-da-DK.min.js b/js/table/locale/bootstrap-table-da-DK.min.js
new file mode 100644
index 0000000..bfedc46
--- /dev/null
+++ b/js/table/locale/bootstrap-table-da-DK.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["da-DK"]={formatLoadingMessage:function(){return"Indlæser, vent venligst..."},formatRecordsPerPage:function(a){return a+" poster pr side"},formatShowingRows:function(a,b,c){return"Viser "+a+" til "+b+" af "+c+" rækker"},formatSearch:function(){return"Søg"},formatNoMatches:function(){return"Ingen poster fundet"},formatRefresh:function(){return"Opdater"},formatToggle:function(){return"Skift"},formatColumns:function(){return"Kolonner"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["da-DK"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-de-DE.js b/js/table/locale/bootstrap-table-de-DE.js
new file mode 100644
index 0000000..efa4831
--- /dev/null
+++ b/js/table/locale/bootstrap-table-de-DE.js
@@ -0,0 +1,37 @@
+/**
+* Bootstrap Table German translation
+* Author: Paul Mohr - Sopamo<p.mohr@sopamo.de>
+*/
+(function ($) {
+  'use strict';
+
+  $.fn.bootstrapTable.locales['de-DE'] = {
+    formatLoadingMessage: function () {
+      return 'Lade, bitte warten...';
+    },
+    formatRecordsPerPage: function (pageNumber) {
+      return pageNumber + ' Einträge pro Seite';
+    },
+    formatShowingRows: function (pageFrom, pageTo, totalRows) {
+      return 'Zeige ' + pageFrom + ' bis ' + pageTo + ' von ' + totalRows + ' Zeile' + ((totalRows > 1) ? "n" : "");
+    },
+    formatSearch: function () {
+      return 'Suchen';
+    },
+    formatNoMatches: function () {
+      return 'Keine passenden Ergebnisse gefunden';
+    },
+    formatRefresh: function () {
+      return 'Neu laden';
+    },
+    formatToggle: function () {
+      return 'Umschalten';
+    },
+    formatColumns: function () {
+      return 'Spalten';
+    }
+  };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['de-DE']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-de-DE.min.js b/js/table/locale/bootstrap-table-de-DE.min.js
new file mode 100644
index 0000000..8db99c8
--- /dev/null
+++ b/js/table/locale/bootstrap-table-de-DE.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["de-DE"]={formatLoadingMessage:function(){return"Lade, bitte warten..."},formatRecordsPerPage:function(a){return a+" Einträge pro Seite"},formatShowingRows:function(a,b,c){return"Zeige "+a+" bis "+b+" von "+c+" Zeile"+(c>1?"n":"")},formatSearch:function(){return"Suchen"},formatNoMatches:function(){return"Keine passenden Ergebnisse gefunden"},formatRefresh:function(){return"Neu laden"},formatToggle:function(){return"Umschalten"},formatColumns:function(){return"Spalten"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["de-DE"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-el-GR.js b/js/table/locale/bootstrap-table-el-GR.js
new file mode 100644
index 0000000..dd74491
--- /dev/null
+++ b/js/table/locale/bootstrap-table-el-GR.js
@@ -0,0 +1,28 @@
+/**
+ * Bootstrap Table Greek translation
+ * Author: giannisdallas
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['el-GR'] = {
+        formatLoadingMessage: function () {
+            return 'Φορτώνει, παρακαλώ περιμένετε...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' αποτελέσματα ανά σελίδα';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Εμφανίζονται από την ' + pageFrom + ' ως την ' + pageTo + ' από σύνολο ' + totalRows + ' σειρών';
+        },
+        formatSearch: function () {
+            return 'Αναζητήστε';
+        },
+        formatNoMatches: function () {
+            return 'Δεν βρέθηκαν αποτελέσματα';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['el-GR']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-el-GR.min.js b/js/table/locale/bootstrap-table-el-GR.min.js
new file mode 100644
index 0000000..201737c
--- /dev/null
+++ b/js/table/locale/bootstrap-table-el-GR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["el-GR"]={formatLoadingMessage:function(){return"Φορτώνει, παρακαλώ περιμένετε..."},formatRecordsPerPage:function(a){return a+" αποτελέσματα ανά σελίδα"},formatShowingRows:function(a,b,c){return"Εμφανίζονται από την "+a+" ως την "+b+" από σύνολο "+c+" σειρών"},formatSearch:function(){return"Αναζητήστε"},formatNoMatches:function(){return"Δεν βρέθηκαν αποτελέσματα"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["el-GR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-en-US.js b/js/table/locale/bootstrap-table-en-US.js
new file mode 100644
index 0000000..5c75279
--- /dev/null
+++ b/js/table/locale/bootstrap-table-en-US.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table English translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['en-US'] = {
+        formatLoadingMessage: function () {
+            return 'Loading, please wait...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' records per page';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Showing ' + pageFrom + ' to ' + pageTo + ' of ' + totalRows + ' rows';
+        },
+        formatSearch: function () {
+            return 'Search';
+        },
+        formatNoMatches: function () {
+            return 'No matching records found';
+        },
+        formatPaginationSwitch: function () {
+            return 'Hide/Show pagination';
+        },
+        formatRefresh: function () {
+            return 'Refresh';
+        },
+        formatToggle: function () {
+            return 'Toggle';
+        },
+        formatColumns: function () {
+            return 'Columns';
+        },
+        formatAllRows: function () {
+            return 'All';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['en-US']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-en-US.min.js b/js/table/locale/bootstrap-table-en-US.min.js
new file mode 100644
index 0000000..0d96317
--- /dev/null
+++ b/js/table/locale/bootstrap-table-en-US.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["en-US"]={formatLoadingMessage:function(){return"Loading, please wait..."},formatRecordsPerPage:function(a){return a+" records per page"},formatShowingRows:function(a,b,c){return"Showing "+a+" to "+b+" of "+c+" rows"},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatRefresh:function(){return"Refresh"},formatToggle:function(){return"Toggle"},formatColumns:function(){return"Columns"},formatAllRows:function(){return"All"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["en-US"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-AR.js b/js/table/locale/bootstrap-table-es-AR.js
new file mode 100644
index 0000000..6f585f7
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-AR.js
@@ -0,0 +1,31 @@
+/**
+ * Bootstrap Table Spanish (Argentina) translation
+ * Author: Felix Vera (felix.vera@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-AR'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, espere por favor...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando ' + pageFrom + ' a ' + pageTo + ' de ' + totalRows + ' filas';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-AR']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-AR.min.js b/js/table/locale/bootstrap-table-es-AR.min.js
new file mode 100644
index 0000000..24aac1d
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-AR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["es-AR"]={formatLoadingMessage:function(){return"Cargando, espere por favor..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando "+a+" a "+b+" de "+c+" filas"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-AR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-CR.js b/js/table/locale/bootstrap-table-es-CR.js
new file mode 100644
index 0000000..7febab7
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-CR.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Spanish (Costa Rica) translation
+ * Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-CR'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espere...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando de ' + pageFrom + ' a ' + pageTo + ' registros de ' + totalRows + ' registros en total';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-CR']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-es-CR.min.js b/js/table/locale/bootstrap-table-es-CR.min.js
new file mode 100644
index 0000000..44dce0f
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-CR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["es-CR"]={formatLoadingMessage:function(){return"Cargando, por favor espere..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando de "+a+" a "+b+" registros de "+c+" registros en total"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-CR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-ES.js b/js/table/locale/bootstrap-table-es-ES.js
new file mode 100644
index 0000000..30448d7
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-ES.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Spanish Spain translation
+ * Author: Marc Pina<iwalkalone69@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-ES'] = {
+        formatLoadingMessage: function () {
+            return 'Por favor espere...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' resultados por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando desde ' + pageFrom + ' hasta ' + pageTo + ' - En total ' + totalRows + ' resultados';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron resultados';
+        },
+        formatPaginationSwitch: function () {
+            return 'Ocultar/Mostrar paginación';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Ocultar/Mostrar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todos';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-ES']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-es-ES.min.js b/js/table/locale/bootstrap-table-es-ES.min.js
new file mode 100644
index 0000000..b963297
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-ES.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["es-ES"]={formatLoadingMessage:function(){return"Por favor espere..."},formatRecordsPerPage:function(a){return a+" resultados por página"},formatShowingRows:function(a,b,c){return"Mostrando desde "+a+" hasta "+b+" - En total "+c+" resultados"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron resultados"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Ocultar/Mostrar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todos"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-ES"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-MX.js b/js/table/locale/bootstrap-table-es-MX.js
new file mode 100644
index 0000000..f745fae
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-MX.js
@@ -0,0 +1,32 @@
+/**
+ * Bootstrap Table Spanish (México) translation (Obtenido de traducción de Argentina)
+ * Author: Felix Vera (felix.vera@gmail.com) 
+ * Copiado: Mauricio Vera (mauricioa.vera@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-MX'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, espere por favor...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando ' + pageFrom + ' a ' + pageTo + ' de ' + totalRows + ' filas';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-MX']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-es-MX.min.js b/js/table/locale/bootstrap-table-es-MX.min.js
new file mode 100644
index 0000000..ef6afb0
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-MX.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["es-MX"]={formatLoadingMessage:function(){return"Cargando, espere por favor..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando "+a+" a "+b+" de "+c+" filas"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-MX"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-NI.js b/js/table/locale/bootstrap-table-es-NI.js
new file mode 100644
index 0000000..2e8aa2a
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-NI.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Spanish (Nicaragua) translation
+ * Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['es-NI'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espere...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Mostrando de ' + pageFrom + ' a ' + pageTo + ' registros de ' + totalRows + ' registros en total';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se encontraron registros';
+        },
+        formatRefresh: function () {
+            return 'Refrescar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-NI']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-es-NI.min.js b/js/table/locale/bootstrap-table-es-NI.min.js
new file mode 100644
index 0000000..d872dfb
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-NI.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["es-NI"]={formatLoadingMessage:function(){return"Cargando, por favor espere..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Mostrando de "+a+" a "+b+" registros de "+c+" registros en total"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatRefresh:function(){return"Refrescar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-NI"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-SP.js b/js/table/locale/bootstrap-table-es-SP.js
new file mode 100644
index 0000000..7da9350
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-SP.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Spanish (España) translation
+ * Author: Antonio Pérez <anpegar@gmail.com>
+ */
+ (function ($) {
+    'use strict';
+    
+    $.fn.bootstrapTable.locales['es-SP'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espera...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por p&#225;gina.';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return pageFrom + ' - ' + pageTo + ' de ' + totalRows + ' registros.';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se han encontrado registros.';
+        },
+        formatRefresh: function () {
+            return 'Actualizar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-SP']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-es-SP.min.js b/js/table/locale/bootstrap-table-es-SP.min.js
new file mode 100644
index 0000000..255428f
--- /dev/null
+++ b/js/table/locale/bootstrap-table-es-SP.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["es-SP"]={formatLoadingMessage:function(){return"Cargando, por favor espera..."},formatRecordsPerPage:function(a){return a+" registros por p&#225;gina."},formatShowingRows:function(a,b,c){return a+" - "+b+" de "+c+" registros."},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se han encontrado registros."},formatRefresh:function(){return"Actualizar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Columnas"},formatAllRows:function(){return"Todo"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["es-SP"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-et-EE.js b/js/table/locale/bootstrap-table-et-EE.js
new file mode 100644
index 0000000..3d71d10
--- /dev/null
+++ b/js/table/locale/bootstrap-table-et-EE.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Estonian translation
+ * Author: kristjan@logist.it>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['et-EE'] = {
+        formatLoadingMessage: function () {
+            return 'Päring käib, palun oota...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rida lehe kohta';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Näitan tulemusi ' + pageFrom + ' kuni ' + pageTo + ' - kokku ' + totalRows + ' tulemust';
+        },
+        formatSearch: function () {
+            return 'Otsi';
+        },
+        formatNoMatches: function () {
+            return 'Päringu tingimustele ei vastanud ühtegi tulemust';
+        },
+        formatPaginationSwitch: function () {
+            return 'Näita/Peida lehtedeks jagamine';
+        },
+        formatRefresh: function () {
+            return 'Värskenda';
+        },
+        formatToggle: function () {
+            return 'Lülita';
+        },
+        formatColumns: function () {
+            return 'Veerud';
+        },
+        formatAllRows: function () {
+            return 'Kõik';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['et-EE']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-et-EE.min.js b/js/table/locale/bootstrap-table-et-EE.min.js
new file mode 100644
index 0000000..0bd3e52
--- /dev/null
+++ b/js/table/locale/bootstrap-table-et-EE.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["et-EE"]={formatLoadingMessage:function(){return"Päring käib, palun oota..."},formatRecordsPerPage:function(a){return a+" rida lehe kohta"},formatShowingRows:function(a,b,c){return"Näitan tulemusi "+a+" kuni "+b+" - kokku "+c+" tulemust"},formatSearch:function(){return"Otsi"},formatNoMatches:function(){return"Päringu tingimustele ei vastanud ühtegi tulemust"},formatPaginationSwitch:function(){return"Näita/Peida lehtedeks jagamine"},formatRefresh:function(){return"Värskenda"},formatToggle:function(){return"Lülita"},formatColumns:function(){return"Veerud"},formatAllRows:function(){return"Kõik"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["et-EE"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-fa-IR.js b/js/table/locale/bootstrap-table-fa-IR.js
new file mode 100644
index 0000000..4cdee6e
--- /dev/null
+++ b/js/table/locale/bootstrap-table-fa-IR.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Persian translation
+ * Author: MJ Vakili <mjv.1989@Gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['fa-IR'] = {
+        formatLoadingMessage: function () {
+            return 'در حال بارگذاری, لطفا صبر کنید...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' رکورد در صفحه';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'نمایش ' + pageFrom + ' تا ' + pageTo + ' از ' + totalRows + ' ردیف';
+        },
+        formatSearch: function () {
+            return 'جستجو';
+        },
+        formatNoMatches: function () {
+            return 'رکوردی یافت نشد.';
+        },
+        formatPaginationSwitch: function () {
+            return 'نمایش/مخفی صفحه بندی';
+        },
+        formatRefresh: function () {
+            return 'به روز رسانی';
+        },
+        formatToggle: function () {
+            return 'تغییر نمایش';
+        },
+        formatColumns: function () {
+            return 'سطر ها';
+        },
+        formatAllRows: function () {
+            return 'همه';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fa-IR']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-fa-IR.min.js b/js/table/locale/bootstrap-table-fa-IR.min.js
new file mode 100644
index 0000000..5161a48
--- /dev/null
+++ b/js/table/locale/bootstrap-table-fa-IR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["fa-IR"]={formatLoadingMessage:function(){return"در حال بارگذاری, لطفا صبر کنید..."},formatRecordsPerPage:function(a){return a+" رکورد در صفحه"},formatShowingRows:function(a,b,c){return"نمایش "+a+" تا "+b+" از "+c+" ردیف"},formatSearch:function(){return"جستجو"},formatNoMatches:function(){return"رکوردی یافت نشد."},formatPaginationSwitch:function(){return"نمایش/مخفی صفحه بندی"},formatRefresh:function(){return"به روز رسانی"},formatToggle:function(){return"تغییر نمایش"},formatColumns:function(){return"سطر ها"},formatAllRows:function(){return"همه"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["fa-IR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-fr-BE.js b/js/table/locale/bootstrap-table-fr-BE.js
new file mode 100644
index 0000000..e4b7cf1
--- /dev/null
+++ b/js/table/locale/bootstrap-table-fr-BE.js
@@ -0,0 +1,28 @@
+/**
+ * Bootstrap Table French (Belgium) translation
+ * Author: Julien Bisconti (julien.bisconti@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['fr-BE'] = {
+        formatLoadingMessage: function () {
+            return 'Chargement en cours...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' entrées par page';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Affiche de' + pageFrom + ' à ' + pageTo + ' sur ' + totalRows + ' lignes';
+        },
+        formatSearch: function () {
+            return 'Recherche';
+        },
+        formatNoMatches: function () {
+            return 'Pas de fichiers trouvés';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fr-BE']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-fr-BE.min.js b/js/table/locale/bootstrap-table-fr-BE.min.js
new file mode 100644
index 0000000..4638353
--- /dev/null
+++ b/js/table/locale/bootstrap-table-fr-BE.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["fr-BE"]={formatLoadingMessage:function(){return"Chargement en cours..."},formatRecordsPerPage:function(a){return a+" entrées par page"},formatShowingRows:function(a,b,c){return"Affiche de"+a+" à "+b+" sur "+c+" lignes"},formatSearch:function(){return"Recherche"},formatNoMatches:function(){return"Pas de fichiers trouvés"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["fr-BE"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-fr-FR.js b/js/table/locale/bootstrap-table-fr-FR.js
new file mode 100644
index 0000000..802eaf6
--- /dev/null
+++ b/js/table/locale/bootstrap-table-fr-FR.js
@@ -0,0 +1,41 @@
+/**
+ * Bootstrap Table French (France) translation
+ * Author: Dennis Hernández (http://djhvscf.github.io/Blog/)
+ * Modification: Tidalf (https://github.com/TidalfFR)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['fr-FR'] = {
+        formatLoadingMessage: function () {
+            return 'Chargement en cours, patientez, s´il vous plaît ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' lignes par page';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Affichage des lignes ' + pageFrom + ' à ' + pageTo + ' sur ' + totalRows + ' lignes au total';
+        },
+        formatSearch: function () {
+            return 'Rechercher';
+        },
+        formatNoMatches: function () {
+            return 'Aucun résultat trouvé';
+        },
+        formatRefresh: function () {
+            return 'Rafraîchir';
+        },
+        formatToggle: function () {
+            return 'Alterner';
+        },
+        formatColumns: function () {
+            return 'Colonnes';
+        },
+        formatAllRows: function () {
+            return 'Tous';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['fr-FR']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-fr-FR.min.js b/js/table/locale/bootstrap-table-fr-FR.min.js
new file mode 100644
index 0000000..c61ae76
--- /dev/null
+++ b/js/table/locale/bootstrap-table-fr-FR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["fr-FR"]={formatLoadingMessage:function(){return"Chargement en cours, patientez, s´il vous plaît ..."},formatRecordsPerPage:function(a){return a+" lignes par page"},formatShowingRows:function(a,b,c){return"Affichage des lignes "+a+" à "+b+" sur "+c+" lignes au total"},formatSearch:function(){return"Rechercher"},formatNoMatches:function(){return"Aucun résultat trouvé"},formatRefresh:function(){return"Rafraîchir"},formatToggle:function(){return"Alterner"},formatColumns:function(){return"Colonnes"},formatAllRows:function(){return"Tous"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["fr-FR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-hr-HR.js b/js/table/locale/bootstrap-table-hr-HR.js
new file mode 100644
index 0000000..f63a4fe
--- /dev/null
+++ b/js/table/locale/bootstrap-table-hr-HR.js
@@ -0,0 +1,44 @@
+/**
+ * Bootstrap Table Croatian translation
+ * Author: Petra Å trbenac (petra.strbenac@gmail.com)
+ * Author: Petra Å trbenac (petra.strbenac@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['hr-HR'] = {
+        formatLoadingMessage: function () {
+            return 'Molimo pričekajte ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' broj zapisa po stranici';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Prikazujem ' + pageFrom + '. - ' + pageTo + '. od ukupnog broja zapisa ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Pretraži';
+        },
+        formatNoMatches: function () {
+            return 'Nije pronađen niti jedan zapis';
+        },
+        formatPaginationSwitch: function () {
+            return 'Prikaži/sakrij stranice';
+        },
+        formatRefresh: function () {
+            return 'Osvježi';
+        },
+        formatToggle: function () {
+            return 'Promijeni prikaz';
+        },
+        formatColumns: function () {
+            return 'Kolone';
+        },
+        formatAllRows: function () {
+            return 'Sve';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['hr-HR']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-hr-HR.min.js b/js/table/locale/bootstrap-table-hr-HR.min.js
new file mode 100644
index 0000000..c876e14
--- /dev/null
+++ b/js/table/locale/bootstrap-table-hr-HR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["hr-HR"]={formatLoadingMessage:function(){return"Molimo pričekajte ..."},formatRecordsPerPage:function(a){return a+" broj zapisa po stranici"},formatShowingRows:function(a,b,c){return"Prikazujem "+a+". - "+b+". od ukupnog broja zapisa "+c},formatSearch:function(){return"Pretraži"},formatNoMatches:function(){return"Nije pronađen niti jedan zapis"},formatPaginationSwitch:function(){return"Prikaži/sakrij stranice"},formatRefresh:function(){return"Osvježi"},formatToggle:function(){return"Promijeni prikaz"},formatColumns:function(){return"Kolone"},formatAllRows:function(){return"Sve"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["hr-HR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-hu-HU.js b/js/table/locale/bootstrap-table-hu-HU.js
new file mode 100644
index 0000000..353f098
--- /dev/null
+++ b/js/table/locale/bootstrap-table-hu-HU.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Hungarian translation
+ * Author: Nagy Gergely <info@nagygergely.eu>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['hu-HU'] = {
+        formatLoadingMessage: function () {
+            return 'Betöltés, kérem várjon...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekord per oldal';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Megjelenítve ' + pageFrom + ' - ' + pageTo + ' / ' + totalRows + ' összesen';
+        },
+        formatSearch: function () {
+            return 'Keresés';
+        },
+        formatNoMatches: function () {
+            return 'Nincs találat';
+        },
+        formatPaginationSwitch: function () {
+            return 'Lapozó elrejtése/megjelenítése';
+        },
+        formatRefresh: function () {
+            return 'Frissítés';
+        },
+        formatToggle: function () {
+            return 'Összecsuk/Kinyit';
+        },
+        formatColumns: function () {
+            return 'Oszlopok';
+        },
+        formatAllRows: function () {
+            return 'Összes';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['hu-HU']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-hu-HU.min.js b/js/table/locale/bootstrap-table-hu-HU.min.js
new file mode 100644
index 0000000..4723d10
--- /dev/null
+++ b/js/table/locale/bootstrap-table-hu-HU.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["hu-HU"]={formatLoadingMessage:function(){return"Betöltés, kérem várjon..."},formatRecordsPerPage:function(a){return a+" rekord per oldal"},formatShowingRows:function(a,b,c){return"Megjelenítve "+a+" - "+b+" / "+c+" összesen"},formatSearch:function(){return"Keresés"},formatNoMatches:function(){return"Nincs találat"},formatPaginationSwitch:function(){return"Lapozó elrejtése/megjelenítése"},formatRefresh:function(){return"Frissítés"},formatToggle:function(){return"Összecsuk/Kinyit"},formatColumns:function(){return"Oszlopok"},formatAllRows:function(){return"Összes"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["hu-HU"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-it-IT.js b/js/table/locale/bootstrap-table-it-IT.js
new file mode 100644
index 0000000..0c2ea74
--- /dev/null
+++ b/js/table/locale/bootstrap-table-it-IT.js
@@ -0,0 +1,38 @@
+/**
+ * Bootstrap Table Italian translation
+ * Author: Davide Renzi<davide.renzi@gmail.com>
+ * Author: Davide Borsatto <davide.borsatto@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['it-IT'] = {
+        formatLoadingMessage: function () {
+            return 'Caricamento in corso...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' elementi per pagina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Pagina ' + pageFrom + ' di ' + pageTo + ' (' + totalRows + ' records)';
+        },
+        formatSearch: function () {
+            return 'Cerca';
+        },
+        formatNoMatches: function () {
+            return 'Nessun elemento trovato';
+        },
+        formatRefresh: function () {
+            return 'Aggiorna';
+        },
+        formatToggle: function () {
+            return 'Alterna';
+        },
+        formatColumns: function () {
+            return 'Colonne';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['it-IT']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-it-IT.min.js b/js/table/locale/bootstrap-table-it-IT.min.js
new file mode 100644
index 0000000..f39e4b4
--- /dev/null
+++ b/js/table/locale/bootstrap-table-it-IT.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["it-IT"]={formatLoadingMessage:function(){return"Caricamento in corso..."},formatRecordsPerPage:function(a){return a+" elementi per pagina"},formatShowingRows:function(a,b,c){return"Pagina "+a+" di "+b+" ("+c+" records)"},formatSearch:function(){return"Cerca"},formatNoMatches:function(){return"Nessun elemento trovato"},formatRefresh:function(){return"Aggiorna"},formatToggle:function(){return"Alterna"},formatColumns:function(){return"Colonne"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["it-IT"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ja-JP.js b/js/table/locale/bootstrap-table-ja-JP.js
new file mode 100644
index 0000000..3a0f3ec
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ja-JP.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Japanese translation
+ * Author: Azamshul Azizy <azamshul@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ja-JP'] = {
+        formatLoadingMessage: function () {
+            return '読み込み中です。少々お待ちください。';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return 'ページ当たり最大' + pageNumber + '件';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '全' + totalRows + '件から、'+ pageFrom + 'から' + pageTo + '件目まで表示しています';
+        },
+        formatSearch: function () {
+            return '検索';
+        },
+        formatNoMatches: function () {
+            return '該当するレコードが見つかりません';
+        },
+        formatPaginationSwitch: function () {
+            return 'ページ数を表示・非表示';
+        },
+        formatRefresh: function () {
+            return 'æ›´æ–°';
+        },
+        formatToggle: function () {
+            return 'トグル';
+        },
+        formatColumns: function () {
+            return '列';
+        },
+        formatAllRows: function () {
+            return 'すべて';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ja-JP']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ja-JP.min.js b/js/table/locale/bootstrap-table-ja-JP.min.js
new file mode 100644
index 0000000..cdc3394
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ja-JP.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ja-JP"]={formatLoadingMessage:function(){return"読み込み中です。少々お待ちください。"},formatRecordsPerPage:function(a){return"ページ当たり最大"+a+"件"},formatShowingRows:function(a,b,c){return"全"+c+"件から、"+a+"から"+b+"件目まで表示しています"},formatSearch:function(){return"検索"},formatNoMatches:function(){return"該当するレコードが見つかりません"},formatPaginationSwitch:function(){return"ページ数を表示・非表示"},formatRefresh:function(){return"更新"},formatToggle:function(){return"トグル"},formatColumns:function(){return"列"},formatAllRows:function(){return"すべて"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ja-JP"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ka-GE.js b/js/table/locale/bootstrap-table-ka-GE.js
new file mode 100644
index 0000000..05da142
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ka-GE.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Georgian translation
+ * Author: Levan Lotuashvili <l.lotuashvili@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ka-GE'] = {
+        formatLoadingMessage: function() {
+            return 'იტვირთება, გთხოვთ მოიცადოთ...';
+        },
+        formatRecordsPerPage: function(pageNumber) {
+            return pageNumber + ' ჩანაწერი თითო გვერდზე';
+        },
+        formatShowingRows: function(pageFrom, pageTo, totalRows) {
+            return 'ნაჩვენებია ' + pageFrom + '-დან ' + pageTo + '-მდე ჩანაწერი ჯამური ' + totalRows + '-დან';
+        },
+        formatSearch: function() {
+            return 'ძებნა';
+        },
+        formatNoMatches: function() {
+            return 'მონაცემები არ არის';
+        },
+        formatPaginationSwitch: function() {
+            return 'გვერდების გადამრთველის დამალვა/გამოჩენა';
+        },
+        formatRefresh: function() {
+            return 'განახლება';
+        },
+        formatToggle: function() {
+            return 'ჩართვა/გამორთვა';
+        },
+        formatColumns: function() {
+            return 'სვეტები';
+        }
+    };
+    
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ka-GE']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-ka-GE.min.js b/js/table/locale/bootstrap-table-ka-GE.min.js
new file mode 100644
index 0000000..bcbb0dc
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ka-GE.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ka-GE"]={formatLoadingMessage:function(){return"იტვირთება, გთხოვთ მოიცადოთ..."},formatRecordsPerPage:function(a){return a+" ჩანაწერი თითო გვერდზე"},formatShowingRows:function(a,b,c){return"ნაჩვენებია "+a+"-დან "+b+"-მდე ჩანაწერი ჯამური "+c+"-დან"},formatSearch:function(){return"ძებნა"},formatNoMatches:function(){return"მონაცემები არ არის"},formatPaginationSwitch:function(){return"გვერდების გადამრთველის დამალვა/გამოჩენა"},formatRefresh:function(){return"განახლება"},formatToggle:function(){return"ჩართვა/გამორთვა"},formatColumns:function(){return"სვეტები"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ka-GE"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ko-KR.js b/js/table/locale/bootstrap-table-ko-KR.js
new file mode 100644
index 0000000..c8cf703
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ko-KR.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Korean translation
+ * Author: Yi Tae-Hyeong (jsonobject@gmail.com)
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ko-KR'] = {
+        formatLoadingMessage: function () {
+            return '데이터를 불러오는 중입니다...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return '페이지 당 ' + pageNumber + '개 데이터 출력';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '전체 ' + totalRows + '개 중 ' + pageFrom + '~' + pageTo + '번째 데이터 출력,';
+        },
+        formatSearch: function () {
+            return '검색';
+        },
+        formatNoMatches: function () {
+            return '조회된 데이터가 없습니다.';
+        },
+        formatRefresh: function () {
+            return '새로 고침';
+        },
+        formatToggle: function () {
+            return '전환';
+        },
+        formatColumns: function () {
+            return '컬럼 필터링';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ko-KR']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ko-KR.min.js b/js/table/locale/bootstrap-table-ko-KR.min.js
new file mode 100644
index 0000000..1db7c71
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ko-KR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ko-KR"]={formatLoadingMessage:function(){return"데이터를 불러오는 중입니다..."},formatRecordsPerPage:function(a){return"페이지 당 "+a+"개 데이터 출력"},formatShowingRows:function(a,b,c){return"전체 "+c+"개 중 "+a+"~"+b+"번째 데이터 출력,"},formatSearch:function(){return"검색"},formatNoMatches:function(){return"조회된 데이터가 없습니다."},formatRefresh:function(){return"새로 고침"},formatToggle:function(){return"전환"},formatColumns:function(){return"컬럼 필터링"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ko-KR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ms-MY.js b/js/table/locale/bootstrap-table-ms-MY.js
new file mode 100644
index 0000000..edb5eb6
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ms-MY.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Malay translation
+ * Author: Azamshul Azizy <azamshul@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ms-MY'] = {
+        formatLoadingMessage: function () {
+            return 'Permintaan sedang dimuatkan. Sila tunggu sebentar...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekod setiap muka surat';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Sedang memaparkan rekod ' + pageFrom + ' hingga ' + pageTo + ' daripada jumlah ' + totalRows + ' rekod';
+        },
+        formatSearch: function () {
+            return 'Cari';
+        },
+        formatNoMatches: function () {
+            return 'Tiada rekod yang menyamai permintaan';
+        },
+        formatPaginationSwitch: function () {
+            return 'Tunjuk/sembunyi muka surat';
+        },
+        formatRefresh: function () {
+            return 'Muatsemula';
+        },
+        formatToggle: function () {
+            return 'Tukar';
+        },
+        formatColumns: function () {
+            return 'Lajur';
+        },
+        formatAllRows: function () {
+            return 'Semua';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ms-MY']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-ms-MY.min.js b/js/table/locale/bootstrap-table-ms-MY.min.js
new file mode 100644
index 0000000..0e27af3
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ms-MY.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ms-MY"]={formatLoadingMessage:function(){return"Permintaan sedang dimuatkan. Sila tunggu sebentar..."},formatRecordsPerPage:function(a){return a+" rekod setiap muka surat"},formatShowingRows:function(a,b,c){return"Sedang memaparkan rekod "+a+" hingga "+b+" daripada jumlah "+c+" rekod"},formatSearch:function(){return"Cari"},formatNoMatches:function(){return"Tiada rekod yang menyamai permintaan"},formatPaginationSwitch:function(){return"Tunjuk/sembunyi muka surat"},formatRefresh:function(){return"Muatsemula"},formatToggle:function(){return"Tukar"},formatColumns:function(){return"Lajur"},formatAllRows:function(){return"Semua"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ms-MY"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-nb-NO.js b/js/table/locale/bootstrap-table-nb-NO.js
new file mode 100644
index 0000000..473051d
--- /dev/null
+++ b/js/table/locale/bootstrap-table-nb-NO.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table norwegian translation
+ * Author: Jim Nordbø, jim@nordb.no
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['nb-NO'] = {
+        formatLoadingMessage: function () {
+            return 'Oppdaterer, vennligst vent...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' poster pr side';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Viser ' + pageFrom + ' til ' + pageTo + ' av ' + totalRows + ' rekker';
+        },
+        formatSearch: function () {
+            return 'Søk';
+        },
+        formatNoMatches: function () {
+            return 'Ingen poster funnet';
+        },
+        formatRefresh: function () {
+            return 'Oppdater';
+        },
+        formatToggle: function () {
+            return 'Endre';
+        },
+        formatColumns: function () {
+            return 'Kolonner';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['nb-NO']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-nb-NO.min.js b/js/table/locale/bootstrap-table-nb-NO.min.js
new file mode 100644
index 0000000..a0a4fef
--- /dev/null
+++ b/js/table/locale/bootstrap-table-nb-NO.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["nb-NO"]={formatLoadingMessage:function(){return"Oppdaterer, vennligst vent..."},formatRecordsPerPage:function(a){return a+" poster pr side"},formatShowingRows:function(a,b,c){return"Viser "+a+" til "+b+" av "+c+" rekker"},formatSearch:function(){return"Søk"},formatNoMatches:function(){return"Ingen poster funnet"},formatRefresh:function(){return"Oppdater"},formatToggle:function(){return"Endre"},formatColumns:function(){return"Kolonner"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["nb-NO"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-nl-NL.js b/js/table/locale/bootstrap-table-nl-NL.js
new file mode 100644
index 0000000..1089de9
--- /dev/null
+++ b/js/table/locale/bootstrap-table-nl-NL.js
@@ -0,0 +1,28 @@
+/**
+ * Bootstrap Table Dutch translation
+ * Author: Your Name <info@a2hankes.nl>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['nl-NL'] = {
+        formatLoadingMessage: function () {
+            return 'Laden, even geduld...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' records per pagina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Toon ' + pageFrom + ' tot ' + pageTo + ' van ' + totalRows + ' records';
+        },
+        formatSearch: function () {
+            return 'Zoeken';
+        },
+        formatNoMatches: function () {
+            return 'Geen resultaten gevonden';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['nl-NL']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-nl-NL.min.js b/js/table/locale/bootstrap-table-nl-NL.min.js
new file mode 100644
index 0000000..88a5cc8
--- /dev/null
+++ b/js/table/locale/bootstrap-table-nl-NL.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["nl-NL"]={formatLoadingMessage:function(){return"Laden, even geduld..."},formatRecordsPerPage:function(a){return a+" records per pagina"},formatShowingRows:function(a,b,c){return"Toon "+a+" tot "+b+" van "+c+" records"},formatSearch:function(){return"Zoeken"},formatNoMatches:function(){return"Geen resultaten gevonden"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["nl-NL"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-pl-PL.js b/js/table/locale/bootstrap-table-pl-PL.js
new file mode 100644
index 0000000..af79be2
--- /dev/null
+++ b/js/table/locale/bootstrap-table-pl-PL.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Polish translation
+ * Author: zergu <michal.zagdan @ gmail com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['pl-PL'] = {
+        formatLoadingMessage: function () {
+            return 'Ładowanie, proszę czekać...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rekordów na stronę';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Wyświetlanie rekordów od ' + pageFrom + ' do ' + pageTo + ' z ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Szukaj';
+        },
+        formatNoMatches: function () {
+            return 'Niestety, nic nie znaleziono';
+        },
+        formatRefresh: function () {
+            return 'Odśwież';
+        },
+        formatToggle: function () {
+            return 'Przełącz';
+        },
+        formatColumns: function () {
+            return 'Kolumny';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pl-PL']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-pl-PL.min.js b/js/table/locale/bootstrap-table-pl-PL.min.js
new file mode 100644
index 0000000..e09fd2f
--- /dev/null
+++ b/js/table/locale/bootstrap-table-pl-PL.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["pl-PL"]={formatLoadingMessage:function(){return"Ładowanie, proszę czekać..."},formatRecordsPerPage:function(a){return a+" rekordów na stronę"},formatShowingRows:function(a,b,c){return"Wyświetlanie rekordów od "+a+" do "+b+" z "+c},formatSearch:function(){return"Szukaj"},formatNoMatches:function(){return"Niestety, nic nie znaleziono"},formatRefresh:function(){return"Odśwież"},formatToggle:function(){return"Przełącz"},formatColumns:function(){return"Kolumny"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["pl-PL"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-pt-BR.js b/js/table/locale/bootstrap-table-pt-BR.js
new file mode 100644
index 0000000..63319a1
--- /dev/null
+++ b/js/table/locale/bootstrap-table-pt-BR.js
@@ -0,0 +1,41 @@
+/**
+ * Bootstrap Table Brazilian Portuguese Translation
+ * Author: Eduardo Cerqueira<egcerqueira@gmail.com>
+ * Update: João Mello<jmello@hotmail.com.br>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['pt-BR'] = {
+        formatLoadingMessage: function () {
+            return 'Carregando, aguarde...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Exibindo ' + pageFrom + ' até ' + pageTo + ' de ' + totalRows + ' linhas';
+        },
+        formatSearch: function () { 
+            return 'Pesquisar';
+        },
+        formatRefresh: function () { 
+            return 'Recarregar';
+        },
+        formatToggle: function () { 
+            return 'Alternar';
+        },
+        formatColumns: function () { 
+            return 'Colunas';
+        },
+        formatPaginationSwitch: function () { 
+            return 'Ocultar/Exibir paginação';
+        },
+        formatNoMatches: function () {
+            return 'Nenhum registro encontrado';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pt-BR']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-pt-BR.min.js b/js/table/locale/bootstrap-table-pt-BR.min.js
new file mode 100644
index 0000000..1376233
--- /dev/null
+++ b/js/table/locale/bootstrap-table-pt-BR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["pt-BR"]={formatLoadingMessage:function(){return"Carregando, aguarde..."},formatRecordsPerPage:function(a){return a+" registros por página"},formatShowingRows:function(a,b,c){return"Exibindo "+a+" até "+b+" de "+c+" linhas"},formatSearch:function(){return"Pesquisar"},formatRefresh:function(){return"Recarregar"},formatToggle:function(){return"Alternar"},formatColumns:function(){return"Colunas"},formatPaginationSwitch:function(){return"Ocultar/Exibir paginação"},formatNoMatches:function(){return"Nenhum registro encontrado"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["pt-BR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-pt-PT.js b/js/table/locale/bootstrap-table-pt-PT.js
new file mode 100644
index 0000000..cb0b682
--- /dev/null
+++ b/js/table/locale/bootstrap-table-pt-PT.js
@@ -0,0 +1,28 @@
+/**
+ * Bootstrap Table Portuguese Portugal Translation
+ * Author: Burnspirit<burnspirit@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['pt-PT'] = {
+        formatLoadingMessage: function () {
+            return 'A carregar, aguarde...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registos por página';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'A mostrar ' + pageFrom + ' até ' + pageTo + ' de ' + totalRows + ' linhas';
+        },
+        formatSearch: function () {
+            return 'Pesquisa';
+        },
+        formatNoMatches: function () {
+            return 'Nenhum registo encontrado';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['pt-PT']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-pt-PT.min.js b/js/table/locale/bootstrap-table-pt-PT.min.js
new file mode 100644
index 0000000..55164a3
--- /dev/null
+++ b/js/table/locale/bootstrap-table-pt-PT.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["pt-PT"]={formatLoadingMessage:function(){return"A carregar, aguarde..."},formatRecordsPerPage:function(a){return a+" registos por página"},formatShowingRows:function(a,b,c){return"A mostrar "+a+" até "+b+" de "+c+" linhas"},formatSearch:function(){return"Pesquisa"},formatNoMatches:function(){return"Nenhum registo encontrado"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["pt-PT"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ro-RO.js b/js/table/locale/bootstrap-table-ro-RO.js
new file mode 100644
index 0000000..64cd1a7
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ro-RO.js
@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Romanian translation
+ * Author: cristake <cristianiosif@me.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ro-RO'] = {
+        formatLoadingMessage: function () {
+            return 'Se incarca, va rugam asteptati...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' inregistrari pe pagina';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Arata de la ' + pageFrom + ' pana la ' + pageTo + ' din ' + totalRows + ' randuri';
+        },
+        formatSearch: function () {
+            return 'Cauta';
+        },
+        formatNoMatches: function () {
+            return 'Nu au fost gasite inregistrari';
+        },
+        formatPaginationSwitch: function () {
+            return 'Ascunde/Arata paginatia';
+        },
+        formatRefresh: function () {
+            return 'Reincarca';
+        },
+        formatToggle: function () {
+            return 'Comuta';
+        },
+        formatColumns: function () {
+            return 'Coloane';
+        },
+        formatAllRows: function () {
+            return 'Toate';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ro-RO']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ro-RO.min.js b/js/table/locale/bootstrap-table-ro-RO.min.js
new file mode 100644
index 0000000..b47d89f
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ro-RO.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ro-RO"]={formatLoadingMessage:function(){return"Se incarca, va rugam asteptati..."},formatRecordsPerPage:function(a){return a+" inregistrari pe pagina"},formatShowingRows:function(a,b,c){return"Arata de la "+a+" pana la "+b+" din "+c+" randuri"},formatSearch:function(){return"Cauta"},formatNoMatches:function(){return"Nu au fost gasite inregistrari"},formatPaginationSwitch:function(){return"Ascunde/Arata paginatia"},formatRefresh:function(){return"Reincarca"},formatToggle:function(){return"Comuta"},formatColumns:function(){return"Coloane"},formatAllRows:function(){return"Toate"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ro-RO"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ru-RU.js b/js/table/locale/bootstrap-table-ru-RU.js
new file mode 100644
index 0000000..272556d
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ru-RU.js
@@ -0,0 +1,36 @@
+/**
+ * Bootstrap Table Russian translation
+ * Author: Dunaevsky Maxim <dunmaksim@yandex.ru>
+ */
+(function ($) {
+    'use strict';
+    $.fn.bootstrapTable.locales['ru-RU'] = {
+        formatLoadingMessage: function () {
+            return 'Пожалуйста, подождите, идёт загрузка...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' записей на страницу';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Записи с ' + pageFrom + ' по ' + pageTo + ' из ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Поиск';
+        },
+        formatNoMatches: function () {
+            return 'Ничего не найдено';
+        },
+        formatRefresh: function () {
+            return 'Обновить';
+        },
+        formatToggle: function () {
+            return 'Переключить';
+        },
+        formatColumns: function () {
+            return 'Колонки';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ru-RU']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-ru-RU.min.js b/js/table/locale/bootstrap-table-ru-RU.min.js
new file mode 100644
index 0000000..6915385
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ru-RU.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ru-RU"]={formatLoadingMessage:function(){return"Пожалуйста, подождите, идёт загрузка..."},formatRecordsPerPage:function(a){return a+" записей на страницу"},formatShowingRows:function(a,b,c){return"Записи с "+a+" по "+b+" из "+c},formatSearch:function(){return"Поиск"},formatNoMatches:function(){return"Ничего не найдено"},formatRefresh:function(){return"Обновить"},formatToggle:function(){return"Переключить"},formatColumns:function(){return"Колонки"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ru-RU"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-sk-SK.js b/js/table/locale/bootstrap-table-sk-SK.js
new file mode 100644
index 0000000..05544e8
--- /dev/null
+++ b/js/table/locale/bootstrap-table-sk-SK.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Slovak translation
+ * Author: Jozef Dúc<jozef.d13@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['sk-SK'] = {
+        formatLoadingMessage: function () {
+            return 'Prosím čakajte ...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' záznamov na stranu';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Zobrazená ' + pageFrom + '. - ' + pageTo + '. položka z celkových ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Vyhľadávanie';
+        },
+        formatNoMatches: function () {
+            return 'Nenájdená žiadne vyhovujúca položka';
+        },
+        formatRefresh: function () {
+            return 'Obnoviť';
+        },
+        formatToggle: function () {
+            return 'Prepni';
+        },
+        formatColumns: function () {
+            return 'Stĺpce';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['sk-SK']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-sk-SK.min.js b/js/table/locale/bootstrap-table-sk-SK.min.js
new file mode 100644
index 0000000..4a1218e
--- /dev/null
+++ b/js/table/locale/bootstrap-table-sk-SK.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["sk-SK"]={formatLoadingMessage:function(){return"Prosím čakajte ..."},formatRecordsPerPage:function(a){return a+" záznamov na stranu"},formatShowingRows:function(a,b,c){return"Zobrazená "+a+". - "+b+". položka z celkových "+c},formatSearch:function(){return"Vyhľadávanie"},formatNoMatches:function(){return"Nenájdená žiadne vyhovujúca položka"},formatRefresh:function(){return"Obnoviť"},formatToggle:function(){return"Prepni"},formatColumns:function(){return"Stĺpce"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["sk-SK"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-sv-SE.js b/js/table/locale/bootstrap-table-sv-SE.js
new file mode 100644
index 0000000..67b8eb4
--- /dev/null
+++ b/js/table/locale/bootstrap-table-sv-SE.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Swedish translation
+ * Author: C Bratt <bratt@inix.se>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['sv-SE'] = {
+        formatLoadingMessage: function () {
+            return 'Laddar, vänligen vänta...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' rader per sida';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Visa ' + pageFrom + ' till ' + pageTo + ' av ' + totalRows + ' rader';
+        },
+        formatSearch: function () {
+            return 'Sök';
+        },
+        formatNoMatches: function () {
+            return 'Inga matchande resultat funna.';
+        },
+        formatRefresh: function () {
+            return 'Uppdatera';
+        },
+        formatToggle: function () {
+            return 'Skifta';
+        },
+        formatColumns: function () {
+            return 'kolumn';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['sv-SE']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-sv-SE.min.js b/js/table/locale/bootstrap-table-sv-SE.min.js
new file mode 100644
index 0000000..0dbfd17
--- /dev/null
+++ b/js/table/locale/bootstrap-table-sv-SE.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["sv-SE"]={formatLoadingMessage:function(){return"Laddar, vänligen vänta..."},formatRecordsPerPage:function(a){return a+" rader per sida"},formatShowingRows:function(a,b,c){return"Visa "+a+" till "+b+" av "+c+" rader"},formatSearch:function(){return"Sök"},formatNoMatches:function(){return"Inga matchande resultat funna."},formatRefresh:function(){return"Uppdatera"},formatToggle:function(){return"Skifta"},formatColumns:function(){return"kolumn"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["sv-SE"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-th-TH.js b/js/table/locale/bootstrap-table-th-TH.js
new file mode 100644
index 0000000..9382168
--- /dev/null
+++ b/js/table/locale/bootstrap-table-th-TH.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Thai translation
+ * Author: Monchai S.<monchais@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['th-TH'] = {
+        formatLoadingMessage: function () {
+            return 'กำลังโหลดข้อมูล, กรุณารอสักครู่...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' รายการต่อหน้า';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'รายการที่ ' + pageFrom + ' ถึง ' + pageTo + ' จากทั้งหมด ' + totalRows + ' รายการ';
+        },
+        formatSearch: function () {
+            return 'ค้นหา';
+        },
+        formatNoMatches: function () {
+            return 'ไม่พบรายการที่ค้นหา !';
+        },
+        formatRefresh: function () {
+            return 'รีเฟรส';
+        },
+        formatToggle: function () {
+            return 'สลับมุมมอง';
+        },
+        formatColumns: function () {
+            return 'คอลัมน์';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['th-TH']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-th-TH.min.js b/js/table/locale/bootstrap-table-th-TH.min.js
new file mode 100644
index 0000000..1c842c0
--- /dev/null
+++ b/js/table/locale/bootstrap-table-th-TH.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["th-TH"]={formatLoadingMessage:function(){return"กำลังโหลดข้อมูล, กรุณารอสักครู่..."},formatRecordsPerPage:function(a){return a+" รายการต่อหน้า"},formatShowingRows:function(a,b,c){return"รายการที่ "+a+" ถึง "+b+" จากทั้งหมด "+c+" รายการ"},formatSearch:function(){return"ค้นหา"},formatNoMatches:function(){return"ไม่พบรายการที่ค้นหา !"},formatRefresh:function(){return"รีเฟรส"},formatToggle:function(){return"สลับมุมมอง"},formatColumns:function(){return"คอลัมน์"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["th-TH"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-tr-TR.js b/js/table/locale/bootstrap-table-tr-TR.js
new file mode 100644
index 0000000..df38a79
--- /dev/null
+++ b/js/table/locale/bootstrap-table-tr-TR.js
@@ -0,0 +1,41 @@
+/**
+ * Bootstrap Table Turkish translation
+ * Author: Emin Åžen
+ * Author: Sercan Cakir <srcnckr@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['tr-TR'] = {
+        formatLoadingMessage: function () {
+            return 'Yükleniyor, lütfen bekleyin...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return 'Sayfa başına ' + pageNumber + ' kayıt.';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return totalRows + ' kayıttan ' + pageFrom + '-' + pageTo + ' arası gösteriliyor.';
+        },
+        formatSearch: function () {
+            return 'Ara';
+        },
+        formatNoMatches: function () {
+            return 'Eşleşen kayıt bulunamadı.';
+        },
+        formatRefresh: function () {
+            return 'Yenile';
+        },
+        formatToggle: function () {
+            return 'DeÄŸiÅŸtir';
+        },
+        formatColumns: function () {
+            return 'Sütunlar';
+        },
+        formatAllRows: function () {
+            return 'Tüm Satırlar';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['tr-TR']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-tr-TR.min.js b/js/table/locale/bootstrap-table-tr-TR.min.js
new file mode 100644
index 0000000..c7020db
--- /dev/null
+++ b/js/table/locale/bootstrap-table-tr-TR.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["tr-TR"]={formatLoadingMessage:function(){return"Yükleniyor, lütfen bekleyin..."},formatRecordsPerPage:function(a){return"Sayfa başına "+a+" kayıt."},formatShowingRows:function(a,b,c){return c+" kayıttan "+a+"-"+b+" arası gösteriliyor."},formatSearch:function(){return"Ara"},formatNoMatches:function(){return"Eşleşen kayıt bulunamadı."},formatRefresh:function(){return"Yenile"},formatToggle:function(){return"Değiştir"},formatColumns:function(){return"Sütunlar"},formatAllRows:function(){return"Tüm Satırlar"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["tr-TR"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-uk-UA.js b/js/table/locale/bootstrap-table-uk-UA.js
new file mode 100644
index 0000000..59228f2
--- /dev/null
+++ b/js/table/locale/bootstrap-table-uk-UA.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Ukrainian translation
+ * Author: Vitaliy Timchenko <vitaliy.timchenko@gmail.com>
+ */
+ (function ($) {
+    'use strict';
+    
+    $.fn.bootstrapTable.locales['uk-UA'] = {
+        formatLoadingMessage: function () {
+            return 'Завантаження, будь ласка, зачекайте...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' записів на сторінку';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Показано з ' + pageFrom + ' по ' + pageTo + '. Всього: ' + totalRows;
+        },
+        formatSearch: function () {
+            return 'Пошук';
+        },
+        formatNoMatches: function () {
+            return 'Не знайдено жодного запису';
+        },
+        formatRefresh: function () {
+            return 'Оновити';
+        },
+        formatToggle: function () {
+            return 'Змінити';
+        },
+        formatColumns: function () {
+            return 'Стовпці';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['uk-UA']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-uk-UA.min.js b/js/table/locale/bootstrap-table-uk-UA.min.js
new file mode 100644
index 0000000..311fe59
--- /dev/null
+++ b/js/table/locale/bootstrap-table-uk-UA.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["uk-UA"]={formatLoadingMessage:function(){return"Завантаження, будь ласка, зачекайте..."},formatRecordsPerPage:function(a){return a+" записів на сторінку"},formatShowingRows:function(a,b,c){return"Показано з "+a+" по "+b+". Всього: "+c},formatSearch:function(){return"Пошук"},formatNoMatches:function(){return"Не знайдено жодного запису"},formatRefresh:function(){return"Оновити"},formatToggle:function(){return"Змінити"},formatColumns:function(){return"Стовпці"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["uk-UA"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-ur-PK.js b/js/table/locale/bootstrap-table-ur-PK.js
new file mode 100644
index 0000000..466498c
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ur-PK.js
@@ -0,0 +1,37 @@
+/**
+ * Bootstrap Table Urdu translation
+ * Author: Malik <me@malikrizwan.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['ur-PK'] = {
+        formatLoadingMessage: function () {
+            return 'براۓ مہربانی انتظار کیجئے';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' ریکارڈز فی صفہ ';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'دیکھیں ' + pageFrom + ' سے ' + pageTo + ' کے ' +  totalRows + 'ریکارڈز';
+        },
+        formatSearch: function () {
+            return 'تلاش';
+        },
+        formatNoMatches: function () {
+            return 'کوئی ریکارڈ نہیں ملا';
+        },
+        formatRefresh: function () {
+            return 'تازہ کریں';
+        },
+        formatToggle: function () {
+            return 'تبدیل کریں';
+        },
+        formatColumns: function () {
+            return 'کالم';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['ur-PK']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-ur-PK.min.js b/js/table/locale/bootstrap-table-ur-PK.min.js
new file mode 100644
index 0000000..46ddeb9
--- /dev/null
+++ b/js/table/locale/bootstrap-table-ur-PK.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["ur-PK"]={formatLoadingMessage:function(){return"براۓ مہربانی انتظار کیجئے"},formatRecordsPerPage:function(a){return a+" ریکارڈز فی صفہ "},formatShowingRows:function(a,b,c){return"دیکھیں "+a+" سے "+b+" کے "+c+"ریکارڈز"},formatSearch:function(){return"تلاش"},formatNoMatches:function(){return"کوئی ریکارڈ نہیں ملا"},formatRefresh:function(){return"تازہ کریں"},formatToggle:function(){return"تبدیل کریں"},formatColumns:function(){return"کالم"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["ur-PK"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-vi-VN.js b/js/table/locale/bootstrap-table-vi-VN.js
new file mode 100644
index 0000000..42c8103
--- /dev/null
+++ b/js/table/locale/bootstrap-table-vi-VN.js
@@ -0,0 +1,28 @@
+/**
+ * Bootstrap Table Vietnamese translation
+ * Author: Duc N. PHAM <pngduc@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['vi-VN'] = {
+        formatLoadingMessage: function () {
+            return 'Đang tải...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' bản ghi mỗi trang';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'Hiển thị từ trang ' + pageFrom + ' đến ' + pageTo + ' của ' + totalRows + ' bảng ghi';
+        },
+        formatSearch: function () {
+            return 'Tìm kiếm';
+        },
+        formatNoMatches: function () {
+            return 'Không có dữ liệu';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['vi-VN']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-vi-VN.min.js b/js/table/locale/bootstrap-table-vi-VN.min.js
new file mode 100644
index 0000000..161f65d
--- /dev/null
+++ b/js/table/locale/bootstrap-table-vi-VN.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["vi-VN"]={formatLoadingMessage:function(){return"Đang tải..."},formatRecordsPerPage:function(a){return a+" bản ghi mỗi trang"},formatShowingRows:function(a,b,c){return"Hiển thị từ trang "+a+" đến "+b+" của "+c+" bảng ghi"},formatSearch:function(){return"Tìm kiếm"},formatNoMatches:function(){return"Không có dữ liệu"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["vi-VN"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-zh-CN.js b/js/table/locale/bootstrap-table-zh-CN.js
new file mode 100644
index 0000000..e352922
--- /dev/null
+++ b/js/table/locale/bootstrap-table-zh-CN.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Chinese translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['zh-CN'] = {
+        formatLoadingMessage: function () {
+            return '正在努力地加载数据中,请稍候……';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return '每页显示 ' + pageNumber + ' 条记录';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录';
+        },
+        formatSearch: function () {
+            return '搜索';
+        },
+        formatNoMatches: function () {
+            return '没有找到匹配的记录';
+        },
+        formatPaginationSwitch: function () {
+            return '隐藏/显示分页';
+        },
+        formatRefresh: function () {
+            return '刷新';
+        },
+        formatToggle: function () {
+            return '切换';
+        },
+        formatColumns: function () {
+            return '列';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);
+
+})(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-zh-CN.min.js b/js/table/locale/bootstrap-table-zh-CN.min.js
new file mode 100644
index 0000000..be675e7
--- /dev/null
+++ b/js/table/locale/bootstrap-table-zh-CN.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(a){return"每页显示 "+a+" 条记录"},formatShowingRows:function(a,b,c){return"显示第 "+a+" 到第 "+b+" 条记录,总共 "+c+" 条记录"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-CN"])}(jQuery);
\ No newline at end of file
diff --git a/js/table/locale/bootstrap-table-zh-TW.js b/js/table/locale/bootstrap-table-zh-TW.js
new file mode 100644
index 0000000..f7cd669
--- /dev/null
+++ b/js/table/locale/bootstrap-table-zh-TW.js
@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Chinese translation
+ * Author: Zhixin Wen<wenzhixin2010@gmail.com>
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['zh-TW'] = {
+        formatLoadingMessage: function () {
+            return '正在努力地載入資料,請稍候……';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return '每頁顯示 ' + pageNumber + ' 項記錄';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return '顯示第 ' + pageFrom + ' 到第 ' + pageTo + ' 項記錄,總共 ' + totalRows + ' 項記錄';
+        },
+        formatSearch: function () {
+            return '搜尋';
+        },
+        formatNoMatches: function () {
+            return '沒有找符合的結果';
+        },
+        formatPaginationSwitch: function () {
+            return '隱藏/顯示分頁';
+        },
+        formatRefresh: function () {
+            return '刷新';
+        },
+        formatToggle: function () {
+            return '切換';
+        },
+        formatColumns: function () {
+            return '列';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-TW']);
+
+})(jQuery);
diff --git a/js/table/locale/bootstrap-table-zh-TW.min.js b/js/table/locale/bootstrap-table-zh-TW.min.js
new file mode 100644
index 0000000..b12631a
--- /dev/null
+++ b/js/table/locale/bootstrap-table-zh-TW.min.js
@@ -0,0 +1,7 @@
+/*
+* bootstrap-table - v1.9.1 - 2015-10-25
+* https://github.com/wenzhixin/bootstrap-table
+* Copyright (c) 2015 zhixin wen
+* Licensed MIT License
+*/
+!function(a){"use strict";a.fn.bootstrapTable.locales["zh-TW"]={formatLoadingMessage:function(){return"正在努力地載入資料,請稍候……"},formatRecordsPerPage:function(a){return"每頁顯示 "+a+" 項記錄"},formatShowingRows:function(a,b,c){return"顯示第 "+a+" 到第 "+b+" 項記錄,總共 "+c+" 項記錄"},formatSearch:function(){return"搜尋"},formatNoMatches:function(){return"沒有找符合的結果"},formatPaginationSwitch:function(){return"隱藏/顯示分頁"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切換"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-TW"])}(jQuery);
\ No newline at end of file
diff --git a/morfeusz/morfeusz.css b/morfeusz/morfeusz.css
new file mode 100644
index 0000000..cb669e2
--- /dev/null
+++ b/morfeusz/morfeusz.css
@@ -0,0 +1,73 @@
+#lexpelement_morfeusz {
+  display: flex;
+  flex-flow: row wrap;
+  /*justify-content: space-around;*/
+  justify-content: center;
+}
+
+#lexpelement_morfeusz .table-container {
+  padding: 15px 10px 5px;
+  min-width: 30%;
+  overflow: auto;
+}
+
+#lexpelement_morfeusz h2 {
+  color: #41423A;
+  font-size: 26px;
+  font-family: 'Saira Semi Condensed', sans-serif;
+}
+
+#lexpelement_morfeusz h2.error {
+  color: crimson;
+}
+
+#lexpelement_morfeusz div.base-form {
+  width: 100%;
+  display: block;
+  padding: 25px 0 0px;
+  color: #41423A;
+  font-size: 18px;
+  font-family: 'Saira Semi Condensed', sans-serif;
+}
+
+#lexpelement_morfeusz table.table-styling {
+  border: none;
+  margin: 20px;
+}
+
+#lexpelement_morfeusz table.table-styling th {
+  text-align: center;
+  background-color: #EAE5E5;
+}
+
+#lexpelement_morfeusz table.table-styling th.no-background {
+  background-color: #F9F9F9;
+}
+#lexpelement_morfeusz table.table-styling .border-top-none {
+  border-top: none;
+}
+
+#lexpelement_morfeusz table.table-styling .border-left {
+  border-left: 2px solid #EAE5E5;
+}
+
+#lexpelement_morfeusz table.table-styling .border-right {
+  border-right: 2px solid #EAE5E5;
+}
+
+#lexpelement_morfeusz table.table-styling .background {
+  background-color: #DADADA;
+  vertical-align: middle;
+}
+
+#lexpelement_morfeusz table .tag-entry {
+  padding: 7px 0;
+}
+
+#lexpelement_morfeusz table .tag-entry.type {
+  max-width: 700px;
+}
+
+#lexpelement_morfeusz table .tag-entry strong {
+  letter-spacing: 1px;
+}
\ No newline at end of file
diff --git a/morfeusz/morfeusz.js b/morfeusz/morfeusz.js
new file mode 100644
index 0000000..28020fd
--- /dev/null
+++ b/morfeusz/morfeusz.js
@@ -0,0 +1,854 @@
+function Morfeusz(data) {
+  this.data = data;
+  console.log(data);
+}
+
+Morfeusz.baseMap = {
+  "subst":"rzeczownik", "depr":"rzeczownik/forma deprecjatywna", "ger":"czasownik/odsłownik", "fin":"czasownik", "inf":"czasownik/bezokolicznik", "adj":"przymiotnik", "adja":"przymiotnik przyprzymiotnikowy", "adv":"przysłówek odprzymiotnikowy i/lub stopniowalny",
+  "sg":"pojedyncza", "pl":"mnoga",
+  "acc":"mianownik", "dat":"dopełniacz", "gen":"celownik", "inst":"biernik", "loc":"narzędnik", "nom":"miejscownik", "voc":"wołacz",
+  "m":"męski", "m1":"męski osobowy", "m2":"męski zwierzęcy", "m3":"męski rzeczowy", "mo":"męskoosobowy", "ż":"żeński", "n1":"nijaki pierwszy", "n2":"nijaki drugi", "p1":"przymnogi osobowy", "p2":"przymnogi drugi", "p3":"przymnogi trzeci",
+  "pos":"równy", "com":"wyższy", "sup":"najwyższy",
+  "imperf":"niedokonany",
+  "neg":"zanegowana",
+  "aff":"niezanegowana"
+};
+
+getBaseData = function(data) {
+  let result = new Array();
+
+  $(data).each(function(index, element) {
+    let resultData = '';
+    if (element.indexOf('.' > -1)) {
+      let arr = element.split('.');
+      $(arr).each(function(index2, element2) {
+        if (element2 in Morfeusz.baseMap) {
+          index2 != arr.length - 1 ? resultData += Morfeusz.baseMap[element2] + ", " : resultData += Morfeusz.baseMap[element2];
+        }
+      });
+      result.push(resultData);
+    } else {
+      element in Morfeusz.baseMap ? result.push(Morfeusz.baseMap[element]) : result.push('-');
+    }
+  });
+
+  return result;
+}
+
+Morfeusz.prototype.showBaseForm = function(data) {
+  // console.log(data);
+  if (window.location.href.split("/")[3] == 'orth') {
+    if (data[0].length > 0) {
+      let originalForm = $('#phrase').val(),
+          baseForm = data[0][1],
+          tableData = '',
+          language = window.location.href.split("/")[4];
+
+      $(data).each(function(index, element) {
+        let dataArr = element[2].split(':'),
+            entries = getBaseData(dataArr),
+            grammarCases = '',
+            type = '',
+            aspect = '',
+            negation = '';
+
+        if (entries[2] != '' && entries[2] != undefined && entries[2] != null) {
+          grammarCases = '<p class="tag-entry"><strong>Przypadek: </strong>' + entries[2] + '</p>';
+        }
+
+        if (entries[3] != '' && entries[3] != undefined && entries[4] != null) {
+          type = '<p class="tag-entry type"><strong>Rodzaj: </strong>' + entries[3] + '</p>';
+        }
+
+        if (entries[4] != '' && entries[4] != undefined && entries[4] != null) {
+          aspect = '<p class="tag-entry"><strong>Aspekt: </strong>' + entries[4] + '</p>';
+        }
+
+        if (entries[5] != '' && entries[5] != undefined && entries[5] != null) {
+          negation = '<p class="tag-entry"><strong>Zanegowanie: </strong>' + entries[5] + '</p>';
+        }
+
+        tableData +=
+          '<tr>' +
+            '<td>' + element[0] + '</td>' +
+            '<td><a href="/lemma/' + language + '/' + element[1] + '">' + element[1] + '</a></td>' +
+            '<td>' + element[2] + '</td>' +
+            '<td>' +
+              '<p class="tag-entry"><strong>Leksem/fleksem: </strong>' + entries[0] + '</p>' +
+              '<p class="tag-entry"><strong>Liczba: </strong>' + entries[1] + '</p>' +
+              grammarCases +
+              type +
+              aspect +
+              negation +
+            '</td>' +
+          '</tr>';
+      });
+
+      let tableContent =
+        '<div class="table-container">' +
+          '<h2><span lang="pl">Forma tekstowa</span><span lang="en">Text form</span></h2>' +
+          '<table class="table table-striped table-styling">' +
+            '<thead>' +
+              '<tr>' +
+                '<th class="border-left"><span lang="pl">Forma wyrazowa</span><span lang="en">Word form</span></th>' +
+                '<th><span lang="pl">Forma bazowa</span><span lang="en">Base form</span></th>' +
+                '<th>Tag</th>' +
+                '<th><span lang="pl">Znaczenie tagu</span><span lang="en">Description of tag</span></th>' +
+              '</tr>' +
+            '</thead>' +
+            '<tbody>' +
+              tableData
+            '</tbody>' +
+          '</table>' +
+        '</div>';
+
+      if (tableData == '') {
+        return false;
+      }
+      $('#lexpelement_morfeusz').append(tableContent);
+      return true;
+    }
+  }
+  return false;
+}
+
+Morfeusz.prototype.showIndicativePresent = function(data) {
+  // Step 1 - get table of only fin elements
+  let table = new Array
+      lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('fin:') > -1) {
+      table.push(element);
+    }
+  });
+
+  // Step 2 - prepare data
+  let singularOne = '-', singularTwo = '-', singularThree = '-', pluralOne = '-', pluralTwo = '-', pluralThree = '-';
+
+  table.map(function(element, index) {
+    if (element[2].indexOf('sg:pri') > -1) { singularOne = element[0]; }
+    if (element[2].indexOf('sg:sec') > -1) { singularTwo = element[0]; }
+    if (element[2].indexOf('sg:ter') > -1) { singularThree = element[0]; }
+    if (element[2].indexOf('pl:pri') > -1) { pluralOne = element[0]; }
+    if (element[2].indexOf('pl:sec') > -1) { pluralTwo = element[0]; }
+    if (element[2].indexOf('pl:ter') > -1) { pluralThree = element[0]; }
+  });
+
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Tryb oznajmujący - czas teraźniejszy</span><span lang="en">Declarative mode - present tense</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th class="border-left"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">1 os.</span><span lang="en">1 p.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularOne + '">' + singularOne + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralOne + '">' + pluralOne + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">2 os.</span><span lang="en">2 p.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularTwo + '">' + singularTwo + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralTwo + '">' + pluralTwo + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">3 os.</span><span lang="en">3 p.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularThree + '">' + singularThree + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralThree + '">' + pluralThree + '</a></td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+    if (singularOne != '-' || singularTwo != '-' || singularThree != '-' || pluralOne != '-' || pluralTwo != '-' || pluralThree != '-') {
+      $('#lexpelement_morfeusz').append(tableContent);
+      return true;
+    }
+    return false;
+}
+
+Morfeusz.prototype.showIndicativePast = function(data) {
+  // Step 1 - get table of only praet | imps elements
+  let table = new Array,
+      lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('praet:') > -1 || element[2].indexOf('imps:') > -1) {
+      table.push(element);
+    }
+  });
+
+  // Step 2 - prepare data
+  let bezosobnik = '-', singularThreeM = '-', singularThreeF = '-', singularThreeN = '-', singularThreeMO = '-', singularThreeMO2 = '-';
+
+  table.map(function(element, index) {
+    if (element[2].indexOf('imps:imperf') > -1) { bezosobnik = element[0]; }
+    if (element[2].indexOf('sg:m1.m2.m3') > -1) { singularThreeM = element[0]; }
+    if (element[2].indexOf('sg:f') > -1) { singularThreeF = element[0]; }
+    if (element[2].indexOf('sg:n1.n2') > -1) { singularThreeN = element[0]; }
+    if (element[2].indexOf('pl:m1.p1') > -1) { singularThreeMO = element[0]; }
+    if (element[2].indexOf('pl:m2.m3.f.n1.n2.p2.p3') > -1) { singularThreeMO2 = element[0]; }
+  });
+
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Tryb oznajmujący - czas przeszły</span><span lang="en">Declarative mode - past tense</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th class="border-left" colspan="3"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th colspan="2"><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="border-top-none"></td>' +
+            '<td class="border-left background"><span lang="pl">m</span><span lang="en">m</span></td>' +
+            '<td class="background"><span lang="pl">ż</span><span lang="en">f</span></td>' +
+            '<td class="border-right background"><span lang="pl">n</span><span lang="en">n</span></td>' +
+            '<td class="background"><span lang="pl">mo</span><span lang="en">mp</span></td>' +
+            '<td class="background"><span lang="pl">-mo</span><span lang="en">-mp</span></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">3 os.</span><span lang="en">3 p.</span></td>' +
+            '<td class="border-left"><a href="/orth/' + lang + '/' + singularThreeM + '">' + singularThreeM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularThreeF + '">' + singularThreeF + '</a></td>' +
+            '<td class="border-right"><a href="/orth/' + lang + '/' + singularThreeN + '">' + singularThreeN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularThreeMO + '">' + singularThreeMO + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularThreeMO2 + '">' + singularThreeMO2 + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td></td>' +
+            '<td class="border-left border-right" colspan="3"><span lang="pl">Bezosobnik</span><span lang="en">Bezosobnik</span></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + bezosobnik + '">' + bezosobnik + '</a></td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+    if (bezosobnik != '-' || singularThreeM != '-' || singularThreeF != '-' || singularThreeN != '-' || singularThreeMO != '-' || singularThreeMO2 != '-') {
+      $('#lexpelement_morfeusz').append(tableContent);
+      return true;
+    }
+    return false;
+}
+
+Morfeusz.prototype.showImperative = function(data) {
+  // Step 1 - get table of only impt elements
+  let table = new Array,
+    lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('impt:') > -1) {
+      table.push(element);
+    }
+  });
+
+  // Step 2 - prepare data
+  let singularOne = '-', singularTwo = '-', pluralOne = '-', pluralTwo = '-';
+
+  table.map(function(element, index) {
+    if (element[2].indexOf('sg:pri') > -1) { singularOne = element[0]; }
+    if (element[2].indexOf('sg:sec') > -1) { singularTwo = element[0]; }
+    if (element[2].indexOf('pl:pri') > -1) { pluralOne = element[0]; }
+    if (element[2].indexOf('pl:sec') > -1) { pluralTwo = element[0]; }
+  });
+
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Tryb rozkazujÄ…cy</span><span lang="en">Imperative</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th class="border-left"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">1 os.</span><span lang="en">1 p.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularOne + '">' + singularOne + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralOne + '">' + pluralOne + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">2 os.</span><span lang="en">2 p.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularTwo + '">' + singularTwo + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralTwo + '">' + pluralTwo + '</a></td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+    if (singularOne != '-' || singularTwo != '-' || pluralOne != '-' || pluralTwo != '-') {
+      $('#lexpelement_morfeusz').append(tableContent);
+      return true;
+    }
+    return false;
+}
+
+Morfeusz.prototype.showLanguageCase = function(data) {
+  // Step 1 - get table of only subst elements
+  let table = new Array,
+      lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('subst:') > -1) {
+      table.push(element);
+    }
+  });
+
+  console.log(data)
+  // Step 2 - prepare data
+  let singularM = '-', singularD = '-', singularC = '-', singularB = '-', singularN = '-', singularMs = '-', singularW = '-',
+      pluralM = '-', pluralD = '-', pluralC = '-', pluralB = '-', pluralN = '-', pluralMs = '-', pluralW = '-';
+
+  table.map(function(element, index) {
+    if (element[2].indexOf('sg:acc') > -1) { singularB = element[0]; }
+    if (element[2].indexOf('sg:dat') > -1) { singularC = element[0]; }
+    if (element[2].indexOf('sg:gen') > -1) { singularD = element[0]; }
+    if (element[2].indexOf('sg:inst') > -1) { singularN = element[0]; }
+    if (element[2].indexOf('sg:loc') > -1) { singularMs = element[0]; }
+    if (element[2].indexOf('sg:nom') > -1) { singularM = element[0]; }
+    if (element[2].indexOf('sg:voc') > -1) { singularW = element[0]; }
+    if (element[2].indexOf('pl:acc') > -1) { pluralB = element[0]; }
+    if (element[2].indexOf('pl:dat') > -1) { pluralC = element[0]; }
+    if (element[2].indexOf('pl:gen') > -1) { pluralD = element[0]; }
+    if (element[2].indexOf('pl:inst') > -1) { pluralN = element[0]; }
+    if (element[2].indexOf('pl:loc') > -1) { pluralMs = element[0]; }
+    if (element[2].indexOf('pl:nom') > -1) { pluralM = element[0]; }
+    if (element[2].indexOf('pl:voc') > -1) { pluralW = element[0]; }
+  });
+
+  
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Przypadki</span><span lang="en">Cases</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th class="border-left"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">M.</span><span lang="en">M.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularM + '">' + singularM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralM + '">' + pluralM + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">D.</span><span lang="en">D.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularD + '">' + singularD + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralD + '">' + pluralD + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">C.</span><span lang="en">C.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularC + '">' + singularC + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralC + '">' + pluralC + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">B.</span><span lang="en">B.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularB + '">' + singularB + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralB + '">' + pluralB + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">N.</span><span lang="en">N.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularN + '">' + singularN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralN + '">' + pluralN + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">Ms.</span><span lang="en">Ms.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularMs + '">' + singularMs + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralMs + '">' + pluralMs + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">W.</span><span lang="en">W.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularW + '">' + singularW + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralW + '">' + pluralW + '</a></td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+    if (singularM != '-' || singularD != '-' || singularC != '-' || singularB != '-' || singularN != '-' || singularMs != '-' || singularW != '-' || pluralM != '-' || pluralD != '-' || pluralC != '-' || pluralB != '-' ||
+        pluralN != '-' || pluralMs != '-' || pluralW != '-') {
+      $('#lexpelement_morfeusz').append(tableContent);
+      return true;
+    }
+    return false;
+}
+
+Morfeusz.prototype.showLanguageCase2 = function(data, negative) {
+  // Step 1 - get table of only ger elements
+  let table = new Array,
+      lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('ger:') > -1) {
+      table.push(element);
+    }
+  });
+
+  // Step 2 - prepare data
+  let singularM = '-', singularD = '-', singularC = '-', singularB = '-', singularN = '-', singularMs = '-', singularW = '-',
+      pluralM = '-', pluralD = '-', pluralC = '-', pluralB = '-', pluralN = '-', pluralMs = '-', pluralW = '-';
+
+  table.map(function(element, index) {
+    let negative2 = true;
+    if (negative) {
+      negative2 = element[2].indexOf(':neg') > -1;
+    }
+    console.log('na koncu kazdego bylo :aff, ale usunalem bo :neg nie dzialalo - mozna porobic lancuch z tego easy - todo poniedzialek');
+    if ((element[2].indexOf('sg:nom.acc:n2') > -1) && (negative2)) { singularM = element[0]; }
+    if ((element[2].indexOf('sg:gen:n2') > -1) && (negative2)) { singularD = element[0]; }
+    if ((element[2].indexOf('sg:dat.loc:n2') > -1) && (negative2)) { singularC = element[0]; }
+    if ((element[2].indexOf('sg:nom.acc:n2') > -1) && (negative2)) { singularB = element[0]; }
+    if ((element[2].indexOf('sg:inst:n2') > -1) && (negative2)) { singularN = element[0]; }
+    if ((element[2].indexOf('sg:dat.loc:n2') > -1) && (negative2)) { singularMs = element[0]; }
+    if ((element[2].indexOf('sg:nom.acc:n2') > -1) && (negative2)) { singularW = element[0]; }
+    if ((element[2].indexOf('pl:nom.acc:n2') > -1) && (negative2)) { pluralM = element[0]; }
+    if ((element[2].indexOf('pl:gen:n2') > -1) && (negative2)) { pluralD = element[0]; }
+    if ((element[2].indexOf('pl:dat.loc:n2') > -1) && (negative2)) { pluralC = element[0]; }
+    if ((element[2].indexOf('pl:nom.acc:n2') > -1) && (negative2)) { pluralB = element[0]; }
+    if ((element[2].indexOf('pl:inst:n2') > -1) && (negative2)) { pluralN = element[0]; }
+    if ((element[2].indexOf('?????????????????????') > -1) && (negative2)) { pluralMs = element[0]; }
+    if ((element[2].indexOf('pl:nom.acc:n2') > -1) && (negative2)) { pluralW = element[0]; }
+  });
+
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Przypadki 2</span><span lang="en">Cases 2</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th class="border-left"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">M.</span><span lang="en">M.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularM + '">' + singularM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralM + '">' + pluralM + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">D.</span><span lang="en">D.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularD + '">' + singularD + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralD + '">' + pluralD + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">C.</span><span lang="en">C.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularC + '">' + singularC + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralC + '">' + pluralC + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">B.</span><span lang="en">B.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularB + '">' + singularB + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralB + '">' + pluralB + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">N.</span><span lang="en">N.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularN + '">' + singularN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralN + '">' + pluralN + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">Ms.</span><span lang="en">Ms.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularMs + '">' + singularMs + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralMs + '">' + pluralMs + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td><span lang="pl">W.</span><span lang="en">W.</span></td>' +
+            '<td class="border-left border-right"><a href="/orth/' + lang + '/' + singularW + '">' + singularW + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralW + '">' + pluralW + '</a></td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+  if (singularM != '-' || singularD != '-' || singularC != '-' || singularB != '-' || singularN != '-' || singularMs != '-' || singularW != '-' || pluralM != '-' ||
+      pluralD != '-' || pluralC != '-' || pluralB != '-' || pluralN != '-' || pluralMs != '-' || pluralW != '-') {
+    $('#lexpelement_morfeusz').append(tableContent);
+    return true;
+  }
+  return false;
+}
+
+Morfeusz.prototype.showExtendedLanguageCase = function(data, negative) {
+  // Step 1 - get table of only ppas | imps elements
+  let table = new Array, advanced = '',
+      lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('ppas:') > -1) {
+      table.push(element);
+    }
+    if (element[2].indexOf('imps:imperf') > -1) {
+      advanced = element[0];
+    }
+  });
+
+  // Step 2 - prepare data
+  let singularMM = '-', singularMN = '-', singularMZ = '-', singularD = '-', singularDZ = '-', singularC = '-', singularCZ = '-', singularBM = '-', singularBM3 = '-', singularBN = '-', singularBZ = '-',
+      singularN = '-', singularNZ = '-', singularMs = '-', singularMsZ = '-', pluralMPM = '-', pluralMMO = '-', pluralD = '-', pluralC = '-', pluralBPM = '-', pluralBMO = '-', pluralN = '-', pluralMs = '-';
+
+  table.map(function(element, index) {
+    let negative2 = true;
+    if (negative) {
+      negative2 = element[2].indexOf(':neg') > -1;
+      // negative2 = element[2].indexOf(':neg') === -1;
+    }
+    if ((element[2].indexOf('sg:acc:m3') > -1) && (negative2)) { singularMM = element[0]; }
+    if ((element[2].indexOf('sg:nom.acc.voc:n1.n2') > -1) && (negative2)) { singularMN = element[0]; }
+    if ((element[2].indexOf('sg:nom.voc:f') > -1) && (negative2)) { singularMZ = element[0]; }
+    if ((element[2].indexOf('pl:nom.voc:m1.p1') > -1) && (negative2)) { pluralMPM = element[0]; }
+    if ((element[2].indexOf('pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3') > -1) && (negative2)) { pluralMMO = element[0]; }
+
+    if ((element[2].indexOf('sg:acc:m1.m2') > -1) && (negative2)) { singularD = element[0]; }
+    if ((element[2].indexOf('sg:gen.dat.loc:f') > -1) && (negative2)) { singularDZ = element[0]; }
+    if ((element[2].indexOf('pl:acc:m1.p1') > -1) && (negative2)) { pluralD = element[0]; }
+
+    if ((element[2].indexOf('sg:dat:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularC = element[0]; }
+    if ((element[2].indexOf('sg:gen.dat.loc:f') > -1) && (negative2)) { singularCZ = element[0]; }
+    if ((element[2].indexOf('pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralC = element[0]; }
+
+    if ((element[2].indexOf('sg:acc:m1.m2') > -1) && (negative2)) { singularBM = element[0]; }
+    if ((element[2].indexOf('sg:acc:m3') > -1) && (negative2)) { singularBM3 = element[0]; }
+    if ((element[2].indexOf('sg:nom.acc.voc:n1.n2') > -1) && (negative2)) { singularBN = element[0]; }
+    if ((element[2].indexOf('sg:acc.inst:f') > -1) && (negative2)) { singularBZ = element[0]; }
+    if ((element[2].indexOf('pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralBPM = element[0]; }
+    if ((element[2].indexOf('pl:nom.acc.voc:m2.m3.f.n1.n2.p2.p3') > -1) && (negative2)) { pluralBMO = element[0]; }
+
+    if ((element[2].indexOf('sg:inst.loc:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularN = element[0]; }
+    if ((element[2].indexOf('sg:acc.inst:f') > -1) && (negative2)) { singularNZ = element[0]; }
+    if ((element[2].indexOf('pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralN = element[0]; }
+
+    if ((element[2].indexOf('sg:inst.loc:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularMs = element[0]; }
+    if ((element[2].indexOf('sg:gen.dat.loc:f') > -1) && (negative2)) { singularMsZ = element[0]; }
+    if ((element[2].indexOf('pl:gen.loc:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralMs = element[0]; }
+  });
+
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Przypadki (Z)</span><span lang="en">Cases (A)</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th colspan="5" class="border-left"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th colspan="4"><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td rowspan="2" class="border-top-none"></td>' +
+            '<td rowspan="2" class="border-left background"><span lang="pl">m1</span><span lang="en">m1</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">m2</span><span lang="en">m2</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">m3</span><span lang="en">m3</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">n1,n2</span><span lang="en">n1,n2</span></td>' +
+            '<td rowspan="2" class="border-right background"><span lang="pl">ż</span><span lang="en">ż</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">p1</span><span lang="en">p1</span></td>' +
+            '<td colspan="2" class="background"><span lang="pl">m1</span><span lang="en">m1</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">pozostałe</span><span lang="en">other</span></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="background border-top-none"><span lang="pl">ndepr</span><span lang="en">ndepr</span></td>' +
+            '<td class="background border-top-none"><span lang="pl">depr</span><span lang="en">depr</span></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">M./(W.)</span><span lang="en">M./(W.)</span></td>' +
+            '<td colspan="3" class="border-left border-right"><a href="/orth/' + lang + '/' + singularMM + '">' + singularMM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularMN + '">' + singularMN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularMZ + '">' + singularMZ + '</a></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + pluralMPM + '">' + pluralMPM + '</a></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + pluralMMO + '">' + pluralMMO + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">D.</span><span lang="en">D.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularD + '">' + singularD + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularDZ + '">' + singularDZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralD + '">' + pluralD + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">C.</span><span lang="en">C.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularC + '">' + singularC + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularCZ + '">' + singularCZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralC + '">' + pluralC + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">B.</span><span lang="en">B.</span></td>' +
+            '<td colspan="2" class="border-left border-right"><a href="/orth/' + lang + '/' + singularBM + '">' + singularBM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularBM3 + '">' + singularBM3 + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularBN + '">' + singularBN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularBZ + '">' + singularBZ + '</a></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + pluralBPM + '">' + pluralBPM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralBMO + '">' + pluralBMO + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">N.</span><span lang="en">N.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularN + '">' + singularN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularNZ + '">' + singularNZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralN + '">' + pluralN + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">Ms.</span><span lang="en">Ms.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularMs + '">' + singularMs + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularMsZ + '">' + singularMsZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralMs + '">' + pluralMs + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">Złoż.</span><span lang="en">Złoż.</span></td>' +
+            '<td colspan="9"><a href="/orth/' + lang + '/' + advanced + '">' + advanced + '</a>+</td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+  if (singularMM != '-' || singularMN != '-' || singularMZ != '-' || singularD != '-' || singularDZ != '-' || singularC != '-' || singularCZ != '-' || singularBM != '-' || singularBM3 != '-' || singularBN != '-' || singularBZ != '-' ||
+      singularN != '-' || singularNZ != '-' || singularMs != '-' || singularMsZ != '-' || pluralMPM != '-' || pluralMMO != '-' || pluralD != '-' || pluralC != '-' || pluralBPM != '-' || pluralBMO != '-' || pluralN != '-' || pluralMs != '-') {
+    $('#lexpelement_morfeusz').append(tableContent);
+    return true;
+  }
+  return false;
+}
+
+Morfeusz.prototype.showExtendedLanguageCase2 = function(data, negative) {
+  // Step 1 - get table of only adj | adja elements
+  let table = new Array, advanced = '',
+      lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('adj:') > -1) {
+      table.push(element);
+    }
+    if (element[2].indexOf('adja') > -1) {
+      advanced = element[0];
+    }
+  });
+
+  // Step 2 - prepare data
+  let singularMM = '-', singularMN = '-', singularMZ = '-', singularD = '-', singularDZ = '-', singularC = '-', singularCZ = '-', singularBM = '-', singularBM3 = '-', singularBN = '-', singularBZ = '-', singularN = '-',
+      singularNZ = '-', singularMs = '-', singularMsZ = '-', pluralMPM = '-', pluralMMO = '-', pluralD = '-', pluralC = '-', pluralBPM = '-', pluralBMO = '-', pluralN = '-', pluralMs = '-';
+
+  table.map(function(element, index) {
+    let negative2 = true;
+    if (negative) {
+      negative2 = element[2].indexOf(':neg') > -1;
+      // negative2 = element[2].indexOf(':neg') === -1;
+    }
+    if ((element[2].indexOf('sg:nom.voc:m1.m2.m3') > -1) && (negative2)) { singularMM = element[0]; }
+    if ((element[2].indexOf('sg:nom.voc:n1.n2') > -1) && (negative2)) { singularMN = element[0]; }
+    if ((element[2].indexOf('sg:nom.voc:f') > -1) && (negative2)) { singularMZ = element[0]; }
+    if ((element[2].indexOf('pl:nom.voc:m1.p1') > -1) && (negative2)) { pluralMPM = element[0]; }
+    if ((element[2].indexOf('pl:nom.voc:m2.m3.f.n1.n2.p2.p3') > -1) && (negative2)) { pluralMMO = element[0]; }
+
+    if ((element[2].indexOf('sg:gen:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularD = element[0]; }
+    if ((element[2].indexOf('sg:gen:f') > -1) && (negative2)) { singularDZ = element[0]; }
+    if ((element[2].indexOf('pl:gen:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralD = element[0]; }
+
+    if ((element[2].indexOf('sg:dat:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularC = element[0]; }
+    if ((element[2].indexOf('sg:dat:f') > -1) && (negative2)) { singularCZ = element[0]; }
+    if ((element[2].indexOf('pl:dat:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralC = element[0]; }
+
+    if ((element[2].indexOf('sg:acc:m1.m2') > -1) && (negative2)) { singularBM = element[0]; }
+    if ((element[2].indexOf('sg:acc:m3') > -1) && (negative2)) { singularBM3 = element[0]; }
+    if ((element[2].indexOf('sg:acc:n1.n2') > -1) && (negative2)) { singularBN = element[0]; }
+    if ((element[2].indexOf('sg:acc:f') > -1) && (negative2)) { singularBZ = element[0]; }
+    if ((element[2].indexOf('pl:acc:m1.p1') > -1) && (negative2)) { pluralBPM = element[0]; }
+    if ((element[2].indexOf('pl:acc:m2.m3.f.n1.n2.p2.p3') > -1) && (negative2)) { pluralBMO = element[0]; }
+
+    if ((element[2].indexOf('sg:inst:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularN = element[0]; }
+    if ((element[2].indexOf('sg:inst:f') > -1) && (negative2)) { singularNZ = element[0]; }
+    if ((element[2].indexOf('pl:inst:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralN = element[0]; }
+
+    if ((element[2].indexOf('sg:loc:m1.m2.m3.n1.n2') > -1) && (negative2)) { singularMs = element[0]; }
+    if ((element[2].indexOf('sg:loc:f') > -1) && (negative2)) { singularMsZ = element[0]; }
+    if ((element[2].indexOf('pl:loc:m1.m2.m3.f.n1.n2.p1.p2.p3') > -1) && (negative2)) { pluralMs = element[0]; }
+  });
+
+  // Step 3 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Przypadki (Z) 2</span><span lang="en">Cases (A) 2</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="no-background"></th>' +
+            '<th colspan="5" class="border-left"><span lang="pl">l.p.</span><span lang="en">Singular</span></th>' +
+            '<th colspan="4"><span lang="pl">l.m.</span><span lang="en">Plural</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td rowspan="2" class="border-top-none"></td>' +
+            '<td rowspan="2" class="border-left background"><span lang="pl">m1</span><span lang="en">m1</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">m2</span><span lang="en">m2</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">m3</span><span lang="en">m3</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">n1,n2</span><span lang="en">n1,n2</span></td>' +
+            '<td rowspan="2" class="border-right background"><span lang="pl">ż</span><span lang="en">ż</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">p1</span><span lang="en">p1</span></td>' +
+            '<td colspan="2" class="background"><span lang="pl">m1</span><span lang="en">m1</span></td>' +
+            '<td rowspan="2" class="background"><span lang="pl">pozostałe</span><span lang="en">other</span></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="background border-top-none"><span lang="pl">ndepr</span><span lang="en">ndepr</span></td>' +
+            '<td class="background border-top-none"><span lang="pl">depr</span><span lang="en">depr</span></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">M./(W.)</span><span lang="en">M./(W.)</span></td>' +
+            '<td colspan="3" class="border-left border-right"><a href="/orth/' + lang + '/' + singularMM + '">' + singularMM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularMN + '">' + singularMN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularMZ + '">' + singularMZ + '</a></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + pluralMPM + '">' + pluralMPM + '</a></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + pluralMMO + '">' + pluralMMO + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">D.</span><span lang="en">D.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularD + '">' + singularD + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularDZ + '">' + singularDZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralD + '">' + pluralD + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">C.</span><span lang="en">C.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularC + '">' + singularC + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularCZ + '">' + singularCZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralC + '">' + pluralC + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">B.</span><span lang="en">B.</span></td>' +
+            '<td colspan="2" class="border-left border-right"><a href="/orth/' + lang + '/' + singularBM + '">' + singularBM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularBM3 + '">' + singularBM3 + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularBN + '">' + singularBN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularBZ + '">' + singularBZ + '</a></td>' +
+            '<td colspan="2"><a href="/orth/' + lang + '/' + pluralBPM + '">' + pluralBPM + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + pluralBMO + '">' + pluralBMO + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">N.</span><span lang="en">N.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularN + '">' + singularN + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularNZ + '">' + singularNZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralN + '">' + pluralN + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">Ms.</span><span lang="en">Ms.</span></td>' +
+            '<td colspan="4" class="border-left border-right"><a href="/orth/' + lang + '/' + singularMs + '">' + singularMs + '</a></td>' +
+            '<td><a href="/orth/' + lang + '/' + singularMsZ + '">' + singularMsZ + '</a></td>' +
+            '<td colspan="4"><a href="/orth/' + lang + '/' + pluralMs + '">' + pluralMs + '</a></td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-top-none"><span lang="pl">Złoż.</span><span lang="en">Złoż.</span></td>' +
+            '<td colspan="9"><a href="/orth/' + lang + '/' + advanced + '">' + advanced + '</a>+</td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+  if (singularMM != '-' || singularMN != '-' || singularMZ != '-' || singularD != '-' || singularDZ != '-' || singularC != '-' || singularCZ != '-' || singularBM != '-' || singularBM3 != '-' || singularBN != '-' || singularBZ != '-' ||
+      singularN != '-' || singularNZ != '-' || singularMs != '-' || singularMsZ != '-' || pluralMPM != '-' || pluralMMO != '-' || pluralD != '-' || pluralC != '-' || pluralBPM != '-' || pluralBMO != '-' || pluralN != '-' || pluralMs != '-') {
+    $('#lexpelement_morfeusz').append(tableContent);
+    return true;
+  }
+  return false;
+}
+
+Morfeusz.prototype.showOthers = function(data) {
+  // Step 1 - prepare data
+  let infinitive = '-', contemporaryAdverbialParticiple = '-', lang = $('#lang').val();
+
+  data.map(function(element, index) {
+    if (element[2].indexOf('inf:imperf') > -1) { infinitive = element[0]; }
+    if (element[2].indexOf('pcon:imperf') > -1) { contemporaryAdverbialParticiple = element[0]; }
+  });
+
+  // Step 2 - draw table
+  let tableContent =
+    '<div class="table-container">' +
+      '<h2><span lang="pl">Pozostałe</span><span lang="en">Others</span></h2>' +
+      '<table class="table table-striped table-styling">' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="border-top-none border-right"><span lang="pl">Bezokolicznik</span><span lang="en">Infinitive</span></td>' +
+            '<td class="border-top-none">' + infinitive + '</td>' +
+          '</tr>' +
+          '<tr>' +
+            '<td class="border-right"><span lang="pl">Imiesłów przysłówkowy współczesny</span><span lang="en">Contemporary adverbial participle</span></td>' +
+            '<td>' + contemporaryAdverbialParticiple + '</td>' +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+    if (infinitive != '-' || contemporaryAdverbialParticiple != '-') {
+      $('#lexpelement_morfeusz').append(tableContent);
+      return true;
+    }
+    return false;
+}
+
+Morfeusz.wordClick = function(res) {
+  Lexp.target = "plwordnet";
+  Lexp.go2URL(res.getAttribute("href"));
+
+  return false;
+}
+
+Morfeusz.prototype.showHTML = function(tag) {
+  let baseForm, others, table1, table2, table3, table4, table5, table6, table7, table8, table9, table10;
+  if ("analyse" in this.data) {
+    if ($('#type option:selected').val() != 'orth') {
+      table1 = this.showIndicativePresent(this.data.analyse);
+      table2 = this.showIndicativePast(this.data.analyse);
+      table3 = this.showImperative(this.data.analyse);
+      table4 = this.showLanguageCase(this.data.analyse);
+      table5 = this.showLanguageCase2(this.data.analyse, false);
+      table6 = this.showLanguageCase2(this.data.analyse, true);
+      table7 = this.showExtendedLanguageCase(this.data.analyse, false);
+      table8 = this.showExtendedLanguageCase(this.data.analyse, true);
+      table9 = this.showExtendedLanguageCase2(this.data.analyse, false);
+      table10 = this.showExtendedLanguageCase2(this.data.analyse, true);
+    }
+    others = this.showOthers(this.data.analyse);
+    baseForm = this.showBaseForm(this.data.analyse);
+    $('#lexpelement_morfeusz img').hide();
+  } else {
+    if ($('#type option:selected').val() != 'orth') {
+      table1 = this.showIndicativePresent(this.data.generate);
+      table2 = this.showIndicativePast(this.data.generate);
+      table3 = this.showImperative(this.data.generate);
+      table4 = this.showLanguageCase(this.data.generate);
+      table5 = this.showLanguageCase2(this.data.generate, false);
+      table6 = this.showLanguageCase2(this.data.generate, true);
+      table7 = this.showExtendedLanguageCase(this.data.generate, false);
+      table8 = this.showExtendedLanguageCase(this.data.generate, true);
+      table9 = this.showExtendedLanguageCase2(this.data.generate, false);
+      table10 = this.showExtendedLanguageCase2(this.data.generate, true);
+    }
+    others = this.showOthers(this.data.generate);
+    baseForm = this.showBaseForm(this.data.generate);
+  }
+  if (!baseForm && !others && !table1 && !table2 && !table3 && !table4 && !table5 && !table6 && !table7 && !table8 && !table9 && !table10) {
+    $('#lexpelement_morfeusz').append('<h2 class="error"><span lang="pl">Przepraszamy, nie mamy w bazie informacji na temat wybranego lematu</span><span lang="en">We are sorry, we don\'t have information about this lemma in the database</span></h2>');
+  }
+  $('#lexpelement_morfeusz img').hide();
+}
+
+Morfeusz.id = "morfeusz";
+
+$(function () {
+  Element.addVisualizer(Morfeusz.id, Morfeusz);
+});
\ No newline at end of file
diff --git a/omwn/omwn.js b/omwn/omwn.js
new file mode 100644
index 0000000..15677f6
--- /dev/null
+++ b/omwn/omwn.js
@@ -0,0 +1,83 @@
+function OMWN(data) {
+  this.data = data;
+}
+
+OMWN.wordClick = function(res) {
+  Lexp.target = OMWN.id;
+  var target = "/lemma/pl/" + res.target.textContent;
+  Lexp.go2URL(target);
+
+  return false;
+}
+
+OMWN.prototype.showHTML = function(tag) {
+  tag.html("");
+  var _html =
+    '<div class="table-responsive" align="left">' +
+      '<table class="table table-bordered">' +
+        '<thead>' +
+          '<tr>' +
+            '<th><span lang="pl">Znaczenie</span><span lang="en">Meaning</span></th>' +
+            '<th><span lang="pl">Lista słów</span><span lang="en">List of words</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>';
+
+  for (var sid in this.data) {
+    _html += '<tr>';
+    var synset = this.data[sid];
+    console.log(synset);
+
+    _html +=
+      '<td>' +
+        synset.definition +
+      '</td>' +
+      '<td>';
+    for(var lang in synset.translate) {
+      if (synset.translate[lang].length != 0) {
+        _html += '<p>' + lang + ' : ';
+        var _first = true;
+        for(var le in synset.translate[lang]) {
+          if (_first) {
+            _first = false;
+          } else {
+            _html += ", ";
+          }
+          _html +=
+            '<a class="lemma-link" href="/lemma/' + lang + '/' + synset.translate[lang][le] + '">' +
+              synset.translate[lang][le] +
+            '</a>';
+        }
+        _html += '</p>';
+      }
+    }
+    _html += '</td>';
+  }
+  _html += '</tr></tbody></table></div>';
+  tag.html(_html);
+}
+
+OMWN.id = "omwn";
+
+$(function () {
+  Element.addVisualizer(OMWN.id, OMWN);
+
+  $('#lexp_results').on('mouseup', '#lexpelement_omwn', function(event) {
+    let lemma = selectWord() || '',
+        lang = $('#lang').val(),
+        data = new Object();
+
+    console.log(event);
+
+    data.lemma = lemma;
+    data.lang = lang || 'pl';
+    data.left = event.originalEvent.clientX - 80 || 0;
+    data.top = event.originalEvent.clientY - 55 || 0;
+
+    if (lemma.length < 10) {
+      data.left = event.originalEvent.clientX - 65 || 0;
+    }
+
+    positionTooltip(data);
+  });
+});
\ No newline at end of file
diff --git a/plwordnet/lang-pl-32.png b/plwordnet/lang-pl-32.png
new file mode 100644
index 0000000000000000000000000000000000000000..60cb1b47b99e319fec6dcd781a14f5b0f3ae60c9
GIT binary patch
literal 815
zcmV+~1JL}5P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80008^Nkl<ZSi|j>
zL3-Ro5QYD0Y3zxU18{?|hAnU-F2T`&Ev)bz*kuujCvJ5;7FDfo*$!sGmrdN?r)fze
zsb0N$^}69@yo@h>7-s9Qzx-U+WnpXWvjpw2zWe@%(+ZrCc>DHiTpp;*Fbpe&QVPXv
zzmM5|O`jzITmlJA*Y1wo5#xTb!tL!J0Ou80-JQ$F3vFu=+$;i@f*AoMgWCkApKA)L
z1mRKy7Pxx=$>)}J!QBDYazL64U~vdVmdYd**;@R0IO3j;&zj{o@|%DZU_1e@0O|;d
zpr#05mhbK-@!kI0hvvJsiz~qnK*}e3Spb3ocjOuwcEn~os2<^|?2jxAQ0h9dluKvG
z)k_cnT5J0&Vy1hrXM2uuMEM_|gO2a??0bIs+p^=<0N^Pi>xmyJ*Ym9<J)Sk`saLU=
zqBS1?+#8q61p!N0SeBB?FIY)Xr6jzpaj_!+*Fh8NnsVWanz!aOZ&=2h7-;PI+vEfL
z%wUGmC=V=cR^{G37$NGe1uPku0KEJ0C*FVi4f=3lF{42EKo?#aKt2UP56TfNgor$a
z?m&~Un=|iz`+Z^npl(nr3g<!QJ%LQ)p%m=NRy-ooF3oUA4|H{<oBrC3NVNtC42n%b
z(*gg35D)P!T@ei>d-g%CM<Z$onxncQGd#=S#Ee-m^Hl9WRf=xO$%9XpZOtR*&HxMs
z_I|Mx%uwH~0X@@_%78W(qMJ;uw3&fTLR&*^%N05TJC9dBJ)r{qi!rz+gUhvm&DmxK
zs+{{;p;k`B%GW8E*(2iZ8TyAO2IXSdYm@M;QfCJ0TDX(5ltNh+R!bAgYLw9nd+_cP
z`*KXDdw_IA$=IF%B&W*xxYz{X`ii^jmGkQ}c6H{otO>$~uiJ5j+&3tF4=`5i=pN0q
z$9cusYUOgd<No?I0Gw`KaeMzaXS?EcbIx|!ga2PcsfWAmp7-?w>&>fuPxuD-3V8FG
t_oIISe;Q`7FHAN*<Jf=;FXM|J{{UhoACBM%)<^&V002ovPDHLkV1jCph7$k)

literal 0
HcmV?d00001

diff --git a/plwordnet/plwordnet.css b/plwordnet/plwordnet.css
new file mode 100644
index 0000000..931f5dc
--- /dev/null
+++ b/plwordnet/plwordnet.css
@@ -0,0 +1,235 @@
+#lexpelement_plwordnet .plwordnet-container {
+  padding: 1% 0;
+}
+
+#lexpelement_plwordnet #graph-visualisation,
+#lexpelement_plwordnet #path-visualisation {
+  position: relative;
+}
+
+#lexpelement_plwordnet #show-graph,
+#lexpelement_plwordnet #show-path {
+  color: #1786C8;
+}
+
+#lexpelement_plwordnet #show-graph:hover,
+#lexpelement_plwordnet #show-path:hover {
+  cursor: pointer;
+  text-decoration: underline;
+}
+
+#lexpelement_plwordnet #graph-modal,
+#lexpelement_plwordnet #path-modal {
+  padding: 1%;
+}
+
+#lexpelement_plwordnet #graph-modal .modal-content,
+#lexpelement_plwordnet #path-modal .modal-content {
+  margin: 0;
+}
+
+#lexpelement_plwordnet #graph-modal .modal-content h2,
+#lexpelement_plwordnet #path-modal .modal-content h2 {
+  color: white;
+}
+
+#lexpelement_plwordnet hr {
+  margin: 10px 0;
+  border-color: #E0E0E0;
+}
+
+#lexpelement_plwordnet .row {
+  margin: 0;
+}
+
+#lexpelement_plwordnet table {
+  text-align: center;
+}
+
+#lexpelement_plwordnet #quote {
+  quotes: "„" "“";
+}
+
+#lexpelement_plwordnet #path-to-highest-hiperonim {
+  /*background-color: steelblue;*/
+}
+
+#lexpelement_plwordnet #plwordnet-box-left {
+  display: flex;
+  flex-flow: row wrap;
+  background-color: #F8F8F8;
+}
+
+#lexpelement_plwordnet #plwordnet-box-right {
+  max-width: 1000px;
+  position: relative;
+  margin: auto;
+}
+
+#lexpelement_plwordnet #arrow-left,
+#lexpelement_plwordnet #arrow-right {
+  position: absolute;
+  top: 50%;
+  transform: translateY(-50%);
+  font-size: 32px;
+  color: #41423A;
+  cursor: pointer;
+  transition: .5s all;
+}
+
+#lexpelement_plwordnet #arrow-left:hover,
+#lexpelement_plwordnet #arrow-right:hover {
+  color: #63645C;
+}
+
+#lexpelement_plwordnet #arrow-left {
+  left: -8%;
+}
+
+#lexpelement_plwordnet #arrow-right {
+  right: -8%;
+}
+
+#lexpelement_plwordnet #plwordnet-box-right .slides {
+  display: none;
+}
+
+#lexpelement_plwordnet .plwordnet-box {
+  flex: 1;
+  height: 100%;
+  padding: 1% 3% 2%;
+  text-align: left;
+}
+
+#lexpelement_plwordnet #plwordnet-box-right .plwordnet-box {
+  /*width: 60%;*/
+  margin: 2% auto 3%;
+  background-color: white;
+  box-shadow: 2px 2px 15px 2px #888888;
+}
+
+#lexpelement_plwordnet #plwordnet-box-left .plwordnet-box {
+  min-width: 25%;
+  max-width: 27%;
+  padding: 0;
+  margin: 1% 3% 2%;
+}
+
+#lexpelement_plwordnet .lemma {
+  color: black;
+  margin: 0;
+  padding-top: 10px;
+}
+
+#lexpelement_plwordnet h2,
+#lexpelement_plwordnet p.title,
+#lexpelement_plwordnet p.description,
+#lexpelement_plwordnet .emotion-description {
+  color: #41423A;
+  font-family: 'Saira Semi Condensed', sans-serif;
+}
+
+#lexpelement_plwordnet .fixed-space {
+  min-width: 120px;
+  max-width: 75%;
+  display: inline-block;
+}
+
+#lexpelement_plwordnet .fixed-space-emotion {
+  min-width: 150px;
+  max-width: 75%;
+}
+
+#lexpelement_plwordnet .category {
+  color: #929292;
+  font-size: 12px;
+  text-transform: uppercase;
+  padding: 0 20px;
+}
+
+#lexpelement_plwordnet .emotion-box {
+  padding: 7px;
+}
+
+#lexpelement_plwordnet .d-inline-block {
+  display: inline-block;
+}
+
+#lexpelement_plwordnet h2 {
+  font-size: 22px;
+  color: #41423A;
+}
+
+#lexpelement_plwordnet #plwordnet-box-left h2 {
+  background-color: #E0E0E0;
+  padding: 10px;
+  margin: 0 0 10px;
+}
+
+#lexpelement_plwordnet #plwordnet-box-left p.title,
+#lexpelement_plwordnet #plwordnet-box-right h2.lemma {
+  display: inline-block;
+}
+
+#lexpelement_plwordnet img.show-icon {
+  padding: 0 10px 6px;
+  display: inline-block !important;
+}
+
+#lexpelement_plwordnet p {
+  text-indent: 0;
+}
+
+#lexpelement_plwordnet p.title {
+  color: #1786C8;
+  font-size: 17px;
+  font-weight: bold;
+}
+
+#lexpelement_plwordnet p.description {
+  font-size: 15px;
+  padding-top: 10px;
+}
+
+#lexpelement_plwordnet .emotion-description {
+  font-size: 15px;
+}
+
+@media (max-width: 1300px) {
+  #lexpelement_plwordnet #plwordnet-box-right {
+    max-width: 800px;
+  }
+}
+
+@media (max-width: 1100px) {
+  #lexpelement_plwordnet #plwordnet-box-right {
+    max-width: 700px;
+  }
+}
+
+@media (max-width: 961px) {
+  #lexpelement_plwordnet #plwordnet-box-right {
+    max-width: 600px;
+  }
+  #lexpelement_plwordnet #plwordnet-box-left {
+    flex-direction: column;
+  }
+  #lexpelement_plwordnet #plwordnet-box-left .plwordnet-box {
+    max-width: none;
+  }
+  #lexpelement_plwordnet .fixed-space {
+    max-width: 60%;
+  }
+}
+
+@media (max-width: 761px) {
+  #lexpelement_plwordnet #plwordnet-box-right {
+    width: 80%;
+  }
+}
+
+@media (max-width: 575px) {
+  #lexpelement_plwordnet .fixed-space {
+    max-width: 100%;
+  }
+}
\ No newline at end of file
diff --git a/plwordnet/plwordnet.js b/plwordnet/plwordnet.js
new file mode 100644
index 0000000..1ae61d4
--- /dev/null
+++ b/plwordnet/plwordnet.js
@@ -0,0 +1,676 @@
+function PlWordnet(data) {
+  console.log(data);
+  PlWordnet.data = data;
+  this.analyseData(data);
+}
+
+PlWordnet.wordClick = function(ev) {
+  Lexp.target = PlWordnet.id;
+  var target = ev.target.getAttribute('href');
+  Lexp.go2URL(target)
+
+  return false;
+}
+
+PlWordnet.prototype.sortUnits = function(_units) {
+  // console.log(_units);
+  var i;
+  _units.sort(function(a, b) {
+    if (a.synset == b.synset) {
+      return a.unitid > b.unitid ? 1 : -1;
+    }
+    return a.synset > b.synset ? 1 : -1;
+  });
+
+  for (i = 0; i < _units.length - 1; i++) {
+    if (_units[i].synset == _units[i + 1].synset) {
+      _units[i + 1].smallestunitid = _units[i].smallestunitid;
+    }
+  }
+
+  _units.sort(function(a, b) {
+    if (a.smallestunitid == b.smallestunitid) {
+      return a.unitid > b.unitid ? 1 : -1;
+    }
+    return a.smallestunitid > b.smallestunitid ? 1 : -1;
+  });
+
+  var i = 0,
+      num = 0,
+      first = -1,
+      ind = 0;
+
+  while (i < _units.length) {
+    _units[i].rowspan = 0;
+    if (_units[i].synset != ind) {
+      if (first >= 0) {
+        _units[first].rowspan = num;
+      }
+      first = i;
+      num = 1;
+      ind = _units[i].synset;
+    } else {
+      num += 1;
+    }
+    i += 1;
+  }
+  _units[first].rowspan = num;
+}
+
+PlWordnet.fullQualifiermapa = {"og.":"ogólne","pot.":"potoczne","wulg.":"wulgarne","posp.":"pospolite","książk.":"książkowe","urz.":"urzędowe","daw.":"dawne","specj.":"specjalistyczne","nienorm.":"nienormatywne","środ.":"środowiskowe","reg.":"regionalne"}
+PlWordnet.fullQualifiermapaEnglish = {"og.":"general","pot.":"colloquial","wulg.":"vulgar","posp.":"common","książk.":"bookish","urz.":"official","daw.":"former","specj.":"special","nienorm.":"imprescriptive","środ.":"environmental","reg.":"regional"}
+
+PlWordnet.fullQualifier = function(str) {
+  if (str in PlWordnet.fullQualifiermapa) {
+    if(document.body.className == 'pl') {
+      return PlWordnet.fullQualifiermapa[str];
+    } else {
+      return PlWordnet.fullQualifiermapaEnglish[str];
+    }
+  }
+  return "";
+}
+
+PlWordnet.citeSourcemapa = {
+    "P":"przykład spreparowany przez lingwistę mający formę zdania",
+    "W":"przykład z Wikipedii",
+    "WN":"cytat z WikiNews",
+    "Z":"zasłyszane albo wymyślone, teksty z języka mówionego"
+}
+
+PlWordnet.citeSourcemapaEnglish = {
+    "P":"example developed by linguist having form of a sentence",
+    "W":"example from Wikipedia",
+    "WN":"quote from WikiNews",
+    "Z":"overheard or made-up, texts from spoken language"
+}
+
+PlWordnet.citeSource = function(str) {
+  if (str in PlWordnet.citeSourcemapa) {
+    if(document.body.className == 'pl') {
+      return PlWordnet.citeSourcemapa[str];
+    } else {
+      return PlWordnet.citeSourcemapaEnglish[str];
+    }
+  }
+  return "";
+}
+
+PlWordnet.prototype.analyseData = function(data) {
+  // console.log(data);
+
+  function clean(str) {
+    if (str != null) {
+      return str.slice(0, -1)
+    }
+    return "";
+  }
+
+  var _units = [];
+
+  let language = window.location.href.split("/")[4];
+
+  for (var rid in data.synsets) {
+    var synset = data.synsets[rid];
+    var synsetDescription = data.synsets[rid].definition;
+    for (var uid in synset.units) {
+      var unit = synset.units[uid];
+      var _unit = new Object();
+      _unit.unitname = unit.str.split("(")[0];
+      _unit.unitid = unit.id;
+      _unit.smallestunitid = unit.id;
+      _unit.synset = synset.id;
+      _unit.url = "/lemma/" + language + "/" + unit.lemma;
+      _unit.definition = clean(unit.definition);
+      if (!_unit.definition) {
+        _unit.definition = synsetDescription;
+      }
+      // console.log(_unit.definition);
+      _unit.qualifier = unit.usage_notes;
+      _unit.link = "";
+      _unit.islemma = unit.lemma == Lexp.element.lemma;
+
+      if (unit.external_links.length == 0) {
+        _unit.link += '&nbsp';
+      } else {
+        for (var elid in unit.external_links) {
+          var link = unit.external_links[elid];
+          if (link.length > 0) {
+            _unit.link += '<a href="' + link + '" style="color: inherit;">' +
+            '<span lang="pl" data-toggle="tooltip" data-placement="top" title="Link do zasobu zewnętrznego" class="source glyphicon glyphicon glyphicon-link"></span></a>' +
+            '<span lang="en" data-toggle="tooltip" data-placement="top" title="Link for external resource" class="source glyphicon glyphicon glyphicon-link"></span></a>';
+          }
+        }
+      }
+      _unit.examples = "";
+      for (var seid in unit.sense_examples) {
+        if (unit.sense_examples[seid].length > 0)
+       _unit.examples += unit.sense_examples[seid] +
+        '<span rel="tooltip"  data-original-title="' + PlWordnet.citeSource(unit.sense_examples_sources[seid]) +
+        '"> #' + unit.sense_examples_sources[seid] + "</span><br>";
+      }
+      _units.push(_unit);
+    }
+  }
+
+  if($('#type').val() == 'synsetid') {
+    /* Synset way */
+    this.sortUnits(data.units);
+    this.data = data.units;
+  } else {
+    /* Normal way */
+    this.sortUnits(_units);
+    this.data = _units;
+  }
+}
+
+PlWordnet.prototype.createAdditionalInfo = function(jsonData, title, titleEn, lang = 'pl') {
+  let textData = '',
+      quantity = 0;
+  $(jsonData).each(function(index, element) {
+    $(element[2].units).each(function(index2, element2) {
+      let definition = '',
+          horizontalLine = '<hr />';
+      quantity++;
+      if (element2.definition !== null && element2.definition !== ',' && element2.definition !== '.') {
+        definition = '<p class="description">' + element2.definition + '</p>';
+      }
+      if (jsonData.length - 1 == index) {
+        if (element[2].units.length - 1 == index2) {
+          horizontalLine = '';
+        }
+      }
+      textData +=
+        // '<a href="http://plwordnet.pwr.wroc.pl/wordnet/lemma/' + element2.lemma + '" title="lemma" target="_blank">' +
+        '<a href="/synsetid/plwordnet/' + element2.synset + '">' +
+        '<p class="title">' + element2.lemma + '</p>' +
+        '</a>' +
+        '<img width="40" height="20" class="img-responsive show-icon" src="http://lexp-dev.clarin-pl.eu/img/lang-' + lang + '-32.png" alt="Language" />' +
+        definition +
+        horizontalLine;
+    });
+  });
+
+  if (quantity != 0) {
+    let data =
+    '<div class="plwordnet-box">' +
+      '<h2>' +
+        '<img class="img-responsive show-icon" src="http://lexp-dev.clarin-pl.eu/img/lang-' + lang + '-32.png" alt="Language" />' +
+        '<span lang="pl">' + title + ' (' + quantity + ')' + '</span>' +
+        '<span lang="en">' + titleEn + ' (' + quantity + ')' + '</span>' +
+      '</h2>' +
+      textData +
+    '</div>';
+
+    $('#lexpelement_plwordnet #plwordnet-box-left').append(data);
+  }
+}
+
+PlWordnet.emotionMap = {
+  "+ s":"weak positive", "+ m":"strong positive"
+};
+
+PlWordnet.prototype.showHTMLForSynset = function() {
+  let synsetID = this.data[0].synset;
+  $('#lexpelement_plwordnet').append(
+    '<div class="plwordnet-container">' +
+      '<div id="plwordnet-box-right"></div>' +
+      '<div id="plwordnet-box-left"></div>' +
+    '</div>');
+
+  this.createAdditionalInfo(PlWordnet.data.related.fuzzynimia_synsetów, 'Fuzzynimia synsetów', 'Fuzzyimia of synsets');
+  this.createAdditionalInfo(PlWordnet.data.related.hiperonimia, 'Hiperonimia', 'Hiperonimia');
+  this.createAdditionalInfo(PlWordnet.data.related.hiponimia, 'Hiponimia', 'Hyponymy');
+  this.createAdditionalInfo(PlWordnet.data.related["holonimia/część"], 'Holonimia część', 'Holonimia part');
+  this.createAdditionalInfo(PlWordnet.data.related["holonimia/miejsce"], 'Holonimia miejsce', 'Holonimia place');
+  this.createAdditionalInfo(PlWordnet.data.related["synonimia_międzyjęzykowa/Syn_plWN-PWN"], 'Synonimia', 'Synonymy', 'en');
+
+  this.createAdditionalInfo(PlWordnet.data.related["Hyponym"], 'Hiponim', 'Hyponymy', 'en');
+  this.createAdditionalInfo(PlWordnet.data.related["synonimia_międzyjęzykowa/Syn_PWN-plWN"], 'Synonimia', 'Synonymy');
+
+  $(PlWordnet.data.units).each(function(index, element) {
+    let examples = '',
+        definition = element.definition || PlWordnet.data.definition || '-',
+        language = (element.pos.indexOf('en') > -1) ? 'en' : 'pl';
+
+    $(element.sense_examples).each(function(index2, element2) {
+      if (element2 != '') {
+        examples += '<p class="description">"' + element2 + '" - <i>' + PlWordnet.citeSource(element.sense_examples_sources[index2]) + '</i></p>';
+      }
+    });
+
+    if (examples == '') { examples = '-'; }
+
+    let data =
+      '<div class="plwordnet-box slides">' +
+        '<div class="fixed-space category"><span lang="pl">Słowo</span><span lang="en">Word</span></div>' +
+        '<div class="fixed-space">' +
+          '<h2 class="lemma">' + element.lemma + '</h2>' +
+          '<img class="img-responsive show-icon" src="http://lexp-dev.clarin-pl.eu/img/lang-' + language + '-32.png" alt="Language" />' +
+          '<p class="description">' + definition + '</p>' +
+        '</div>' +
+        '<hr />' +
+
+        '<div class="fixed-space category"><span lang="pl">Domena</span><span lang="en">Domain</span></div>' +
+        '<div class="fixed-space">' +
+          '<p class="description">' + element.domain + '</p>' +
+        '</div>' +
+        '<hr />' +
+
+        '<div class="fixed-space category"><span lang="pl">Przykłady</span><span lang="en">Examples</span></div>' +
+        '<div class="fixed-space">' +
+          examples +
+        '</div>' +
+        '<hr />' +
+
+        '<div class="fixed-space category"><span lang="pl">Hiperonimy</span><span lang="en">Hiperonims</span></div>' +
+        '<div class="fixed-space">' +
+          '<p id="show-path" class="description" data-toggle="modal" data-target="#path-modal"><span lang="pl">Pokaż ścieżkę do najwyższego hiperonimu</span><span lang="en">Show path to the highest hiperonim</span></p>' +
+        '</div>' +
+        '<hr />' +
+        showEmotion(element) +
+      '</div>';
+
+    $('#lexpelement_plwordnet #plwordnet-box-right').append(data);
+  });
+
+  addArrows();
+  showSlides(slideIndex);
+
+  $('#lexpelement_plwordnet #plwordnet-box-right').append(
+    // '<p id="show-graph" class="description" data-toggle="modal" data-target="#graph-modal" onClick="PlWordnet.showGraph"><span lang="pl">Wyświetl wizualizację graficzną</span><span lang="en">Show graphic visualization</span></p>'
+    '<div class="fixed-space category"><span lang="pl">Graf</span><span lang="en">Graph</span></div>' +
+    '<div class="fixed-space">' +
+      '<p id="show-graph" class="description" data-toggle="modal" data-target="#graph-modal" onClick="PlWordnet.showGraph"><span lang="pl">Wyświetl wizualizację graficzną</span><span lang="en">Show graphic visualization</span></p>' +
+    '</div>'
+  );
+
+  $('#lexpelement_plwordnet').append(
+    '<div id="graph-visualisation">' +
+      '<div class="modal fade" id="graph-modal" role="dialog">' +
+        '<div class="modal-content">' +
+          '<div class="modal-header">' +
+            '<span data-dismiss="modal" class="close" id="aboutAppClose">&times;</span>' +
+            '<h2 lang="pl">Wizualizacja graficzna</h2>' +
+            '<h2 lang="en">Graphic visualisation</h2>' +
+          '</div>' +
+          '<div id="graph" class="modal-body"></div>' +
+          '<div class="modal-footer">webserwisy@clarin-pl.eu</div>' +
+        '</div>' +
+      '</div>' +
+    '</div>');
+
+  $('#lexpelement_plwordnet').append(
+    '<div id="path-visualisation">' +
+      '<div class="modal fade" id="path-modal" role="dialog">' +
+        '<div class="modal-content">' +
+          '<div class="modal-header">' +
+            '<span data-dismiss="modal" class="close" id="aboutAppClose">&times;</span>' +
+            '<h2 lang="pl">Wizualizacja graficzna</h2>' +
+            '<h2 lang="en">Graphic visualisation</h2>' +
+          '</div>' +
+          '<div id="path" class="modal-body">' +
+            '<svg id="path-to-highest-hiperonim"></svg>' +
+            // '<svg id="path-to-highest-hiperonim" viewBox="0 0 793 1122"></svg>' +
+          '</div>' +
+          '<div class="modal-footer">webserwisy@clarin-pl.eu</div>' +
+        '</div>' +
+      '</div>' +
+    '</div>');
+
+  $('#show-graph').on('click', function() {
+    setTimeout(function() {
+      showGraph(synsetID);
+    }, 200);
+  });
+
+}
+
+function showEmotion(element) {
+  let emotionEmotions = '',
+      emotionValuations = '',
+      emotionPolarity = element.emotion_markedness || '-',
+      emotionExamples = element.emotion_example || '-';
+
+  if (emotionPolarity in PlWordnet.emotionMap) {
+    emotionPolarity = PlWordnet.emotionMap[emotionPolarity];
+  }
+
+  $(element.emotion_names).each(function(index2, element2) {
+    if (element2 != '') {
+      emotionEmotions += (index2 == element.emotion_names.length - 1) ? element2 : element2 + ', ';
+    }
+  });
+
+  $(element.emotion_valuations).each(function(index2, element2) {
+    if (element2 != '') {
+      emotionValuations += (index2 == element.emotion_valuations.length - 1) ? element2 : element2 + ', ';
+    }
+  });
+
+  if (emotionEmotions == '' && emotionValuations == '' && emotionPolarity == '-' && emotionExamples == '-') {
+    return '';
+  }
+
+  if (emotionEmotions == '') { emotionEmotions = '-'; }
+  if (emotionValuations == '') { emotionValuations = '-'; }
+
+  let emotionHTML =
+    '<div class="fixed-space category"><span lang="pl">Annotacje emocjonalne</span><span lang="en">Emotional annotations</span></div>' +
+    '<div class="fixed-space">' +
+      '<div class="emotion-box">' +
+        '<div class="fixed-space-emotion category d-inline-block"><span lang="pl">Nacechowanie</span><span lang="en">Polarity</span></div>' +
+        '<div class="d-inline-block emotion-description">' + emotionPolarity + '</div>' +
+      '</div>' +
+      '<div class="emotion-box">' +
+        '<div class="fixed-space-emotion category d-inline-block"><span lang="pl">Emocje</span><span lang="en">Emotions</span></div>' +
+        '<div class="d-inline-block emotion-description">' + emotionEmotions + '</div>' +
+      '</div>' +
+      '<div class="emotion-box">' +
+        '<div class="fixed-space-emotion category d-inline-block"><span lang="pl">Wartościowanie</span><span lang="en">Valuations</span></div>' +
+        '<div class="d-inline-block emotion-description">' + emotionValuations + '</div>' +
+      '</div>' +
+      '<div class="emotion-box">' +
+        '<div class="fixed-space-emotion category d-inline-block"><span lang="pl">Przykłady</span><span lang="en">Examples</span></div>' +
+        '<div class="d-inline-block emotion-description">' + emotionExamples + '</div>' +
+      '</div>' +
+    '</div>' +
+    '<hr />';
+
+  return emotionHTML;
+}
+
+function showGraph(synsetID) {
+  let width = window.innerWidth - 200 || docEl.clientWidth - 200 || bodyEl.clientWidth - 200,
+      height = window.innerHeight - 200 || docEl.clientHeight - 200 || bodyEl.clientHeight - 200;
+
+  width = document.getElementById('graph').offsetWidth;
+
+  const graph = new GraphCreator.GraphCreator('graph', false, width, height);
+  graph.showMiniMap(.25, null, 0, 0);
+  graph.initializeFromSynsetId(synsetID);
+}
+
+function createNetworkGraph() {
+  console.log(PlWordnet.data.path);
+  let graph = PlWordnet.data.path;
+
+  let width = window.innerWidth - 200 || docEl.clientWidth - 200 || bodyEl.clientWidth - 200;
+  let height = window.innerHeight - 200 || docEl.clientHeight - 200 || bodyEl.clientHeight - 200;
+
+  let svg = d3.select("svg#path-to-highest-hiperonim")
+    .attr("width", width)
+    .attr("height", height)
+    .call(d3.zoom().on("zoom", function () {
+      svg.attr("transform", d3.event.transform);
+    }));
+
+  let simulation = d3.forceSimulation()
+      .force("link", d3.forceLink().id(function(d) { return d.id; }))
+      // .force("charge", d3.forceManyBody().strength(-5000).distanceMax(900).distanceMin(100))
+      .force("charge", d3.forceManyBody().strength(-2000).distanceMax(900).distanceMin(100))
+      .force("center", d3.forceCenter(width / 2, height / 2));
+
+  graph.links.forEach(function(d) {
+    d.source = d.source_id;
+    d.target = d.target_id;
+  });
+
+  let link = svg.append("g")
+    .style("stroke", "#AAA")
+    .selectAll("line")
+    .data(graph.links)
+    .enter().append("line");
+
+  let node = svg.append("g")
+    .attr("class", "nodes")
+    .selectAll("rect")
+    .data(graph.nodes)
+    .enter()
+    .append("rect")
+      .attr("x", function(d) { return d.x; })
+      .attr("y", function(d) { return d.y; })
+      .attr("width", 200)
+      .attr("height", 50)
+      .call(d3.drag()
+        .on("start", dragstarted)
+        .on("drag", dragged)
+        .on("end", dragended));
+
+  let label = svg.append("g")
+      .attr("class", "labels")
+      .selectAll("text")
+      .data(graph.nodes)
+      .enter().append("text")
+        .attr("class", "label")
+        .text(function(d) { return d.name; });
+
+  simulation.nodes(graph.nodes).on("tick", ticked);
+
+  simulation.force("link").links(graph.links);
+
+  function ticked() {
+    link.attr("x1", function(d) { return d.source.x + 100; })
+        .attr("y1", function(d) { return d.source.y; })
+        .attr("x2", function(d) { return d.target.x + 100; })
+        .attr("y2", function(d) { return d.target.y; });
+
+    node.style("fill", "#D9D9D9")
+        .style("stroke", "#969696")
+        .style("stroke-width", "1px")
+       .attr("x", function(d) { return d.x; })
+       .attr("y", function(d) { return d.y; })
+       .attr("width", 200)
+       .attr("height", 50)
+
+    label.attr("x", function(d) { return d.x + 20; })
+          .attr("y", function (d) { return d.y + 30; })
+          .style("font-size", "18px").style("fill", "#4393C3");
+  }
+
+  function dragstarted(d) {
+    if (!d3.event.active) {
+      simulation.alphaTarget(0.3).restart();
+    }
+    d.fx = d.x;
+    d.fy = d.y;
+  }
+
+  function dragged(d) {
+    d.fx = d3.event.x;
+    d.fy = d3.event.y;
+  }
+
+  function dragended(d) {
+    if (!d3.event.active) {
+      simulation.alphaTarget(0);
+    }
+  }
+}
+
+function addArrows() {
+  $('#plwordnet-box-right').append(
+    '<div id="arrow-left" onClick="plusSlides(-1)"><</div>' +
+    '<div id="arrow-right" onClick="plusSlides(1)">></div>'
+  );
+}
+
+var slideIndex = 1;
+
+function plusSlides(n) {
+  showSlides(slideIndex += n);
+}
+
+function currentSlide(n) {
+  showSlides(slideIndex = n);
+}
+
+function showSlides(n) {
+  let i, slides = $(".slides");
+
+  if (n > slides.length) {slideIndex = 1}
+  if (n < 1) {slideIndex = slides.length}
+
+  for (i = 0; i < slides.length; i++) {
+    slides[i].style.display = "none";
+  }
+
+  slides[slideIndex - 1].style.display = "block";
+}
+
+PlWordnet.prototype.showHTML = function(tag) {
+  if($('#type').val() == 'synsetid') {
+    this.showHTMLForSynset();
+    $('#lexpelement_plwordnet img').hide();
+      // Append Network Graph
+    createNetworkGraph();
+  } else {
+    tag.html("");
+    var _html =
+      '<div class="table-responsive" align="left">' +
+        '<table class="table">' +
+          '<thead>' +
+            '<tr>' +
+              '<th style="min-width: 110px">Synset ID</th>' +
+              '<th><span lang="pl">Jednostka</span><span lang="en">Lexical unit</span></th>' +
+              '<th><span lang="pl">Kwalifikator</span><span lang="en">Qualifier</span></th>' +
+              '<th><span lang="pl">Glosa</span><span lang="en">Gloss</span></th>' +
+              '<th>&nbsp;</th>' +
+              '<th><span lang="pl">Przykład użycia</span><span lang="en">Usage example</span></th>' +
+            '</tr>' +
+          '</thead>' +
+          '<tbody>';
+
+    for (var uid in this.data) {
+      var unit = this.data[uid];
+      // console.log(unit);
+
+      var spanb = "";
+      var spane = "";
+      if (unit.islemma) {
+        spanb = '<span style="color:green;">';
+        spane = '</span>';
+      }
+
+      _html += '<tr>';
+
+      if (unit.rowspan > 0) {
+        // _html += '<td rowspan=' + unit.rowspan + '>' + unit.synset +'</td>';
+        _html += '<td rowspan=' + unit.rowspan + '><a type="lexp" href="/synsetid/plwordnet/' + unit.synset +'">' + unit.synset + '</a></td>';
+      }
+
+      _html += '<td>' + spanb;
+      if (unit.islemma) {
+        _html += unit.unitname;
+      } else {
+        if($('#type').val() == 'synsetid') {
+          /* Synset way */
+          let language = window.location.href.split("/")[4];
+          x = unit.str.substr(0, unit.str.indexOf('('));
+          _html += '<a type="lexp" href="/lemma/' + language + '/' + unit.lemma + '">' + x + '</a>';
+        } else {
+          /* Normal way */
+          _html += '<a type="lexp" href="' + unit.url + '">' + unit.unitname + '</a>';
+        }
+      }
+
+      // console.log(unit);
+
+      var glosaLink = '';
+
+      if($('#type').val() == 'synsetid') {
+        /* Synset way */
+        if (unit.external_links.length > 0) {
+          glosaLink +=
+          '<a type="lexp" href="' + unit.external_links[0] + '" style="color: inherit;">' +
+          '<span lang="pl" data-toggle="tooltip" data-placement="top" title="ALink do zasobu zewnętrznego" class="source glyphicon glyphicon glyphicon-link"></span></a>' +
+          '<span lang="en" data-toggle="tooltip" data-placement="top" title="ALink for external resource" class="source glyphicon glyphicon glyphicon-link"></span></a>';
+        }
+      } else {
+        /* Normal way */
+        glosaLink = unit.link;
+      }
+
+      if($('#type').val() == 'synsetid') {
+        let definition = '',
+            example = '',
+            exampleLink = '',
+            qualifier = '';
+
+        if (unit.definition != null) {
+          definition = unit.definition;
+        }
+        if (unit.sense_examples[0] != undefined && unit.sense_examples[0] != null && unit.sense_examples[0].length != 0) {
+          example = unit.sense_examples[0];
+        }
+        if (unit.usage_notes[0] != undefined && unit.usage_notes[0] != null && unit.usage_notes[0].length != 0) {
+          qualifier = unit.usage_notes[0];
+        }
+        if (unit.sense_examples_sources != null  && unit.sense_examples_sources.length != 0) {
+          exampleLink = unit.sense_examples_sources[0];
+        }
+        /* Synset way */
+        _html += spane + '</td>';
+        _html += '<td>' + spanb + '<span rel="tooltip"  data-original-title="' + PlWordnet.fullQualifier(unit.qualifier)+'">' + qualifier + '</span>' + spane + '</td>';
+        _html += '<td>' + spanb + definition + spane + '</td>';
+        _html += '<td>' + glosaLink + '</td>';
+        _html += '<td>' + spanb + example + " #" + exampleLink + spane + '</td>';
+        _html += '</tr>';
+      } else {
+        let definition = '-',
+            examples = '-',
+            qualifier = '-';
+
+        console.log(unit);
+
+        if (unit.definition != null && unit.definition != '') {
+          definition = unit.definition;
+        }
+        if (unit.examples != null && unit.examples != '') {
+          examples = unit.examples;
+        }
+        if (unit.qualifier != null  && unit.qualifier.length != 0) {
+          qualifier = unit.qualifier[0];
+        }
+        /* Normal way */
+        // console.log(unit.examples);
+        _html += spane + '</td>';
+        _html += '<td>' + spanb + '<span rel="tooltip"  data-original-title="' + PlWordnet.fullQualifier(unit.qualifier)+'">'+ qualifier + '</span>' + spane + '</td>';
+        _html += '<td>' + spanb + definition + spane + '</td>';
+        _html += '<td>' + glosaLink + '</td>';
+        _html += '<td>' + spanb + examples + spane + '</td>';
+        _html += '</tr>';
+      }
+    }
+    _html += '</tbody></table></div>';
+
+    tag.html(_html);
+    tag.find("a[type='lexp']" ).click(PlWordnet.wordClick);
+    tag.find('[rel=tooltip]').tooltip();
+  }
+
+
+}
+
+PlWordnet.id = "plwordnet";
+
+$(function () {
+  Element.addVisualizer(PlWordnet.id, PlWordnet);
+
+  $('#lexp_results').on('mouseup', '#lexpelement_plwordnet', function(event) {
+    let lemma = selectWord() || '',
+        lang = $('#lang').val(),
+        data = new Object();
+
+    data.lemma = lemma;
+    data.lang = lang || 'pl';
+    data.left = event.originalEvent.clientX - 80 || 0;
+    data.top = event.originalEvent.clientY - 55 || 0;
+
+    if (lemma.length < 10) {
+      data.left = event.originalEvent.clientX - 65 || 0;
+    }
+
+    positionTooltip(data);
+  });
+});
\ No newline at end of file
diff --git a/spxvi/css/haslo.css b/spxvi/css/haslo.css
new file mode 100644
index 0000000..e3284b3
--- /dev/null
+++ b/spxvi/css/haslo.css
@@ -0,0 +1,294 @@
+    @font-face {
+    font-family: "Palem";
+    src: url("../fonts/PalemMUFI-nm.ttf") format("truetype");
+	font-weight: normal;
+	font-style: normal;
+}
+
+@font-face {
+    font-family: "Palem";
+    src: url("../fonts/PalemMUFI-bd.ttf") format("truetype");
+	font-weight: bold;
+	font-style: normal;
+}
+
+@font-face {
+    font-family: "Palem";
+    src: url("../fonts/PalemMUFI-it.ttf") format("truetype");
+	font-weight: normal;
+	font-style: italic;
+}
+
+#content-main a {
+	text-decoration: none;
+}
+
+#content-main a:hover {
+    text-decoration: underline;
+}
+
+#content-main a[id] {
+    visibility: hidden;
+    display: inline-block;
+    overflow: hidden;
+    width: 0px;
+}
+
+div.root {
+	font-family: Liberation Serif, Times New Roman, serif;
+	font-size:   11pt;
+	text-align:  justify;
+}
+
+div.level {
+	font-family: "Palem", Liberation Serif, Times New Roman, serif;
+	font-size: 12pt;
+}
+
+div.root p[title]:hover {
+	background-color: #F3F3BF;
+}
+
+div.root span[title]:hover {
+	background-color: #E9E9B7;
+}
+
+div.root p, div.root div.level, div.root div.group, div.root div.title {
+	text-indent: 0.5cm;
+	margin:      5px 0;
+	overflow:    hidden;
+}
+
+span.r {
+	font-style:  normal;
+	font-weight: normal;
+}
+
+span.upper {
+	text-transform: uppercase;
+}
+
+span.wyraz-hasłowy.zaznaczony {
+	color:           #990066;
+	font-weight:     bold;
+	text-decoration: underline;
+}
+
+span.lokalizacja {
+	color: #993300;
+}
+
+span.wyraz-hasłowy {
+	color: #990066;
+}
+
+p[title='fleksja'] span.postać {
+	color: #336600;
+}
+
+span.spec-gram {
+	color: #008000;
+}
+
+span.tytulik {
+	color: #003366;
+}
+
+span.objaśnienie-pol {
+	color: #330066;
+}
+
+span.forma-podstawowa {
+	font-family:      verdana, arial, sans-serif;
+	border-top:       2px solid #400020;
+	border-bottom:    2px solid #400020;
+	background-color: #400020;
+	color:            #fef4bd;
+	padding-left:     10px;
+	padding-right:    10px;
+}
+
+span.forma-podstawowa.uzup {
+	color: #ffa858;
+}
+
+/* style dodatkowe */
+
+table#nav {
+	width:          100%;
+	border-spacing: 0px;
+	margin:         0px 0px 10px 0px;
+	padding:        0px;
+}
+
+table#nav td.prev {
+	text-align: left;
+}
+
+table#nav td.next {
+	text-align: right;
+}
+
+div.root div.index-up, div.root div.index-down, div.root div.index-show, div.root div.index-hide, div.root div.fleksja-table, div.root div.fleksja-text {
+	width:   12px;
+	height:  12px;
+	float:   right;
+	display: inline-block;
+	margin:  1px;
+	cursor:  pointer;
+	padding: 2px;
+}
+
+div.root div.index-up {
+	background: url(../img/arrow-up-idx.png) top left no-repeat;
+}
+
+div.root div.index-down {
+	background: url(../img/arrow-down-idx.png) top left no-repeat;
+}
+
+div.root div.index-show {
+	background: url(../img/icons/book.png) top left no-repeat;
+}
+
+div.root div.index-hide {
+	background: url(../img/icons/book_open.png) top left no-repeat;
+}
+
+div.root div.fleksja-table {
+	background: url(../img/icons/table.png) top left no-repeat;
+}
+
+div.root div.fleksja-text {
+	background: url(../img/icons/page_white_text.png) top left no-repeat;
+}
+
+div.root div.title {
+	margin:     1px;
+	padding:    2px 0px;
+	color:      #222;
+	background: #E9E9B7;
+	cursor:     pointer;
+}
+
+div.root div.title:hover {
+	pointer:    default;
+	background: #F3F3BF;
+}
+
+div#index {
+	background-color: #DCDCAD;
+	border:           1px solid #005B00;
+	margin:  15px 0;
+	padding: 10px;
+}
+
+div#index ul {
+	list-style-type: none;
+	padding-left:    20px;
+}
+
+div#index li {
+	list-style-position: inside;
+	text-indent:         -17px;
+}
+
+div#index-navigation {
+	position:           fixed;
+	top:                5px;
+	right:              15px;
+	padding:            5px;
+	background-color:   #DCDCAD;
+	border:             1px solid #005B00;
+	-webkit-box-shadow: 1px 1px 2px #666;
+	-moz-box-shadow:    1px 1px 2px #666;
+	box-shadow:         1px 1px 2px #666;
+}
+
+div#index-navigation a {
+	color: #006A00;
+}
+
+span#index-navigation-icon {
+	display:    inline-block;
+	width:      16px;
+	height:     16px;
+	background: url(../img/icons/arrow_up.png) no-repeat top left;
+	margin:  0;
+	padding: 0;
+}
+
+.block-caption {
+	font-weight: bold;
+	margin:      0;
+	padding:     0;
+	min-height:  16px;
+}
+
+div#index span.level-marker {
+	width:   16px;
+	height:  12px;
+	cursor:  pointer;
+	display: inline-block;
+}
+
+div#index .empty-level {
+	padding-left: 16px;
+}
+
+div#index span.level-close {
+	background: transparent url(../img/plus.gif) no-repeat top left;
+}
+
+div#index span.level-open {
+	background: transparent url(../img/minus.gif) no-repeat top left;
+}
+
+div#fleksja {
+	background-color: #DCDCAD;
+	border:           1px solid #005B00;
+	margin:           15px 0;
+	padding:          10px;
+}
+
+div#fleksja table {
+	border:           1px solid #DCDCAD;
+	width:            90%;
+	border-collapse:  collapse;
+
+	margin: 5px auto;
+
+	font-family: Liberation Serif, Times New Roman, serif;
+	font-size:   11pt;
+}
+
+div#fleksja table td, div#fleksja table th {
+	border:     1px solid #999;
+	text-align: center;
+	padding:    3px;
+}
+
+div#fleksja table td {min-width: 30px;}
+div#fleksja table th {
+	background-color: #E9E9B7;
+	white-space: nowrap;
+}
+
+
+div#fleksja table td:hover {
+	background-color: #F3F3BF;
+}
+
+div#fleksja table caption {
+	font-weight:  bold;
+	caption-side: top;
+}
+
+div#fleksja table td .forma {
+	font-style: italic;
+}
+
+div.toolbar {
+	display: inline;
+	float:   right;
+}
diff --git a/spxvi/css/tipsy.css b/spxvi/css/tipsy.css
new file mode 100644
index 0000000..eb4236c
--- /dev/null
+++ b/spxvi/css/tipsy.css
@@ -0,0 +1,25 @@
+.tipsy { font-size: 12px; position: absolute; padding: 5px; z-index: 100000; font-family: Liberation Serif, Times New Roman, serif;}
+  .tipsy-inner { background-color: #DDDDBB; color: #000; max-width: 200px; padding: 5px 8px 4px 8px; text-align: center; }
+
+  /* Rounded corners */
+  .tipsy-inner { border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
+
+  /* Uncomment for shadow */
+  .tipsy-inner { box-shadow: 0 0 5px #000000; -webkit-box-shadow: 0 0 5px #000000; -moz-box-shadow: 0 0 5px #000000; }
+
+  .tipsy-arrow { position: absolute; width: 0; height: 0; line-height: 0; border: 5px dashed #DDDDBB; }
+
+  /* Rules to colour arrows */
+  .tipsy-arrow-n { border-bottom-color: #DDDDBB; }
+  .tipsy-arrow-s { border-top-color: #DDDDBB; }
+  .tipsy-arrow-e { border-left-color: #DDDDBB; }
+  .tipsy-arrow-w { border-right-color: #DDDDBB; }
+
+	.tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent; }
+    .tipsy-nw .tipsy-arrow { top: 0; left: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;}
+    .tipsy-ne .tipsy-arrow { top: 0; right: 10px; border-bottom-style: solid; border-top: none;  border-left-color: transparent; border-right-color: transparent;}
+  .tipsy-s .tipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }
+    .tipsy-sw .tipsy-arrow { bottom: 0; left: 10px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }
+    .tipsy-se .tipsy-arrow { bottom: 0; right: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }
+  .tipsy-e .tipsy-arrow { right: 0; top: 50%; margin-top: -5px; border-left-style: solid; border-right: none; border-top-color: transparent; border-bottom-color: transparent; }
+  .tipsy-w .tipsy-arrow { left: 0; top: 50%; margin-top: -5px; border-right-style: solid; border-left: none; border-top-color: transparent; border-bottom-color: transparent; }
diff --git a/spxvi/fonts/PalemMUFI-bd.ttf b/spxvi/fonts/PalemMUFI-bd.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..e734ddc28c8f7c8fe61afdab9ab3e193af143128
GIT binary patch
literal 424180
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
BG~WOK

literal 0
HcmV?d00001

diff --git a/spxvi/fonts/PalemMUFI-it.ttf b/spxvi/fonts/PalemMUFI-it.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..32029afd62bdc28d75b7cec8f9331b7415ed4f09
GIT binary patch
literal 961396
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%0D2ohZv*IU0KE;Mw*mAvfZhhs
z+W>kSKyL%+Z2-LuCVCrSO+&osEyrEP=5Kkt{JjLuW(mFhd(rv(l;ZDi;xxYj21l^M
z@b}^c_`B2oGZhCkXv4Z?nk5CViQfUZIRG~Y;N}3_9DthxaB~1|4#3R;xH$kf2jJ!a
z+#E2uIRG~YlpP*`5y5KmupX@05+`Pdq>C!#gNl$3V!At*Ul83)?LvW0U3;KOt4Hfr
zkQcLEcpk#uxfqN2me9hid+%o4=->Kqc{^jHPO4ZB>o4tVGp2{KJZn~8S?rsli*Kfs
z$w1dYX;W@}cV=bLbz_y?M$hQI&Q+VrYnrN33u^MpJ!R>oz1t(2rH?ZiSiZce=lXrB
z@$>8-7S~p0=2tCGFI}FIRaT!@wbD~;*!~P;d(v*mwq6_3QzSx>{ZmR)5)z@f{1J-c
zXTUavNx4CU+7KdCe+D2}*%DLAZrWyvbPF#DZVX3lw&JZ+ZA1-EmW^}nN1Db;u75WV
z(q6%5LtKZVIBmPEm4|G2QI+jRC33jv?MI>udA4eDbCGwgyRtmJxUsOUwQt4ji%RSz
z%{hLto2|kl%J_c|c}j=8<rS`s@`B8o{N+XZ`b(vbfGsdXv;SXgql+2;*AnY@&;)oD
z^fqB#c>Ouspa4VL3D>BtNz&{&Qd?o8MpbH6Ws$iId6XfKXbpy|B03=3{jpmPzkD&w
z|3vQN8`<+%*x;hsf8potxoNN)SW``yhY90pm1s#-h?a!%w0sVpio-E^S_@BWWAQYi
z)3JRZHcwx<JKX0)V`>C%V`Vy{InxzS3y4JjMq0H7cH6Y#X<G3#t$3PNJWVT}rWH@q
zil=GC)3oAgTJbckc$!u`O{?i?TJbck%G0#Mfl{$S(z3P@QZvmkF4qZ{>!NTu8e&Bo
z#Hz@(0PYrWdqHmnW7%pVn`5eDa9ocu9k4$$2j90xn-WCkzD0{UDX?NMG{+B=96DI^
z`J-vfM_}&H+5kUpg$_cuLH9%Nh8~AL4}BB*A@mFAzaW3bRts`y35lP=_#O)8Dt3&C
zL664nDp>0!DvfFsV$TB}j?K`QzY%LL5Sgj}Fy~~zigVQ*|Ln(iyY^SYSGCS2v#JI2
z)hP8T5BS(H{`x!NM7GFzb65|l#mEQW5+4b!tGHHyYx%q(h9Fc*JfelRe>AobX8NMc
z6C(2;P{)`lSebNbju!&F|39)LMy5b2(rE_M&0xA2OgDq+W-#3hrklZZGnj4$)6HPI
z8B8~W>1Gqt&0xAY7N%p`lKJpl_$)R=c;CpiF@`NsJdbF>?H`<j=OfYP4s$U*f<3n=
zo_`je7m&|?esR(6PY(vc9o9)d4E`~@vNxz)(=^9H7&`*R;3UKMWH2vdbJMVFU@c@$
z5UcTi<SDYn5=SfknIDCPDKXl%>u-uQO|~%g(H!p!%E3Usu`aLrj(Y*|YG^BT5V{Sz
zA9^?RIP`hwo6rxTUqJr_`K|ip8ZfsU!c-!r9I644I091+;$KZU$k>#FY#N?Z4iR-i
z|5Y4vn0+`rw23W<aD}k4q@X$fUCE&Yzxp4t$k=4spbjL^fdo2`KnD`&Kmr{|paThX
zAb}1f(18RxkU$3#=rASFfeq?V@l6Ljs1*Az6WBmQ^0_6_BmqxTNWc?QBBmsyu(TeJ
zU`j)FahlSQ-x<kIV|QoGd187jR!l945dm5I<B`$sXkkzcNm;%zM=Ugs%zme2*2Q+L
z&lx2kk{zw&9UF~|XgjiNM|SPVt{vI6BfEBF*N*JkkzG5oYe#nN$gUmPwVSeQM|SNY
z{$p-g#S~2)_3WX_QpY2%z&Xccd(245x;hTV&paF}T#CVb{bO?lO;&KJIe+cfnNE$~
zYVFD*D8Id6z8j0Z)q$94ZvHolt~AE0E6r;DA_ue>3s$D?h+s^;k+G>a(i1`=EZO^8
zI)~t*M^@IZID|I)N|f*_hP+Ugm@yW+$ej}3$~iYmRvzU=4UgGm=!yqj@t`Xnbj5?N
zc+eFOy5d1sJm`uCUGbnR9(2Wnu6Rsc@t`Z7dFjgh>{>k`xG2x%vJzWn%1Xwjti;~M
zD=Vuc$|HIo>xwvJbs<_*7MHBTJ(1K0^dhTIlKU%wspEQutataBzGxH~jUuB_WHgG5
zMv>7dG8#ojqsV9!8I2;NQDiiVj7CivjUpp9WwE+83U_ShAzYD+I|DjaC>m54qCsJ~
zzqz$ArWGvl3v#8_eTg+($zvq(NV1$I<4nfVh(&~2$+(iSY}FBGC1IV1tH=Mh?Q?~A
zYT-XT2bdKx{cCwS4xzvDmH6|(v2bwTrHR4F>0m4UO*H4j3J-16fVyOUB+kUo5<_<r
z7A1NF1D+5J49N#WAs;Ld1780YdX~m6!GJhz69Y0fF(BhYf|(Jn-RB|X?q%G^c!=v7
zu50EBVCIt?w){8_2+TYmca}H?0`&a3lf^2ZX}t~GolMsFv(n)q&$I@mSc6imK`GXt
z6l+k5H7Lazlwu7^u?D4BgHo(PDb}DAYak7>24#<4Db}D=S%Xqo=!At%*ec`9fHer)
z9U9h7D0E9}0e2Kk=5P<4`$<0~X&aOxn|(qyaz-xoupYf^tLrO&A2z$9&s%V_<*y@6
zr^u^!VnE;T=hYM9F*4Ls$stnthNhIjvl4h#0?$g|SqVHVfoCP~tOTBwz_Su~RszpT
z;8}^uvl8Br<J<yk<YD~rpGg>;=!WtqH)Q4B<WFuS{zUdge{dOpX7-2AdM;y71m~i1
zEw&dGf6@qmz9b!R0@?8@I8y~@s^Cl&oT-8{RdA*X&Q!sfDmYUGXR6>#6`YZ-V}pXG
zDmWv(%Zz9uTM#7sZKLmnE)ttk6k=0?oH9@-RYxY51eIy$A#S;xu~Eu#DXL<XY}lT^
zoOeahW+Rtya5Cof13%r$BJ39wFYAbf-!hGQ8g1ROdCEcqZF3)j_D%lT520T`{{{JZ
zY95MaR%C>sEyyydgilj2mtv!ON%@5;T+CU7?Gu+V=au_o%@{6W&^PCrBEX|&c=RuR
zywz%~#<13BTCWB3#+d2lMz>gD0Zk~=N>s(yG^|?|V4jIN2{uyBvt^xY`eh82jU$os
zMz(*rjF~gvi4w_Q!pF&2p*uVzcDMa)C=aDenQ3eN{bCl}@hmFNV(6;$E|t}XAP+@X
zO&*G_#^hl{OK1D;<vjd#v=BQo6C;>Cc<6<P?;wUsraqxZ<2;B?)q7ISRXeeJo!Grj
z>|Q5!uM@l1iQVhO?sa1KI<b45=x8T8+KG;KnmXEv96FWV>*QT)12_!p0a+mSt{}wT
z#nfh_9i~*g8=d()+*~^k`CYWs{zzq<w5AkeC~nqV%#y#Yyv*g!uK>b!-(>=L`SJLp
z-AhE07f*PLY+8`bJxVs^>>NTiC4O_JUNFI4JFG?}Y|~Rr*;Lc!PXM3ocjsd2P1(pe
z1;^#%+Hf91Mw0w=GnOV<E4Z$Z#eop(tj{MhwcU1^XkPhh+)?Nyl9~O)+;OK>Yv4@L
zcVc&3Sn*MvYOP^ZM_xX|h(PV=!!Y{5hSzHcU8vYFiZqNO4WmfIDAF*BG>jq*qe#Oj
z(lClNj3Nzd$wuHXi~`AaS)=0LZfv#B!>TOsh|*!W?L`umkc56~qN`?T@k$DRdUc*1
z3b1&#7G6iLiR*tM*{pud#a!n~M)r4>C*wY$^yRmQ#q;r>JE=$SF;N9Z-)dsik}qdI
zb|{SY`um0iu$ly@77Q#q{PNe@_5$`^z}^ekdjWedVDAO&y@0(Ju=fJ?Uclaqmh_?}
z(lAU#%e{c!-*(K)<F1CbLI<JSp!=bBLytqBhrS8@5c&o5Uy%PUE4j-`r8>W702fHE
z@B>{n-&m>*5UEK;BHp@_!6-Bd9fod)9)uo+o`B9lPeac_FF?P8mR%bMz#|4DmJi1b
z@K<WWCuH+Nc%-<+rqy5ksY7bO#Rhw{b^43b?DHK|2(MfOgsXUH!Ew2SE`#boUUk1Q
zFg^yx$H4d)7#{=UV_<v?jE{lwF)%&`#>c?;7#JTjF+K*y#}vlL07a+Ym~RkcE^BDR
zkg5|3i??1cMqT`rnah-MAFpWSxZ*%;j72${Gj80z{9LrjaQx`CJQQQ9Y?C;`VbtR_
zv#o5CoWe7TB1<H3^<o&jArK6ZQ~)hF>po5UpH8I_MnJM9dO$KDbA^GBxx(uO%wo9L
z1K{5CfLgBnyotH<oUujB1ch}bekkY0N?pVcXZ_e*i4B`p2B!B1?DDw&bHVh$RgP(?
z^BD-*<prbKSU(bHEiuUY=$L*zL0E$9l>%X?m2o>)S(ECGBTSC5@OwwxFrG<^k~E4R
z!5HKitHDgSwPNtQ<5K*NkZ8KPZL;9E%Wp-y5Xqonokxf-Mu;y)h%ZKnFGh$jMu;y)
zh%ZKnFGh$jMu;y)h%ZKnFGkGxVubi&BoIUY9^qHk#zOJi2eXFb#c#w&*m^vE{ANc>
z*j)*LBZbAR^Q>e|v;+KRlX?HH?0`0E0VU^HZlGepJE6^tXjpU^cA8VUxa{%}mmPX=
zK?zGElB|`|L^CxiV{=JEQq4IeS29R@$?;DrKNNoGQ{?knob}NUe!B3Z@EHkNpvdPw
z{W{{|ELJ+8YfDBIpWBFoJ|#PSWxdGU!Kb351@HKcpVOg?Emv8nOV5+a)5_I;G1*b!
zG4l2iSQ#_mSkfDVrRlLEjHt|=bD_kF_0pEyt@xbBy3$W&M^LfivupydHV~b#-Mw=o
zI(Sfwe~J~#c;lcIIf8~g06;;?q)cSX*g&=*I#<h6;;7)$obz-@=9(W(ENWdPqVZXB
zYjlykv@e>qi7Jl3dP_vxV#OtBORDWZ!?rYNEA>pVF0$foRMeLy*t#@|?Fg+}>y{6?
zLyXDX(h3z$vp))DUu{57%>=bX=&6Vyl|Eu}5}53*6fv;|ti&Y0&mrU);3{EHI}>cF
zd-E}t9hMRntuzwY;aWAXO!kt3=n}oqI-jI=WOEirg4=TOdG?9@44v!OCUwqDp1|0N
zl*f5fqpD0<w+W()3G{P<=wgECVuI*mg6Lv`=wgECVuI*mg6Lv`=wgECV#16rCWtO3
zRCF=H9ajgU<5CfDX^4RR3l8+p@GG0Y21hm2*gytEo=R5MG^2HzCcClBbeP7xLzAuS
zq{B4QVH)W$jdYksI!qJ8N;*s<9j1{E(@2N0x0b$dN!%?JNjIM-l>%+x=K)zZa@c51
zT&$Pq&N8ddRpz$WxOHEjoz6=9!piTQWj>d+tj5=8^?BWvDAgRF{M_uUFWb4SICJar
znSZMA?AG^})D>i=XQmdqvU9fF^yae<_4eL*Vs~#wPWtGz2i;klhxPqmZ+d3tpBzuu
zjt_QZ7bcI~`HDL%Wo-Mo<v0I6aqmt0Jil$!k1Tt3U~_v}X>Hl64^3`=_{Mc@E?3*S
z8z0_2df(}z?#!*D&n}yNPvdVr`);~-;`HZE_x&JZ$q0SQ{}miaj?IsQEp&4hj<13z
zW_6*A*BP3>1w3p44_m;)7VxkIJZu3ETfoB>@UR6uYyl5jz{3{su*Jl~7Vsd4ahTq2
zemGd8ZG07Qu;xl}5YcX1znl;pd?`X4voIh;GW=HAPw(thI9N$vrc~+VDSfJy6_`Tm
zQ%HRZsZSyGDWpDy)Tfa86jGl;>QhL43aL*a^(j;8Q%HSES%E2dtGetBU{)v0+~s^w
zu-H~W?37{Sc|gXJ%~^XM5}Q9y%Mhy~$8JvuE>1?vTrS8=+!!O5X{A&|bFNYtxmMe&
zCr@K}N0nYmCGAGTLQH~{Nw6{rRwlv9Bv_dQE0bVl60A&ul}WHN305Y-inQ`qD?^iD
zMGgdrY9Tg?>)05t>sZGuY4KghI$nI2#B}on$Q=D(G7|xjmp>UZUSEh2`P5uFLMy`5
z9DnJzCp#sMoK!Yk*^>oh<eWAM<E2@&)YzmnN5xFc=wgfXc_R<MQmrX1wtd;c6A$pT
zgItHN05UNuuildgxXgSiO6F~W1|?=L&PpuEX`=z0Bu#S&g%R_O!KY1zP1%M`*@jKo
zhE3UqP1%M`*@jKohE3UqP1%M`*@jKohE3UqP1$DJlx@IpTP&Lr6Cdk|U|&6atWN|!
zB1R&%KTZffJ{NVaxe!xwqnWIY6qZmQ<pdvZXFl4GAaB+;PIFS)K4sYV!7oGml}$MY
zMvj4zV_@VM7&!(;j)9S5VB{DWIR-|Kfstci<QNz^W@6+R7&)e5lw;g+XY`rMfcT$*
z5dX75KG+cQK}<BQ^rPvJw)<6ZOcKGEXH-c7Um_Wq=WOG;jqvLb<H;+S^USlHZf7Ep
z_wuHB)Zi@yi|#mU_UKRKm{yqFs@*7<+@gXFg~J8Ukc_h?3}hRNFKeS?a+^SKTL=UX
z$_EESK8T6Q?b=ag;YMGT`ISV81NiKtTz7-R-QaLL<9&<|a=nr3jaLwD&nx+2dms^z
zd}Sd1G|fT~IU7eqCELa6*@}>!s6*OcFK$;<Ih=esvZ_U99b7vC@t41xG;%9+RjuOR
zKNVNIRLQrusdK)gG*yh)zavtk>sSpzBQ#Uh?+NQ+8?oC}r2eWe-51vAoU~K8j5yzM
zak{RWvGDw4F<1N5Ib{(s@|dqIA~k2#$Kw@7SOoFXp-8f@YaaCFbHtp|Ls)vavOfCi
zbaC~Gb*6?oknGgt15FNlBU!m>QqF1SgC*uci8f`O9sCn%A1rM!jZv(&u5uc(@mG<x
zCRT1DqP#vHqg`CormvRW@kuR4AJ~`f3YVT;Ye04n`(-D6Vb{t&uJF#V$`>bW&B(tj
z5vSbdY7sllVq$kJyB2GSZfQgry*av!VmFZ0KOdi*=IAMVVJL#EF20Pcb_MiII!WP~
zUY#zpF%RVk)3o`vos|x7Y^p&gBkEX;2DA~Sw<WstqBW(pbi^mOKpWMxyppus(zfD4
z_woi`QAux0aU@S=zxbcXY}+L=qeJ6jbP=4Ngy!40HZBRp@3Y3EODJkvTmAd<6j8kX
z>*CLl(MskY;=ky9t8Lf26Wje(I+S{~0ktkF>!DH>X7s@~)<@S7^{op;ePLZw=kATW
zM%>(*cpYK%X1QywuvzXj%Us64ji|si^PA>IRO-&?ka^{|@lR;=55<R~c)IJp^snJo
zn&rQX{|ufs`0+%)T~>s165Datj7h_g64qlQtiSH4Aca+iK!g-CWQyK!mtG+L5Ndu6
zcO^Y+{M*P#nOE!Gh(H;R4wRXHi+h@B*%2R3=A2MocvA$B&?9oT!trhVg7nN=qg}Y_
zy5@x)%@ng2%lz8tNkg<1>R6CDdRE0fA+_Yk(`Ms~VKo3&YnYT{b=Zj1cQ2CLC(r6e
zzP}8}_um(%59Qq5Q^LCN%}=iLYs+WIwN8a`F?*549Vl2j;*jfXU-+87<<I9S*!Y44
zYV~I;oU(sjdS7*E8+1;hzDm3M^^2vaUwXjO$JAi6WtntInqRxWX>_??HC>-Wn`7)T
zie$*GweiS)L$q~!>p#v10kQf6MwmF;v=!js8wv-~FK~<YwAnFG&6F41vCj1Hb8GlY
z5i@J^@rgNd>%eJxg00k+%&oZdo=ID?;t=A@pT}BRw|34)kaP7Kj5M>BJq*>z^A*2d
zcWUePrB_`C!afl+z1!jw^uk&aPGj5p)NwPhbvpVUm53U>CJr#n{!_Gd^WOR3AXX2<
zh%Orpbbx_>2*H3Zdrt#rQN5NO4d*BOg|#>|WZyKWF^JymFrw^R;*kAsqAiJA|Mbda
zACFhJX)Vb8tIXF_k3?;s-nJNB5)<1QakChM&G8z8#c7o|O})=%tzk}}L_0Voa?`|!
z;8_+2cwYHH{8<3&AI=L;@$^=Vm<(XgJ=ppSg)RCmYJ2p0v*V(Q6RxUGi~fSZI30|a
zWgcUPUm{yCPO|{9Q5%{YQ}bzc6A@B+9FUs%T-^BrTibjPHFvMZh-m}nm5t0R-S{Z#
z%c+&%bl=x(r@<~ULAydsP|VVZS99xu6kG4oN)?FaT}c{u&cXU}LMk7^HzrulhCyjT
zHG`4%Dntl@=+OkWngZCO|4sPr1!c7sT$5wYZo=x-=ZC3Ra~s2gFco*c!}?M}Fco2w
zgT<X_P{kKp$-L@1g(>zyXeac#*Jvliez8{j<Fi(aUAi27Ys55mYrk43ntu)aybBT9
z5`wj;8z-!PmRQ8a*h>*1LnCu~$<<9M?6JQ>JEa$!J1mqHTX5BUR4W#?v*M6|?@)Z;
zlc@UD+iEdQ_3xo8b(QnZ2HC3<0lC;4F{}wTbaU*@h?Y;P#h3oXZ})a;$MvSyXvfAr
zfgTm!fvi!?DDAb}!ZD41*ms3cjJ}y8QtWU0cp_jJb%TfXP@)ZA)IA>&!Z_?+E7<#w
z5bPD1yFirPTfE&L^TXO}xgBJ|Sc^NNvwbxoSo=uS%vjnYfi0f!4y<*7wGWfuQ2R-=
z`}ISY?kF+#JS*H?4LeG16Ki-|yw>p5*;*poNJc3LnxF_scJi)d9C>@mv~~**e`WL9
zg;(I%ZcYS}U%n~+ES=@ciN$t2`%xmM@xVDX&W<lCoU=zoyI0@67`s#qZHXFJ&b>S3
zq~QBxy!d`~x2edMl-*$aC^$bVTU8iex>aRbyNQRtGJMZ#(@Mmk;K4+|`<1<MXAG@x
zNG!VN-rEv6r|8f=H2Z*lpCg5S_AWZwH*4LbcE2}G9le7LFPq7e7%YcW)7&lwW6%_I
z1Ue0!g&u>Rgr0()fu4h2gf2kRB}7B~vJ1<>HIu9Soag_!*#EN}&m_OE_x~*2MC50$
z|K}e6&qL=msW_y#f$hdi$%@Lgi^V#*=BS46vH_t+{anVnj<tdLbhe{Hvc_IdTW-bz
z#`=AOZLR(Nt!;zxUhR)HuN-V`9U7i}pmlJNf4Fk?q<qreKQw!*3_SemF7p#L;BVl+
zrfU@!e`$S`SZ-85E)uEaRg^?3kw~Q}kxC>|i9{-qNF@@fL?V?)q!Ni#B9TfYQi((=
zkw_&Hk%K{|+10?o@gzx2d($k&qgk^DrV9R5$KVIU@)yG)f8jrREx6wzNB$zm*l*E}
zNJJnds<$xRfRJR8>_GN`s1axzbO<^HJpjE2`WW;D=v&Z_pkG42g;ZAq2ZLNln!HP^
zvqJD7hhR#(+Zv;vjcfv{G5FHSU=*5!4nwy?4?>SZPeA9Or=e$|7oguk!k2ztpxH<s
zXQx`6#a2&SpT*}&wN{k7Z8dWESD&S$y}F{DUs@}&`g9+VayhFj9JI7a)BE`QVvBWq
z=bkgGmesgD`B^1Jh3U()TRS|twS(Tq>XOt#Z(-}sk^1(^;@t<P@=m_(>-k5A-ha_k
zIMu%Ah7A?nWlbg94<2nUUs0cD`EcK!p-M~hE&GPj^2##v3i`d3^<#T)IN`NBT&?3B
z^>wvF+uXCutQ(JhcIbo253bbrH~!h1zga)(Ey<{+F}Rj>vBCBU+e@@)8qz*(N_tSF
zG#Ik0(Z3->Z6kAo0TEjYCCk$BK{nW{Zu(1+V?N~Xoo$D?c9?62xptUqhq-o`YlpdZ
zzR3=A?J(C4bL}wKuFQa0_AIUEmm<EUh|kVA7jKZo&snsSD&w0|3<31%ZoQ)1;j|iT
zx58fdUu=>7K{>@%SF!FwK2Dq4R#EOW`bg<DzB214Q}ybp@%F9dZ+6w^tiS)z=-WS(
zUpwi!^}Q3hX=y7Dy>+U2Wou<xQN_}f{F**b^6cNWE^of(f$JQO@z7-<%ddK_-`H%k
z&3xNpDP48c(pY+v#nQ3;)X>1OP3=o;&b*4of{p{->-PDwTbBIC*%Mpbmf3TqEiI+C
z?WG(<A^Mv;`wiQ>?YY!QU2k$fSfndVb}A;zL3DHjvt!LlVX_>jg`#va7=<RG!_e)}
zgV3YU6VN&6Y3Nz#1?YE>G$^O(lGEYD+|~GUJ#9WgsN33ScUu%@YYc=63mv&|(E5Kp
z<yp<&{N}&>=#Hn>{ps6IcCE?CD%+i<XSjR2-1&}%bt_6Ir`Ee_YImQ!fBo8Hed!q~
zeVcaHXX`n|KK-k!&R+AE_doE+o1VMLch8y)w;!x;@%YwkxaRuf*R+*%ZfGqSx_)h4
z$L_n=dUtGDUz^>UoX+X!iZA8XcUp%);kQh__&bjU&5i%G7;+bai6YGoCj1TTd|EXo
zq#6@ajR~p7gj8cfsxcwen2>5rNHsUE#)MR3LaH$#)usul#)MQW6C$|lGnn27)B8-O
z_rdf&nBE7|`(Sz>Oz(r~eK5U`r|pC3eK5TbruV`0K7;8dTkTGVYH)?OsqukMu^wKx
zjm}rn<x0@3@2cK5Ia%kO>dsD2Y3*CNqSkJ6RlCd6lQK8o`i}J{-ktk#M|x39Rr!`p
zD>G7-7FL&LI&7sazK+I}q|}<8s=m`Lmd}-URA!c~Jh-ZT(@=X;ZFY7;Yv<s)#&vgW
zb#K|at$uw^Md|R7(T>f7?afWgGpZWBtFH0Z_0?s&OW?nST9;&7ueFWk*2DVJbJ`Kq
za96YPEW7Y5y9`!zF&KknIqe8^8afL-20aNq1w8{j2fYYgfW+6AqRdBNZX*ia$epD#
zSTl;<#%?7E@A#D8P8i)N63`RP*fneP8It~TKE6|u?3);GVl4g6uKzJH!xSc7Y@7HW
zv27##!p_4caUGKF`}87H_QliY^|=TWvFJJ3#g3fpR1Az8v+osca_b%KBF-8k11egT
zVg9Yfa1SDAx1~mRRgBk9G&S$tyT7$*vaxXH2X(8x6?R>3pSa=X8z$P@CU1S<9jjOD
z8?Ciim+je8T5Dah=B9@pdAQq>)sSC0x^}#(w8z_=Sytp)VzHKXt!o^5#~mB;I<Fnh
zUNJmYZdtwTOWA45(w3!WwalI^=xlGxu{o^E3sS7Mlp;?<-^qhp`^swuCmNUKrS!a^
zE8AVMEUjtV)~#Eo+)I+2NhwK5%bRB2nOsogtxnEKuIa7MEg9UmGQTW)DKDO^^fYO<
z!d6K9ae{RTgPB`lsM_(hTfE5b5HGS^KA?AMAb{{6nHBt?T>he5{z8J8LTxKxkU+#3
z!GF6mmH&k8X*&Jk#Kk%q<Ve+;^6CmxnUFwMg|ni{SK;$8mj5jMmbQL;LxtBvH#s6a
zm(y+KA3D-3>Q-_`r^jb~WcKf@8C8|#ML7<O9k-HFn9)??U21hLcUc{dl$5gKT-{=`
z3}h^K<)#+YR}`dJtd>(t|KCP^cjF(Yzu)4pEU!yiIa+SD+I8DfyHnRKj<oEIjO310
zxf@cl@+t})DXwI@#ktJxuq5SG7u!?pDWA7CeLrR0`~L938#iTHlGD=c*=|>VL;q6e
zQvSWoZqqIIr{rcNcTL{lS(3iQlJu#WudG2HH@rDz^HiP9X1Ca_Hr;BoTlK2EqbVf?
znah&x)}-9jG;7VS58UBubiEm7VpEqQs{)nxd&sn@eqW;)zEsOp;LpR>i4v@U@uCEI
zfL}Xr9ERFz#AmXHw-w{sig9hlxVB<kTQRP!7}r*eYb(aJ73129ac#x8wwlJZ7312f
zjH?_U*C%~>JYEE2ibSlR!&#P72Jc18*h=wIhIdD*K9ASu^;PJ9@Z}`uXPnE+sxrK*
zvo|cwE~s2y+?bu7p_kA8Rd(K883lQ{DRi;*G?m#~yx#VKqV}A!_NMy$`w-Hyl$4~$
zIh<|D-!4r}vin)q(%CRDy7Ab|v!lm%ZK%pvF+9>;YspW)e|hEPyT5URW%U|go4X1g
z(#zWZ7JC{V;I}3Z{ZVi5D8|)-;?*I*_wT(6hQZ157s*B#tmC_c&B-t%*I;ih?9GL}
zxv)1E_U6LgT-cindvjrLF6_;Py}7VAmj}r;*_+ESSFu+@Ubo@9+{n{y`Ytz5?#6ey
z@m+3wmmA;Z#&@~#U2fjUjqh^fyWIFLH@?fQ47T)A?K}_BE@G)(j9>_Mt81(tiLWq-
z%If)@7vY0XMP;crr?sqK&%zLj(RAgy?03()N8Wm{IVWfD!(TYov7^@BVs9wR@2jYt
zYH^Qbq%HGa+uwMwCo8|Uwy8khpVnF3c<h!NcaLP8oBe9?`yY1}w~g(;dt=YpjcYcq
z*=YO9tk+Vr`JSCSK6HAdGFwmTxUO<}Nt4%e@0!8m6Ria$4e2En^#%Iw^mJGA$nMi)
zul#*WspY#R8@6rVw91u{wRA~3ey;N3FRUl+yJeS+{<CSMCX>NwwuINKYnnQRO8LDW
zOjnQT_j>SqJ-CY={9X@!uLr-^gWv1H@AcsKdhmNa_`M$dUJrh+2R4dH>(SCMX)52j
zgfCk{2c0GK4_QLqZV4T9me4_G2_1Bn&_QPj9dwq^L1zgabe7OTXNe(XJA)j^a*Ld&
zSrEM6YVNn1`>p1FtGVB5?zfuzt>%8Kx!-E;x0?H{=6<WW-)i%ItGVB51)4O(JRazN
z;y1>@c&kcKTNN_B%aspu4Hz>qR4^8(bQm!10LC4_xC0n>0OJl|+yRU`fN=*f?f}Le
zz_<e#cL3uK<B1#$av_<;NpEF3uS?uJ2#f~}{&zAMg(jiH(CyHJ(4){3&^hR7=vn9m
z=y#Bcd)>emXI*RyI_y51cmub!qrDH;Tx@aaZGE<mb|V(%Pc7CAXHnyd%C6C#sl!t}
zrM=sapWQHZ*QV;S-pQNpU9&VNsbKA@mYUH6y{#L%%I&kAty@RCYI3q02Aj6tJJpom
zw$}EBg07b0evf<mu7fA;UDxxbJ8#+A=9xS>*n9Ww*KcrJ^xWRHlWp#))eV)tl_f8~
zf%)5wxB9%hN9wjd@c70RM>e?0VA$C>c-VQr+JoAu=Ws5U#4V8Yrq4YOF*X|`iwq=(
zl4(S2r6AWoW9VWq22DXnpwrM<=rQO?=qczK=sD;`=mI1Wo7~ZB#A9B-;ss}3aOMSP
zUU23GXI^mT1!rDx<^^Y7aOMSPUK3|taOPD~t>)RP<@vd*oAAoZ)i5vo%y>lrgE4m>
z){%`8Wz8V}DjA$Qy<fMM=`JT$hY-M}msx9kWORtH`;ad)a)+~qxp=W9C!4vrH7DC;
zzc%`A!0fF2#?I2B*2<j57WZh?wKqIeGvLl2+gR1xkmrclpyZcLwe|gN)fs8U6^%uu
zHQxUEH)L10m-O$f&#J6zEy*euKTNMaayAF-zv4{XK5f7LZP`g6XKYSWgkYSuG)36$
z&*Q8`c54mPcQF`)<hMtl)6iMyG3ZI?Dd-vKIp{^`0%TYn{*722$<z&UKfe}rF_80}
zrl2FxY3MBU81y9c6!Z-A9P}b|0h0SAbKR=~GdZPL-C549S@52gbJ|{HFUJY=F&EhE
zzqj$}em>m~Vx+I>bpdn)PgwPboatha(hY+&p{-X;EhN(?%q`(s$YYZd;wGisP}C=#
zF-P1<(y0q`)rGn0!d!J>uDUQ+U6`vb%vBfWsta?~g}Lg&Ty<ftx(r}D8012hTi6Sc
zBN4wO5sCdJAH<BnFfcxkRi+BKN~@bcNyP#ctEqs`8XKY3p)GgUmy|8BT1zIUCd%rD
zn)6F~rfz#=Yjt0?^PLYaNp@uppU(5Ow(eLDI-S|orRhWKH<y;i0`DVDT`TKb3Ra|8
z3RiblHm*C^J@~+#H*Rjp%P5-pOl5mUaj|84K}qw5Be%V=t8UPpU((iFWchj=;I@dJ
zvL3`vC2KAEG7dF?#d%OGY)*ycsf?{$t%hYvz$tkWof_*R+?_E&kD$?wm2zXH+*m0$
zR?3Z)a$}|3SSdGF%8iwBW2M|!DK}P1;v5vj&L9U8-y>P)VtIb<T8)(w%hbYWavWGS
z<F)_}{WTN82rvjt$xQh3%ONLmR>hXNW%jbOH)mgtB~DxDVddAvAtn{~ykM!o2IXig
zblyb{x-W;M^SWf+MP?y#D#vP+n^veCt5J^CD937)V>QaL8s%7xa;!!<R-+uNQI6Fp
z$7+;gHOgVF;mKP#dSVIv?OT)@3SSK`B}w_vPdg16b|S+Co|Rk6yVUY7oqU&ZBr5V_
z+!K(UzvI11Z5rE@TUvd7RrQ(b%*>;sswTG3zN1vJOKEGyJ*V`-_r{XhPn4P!DMf4?
zx77OTZiz#1R;}RTPi?<MzvPU*35z>;s@Z0;Ct~K-5M%m%M*<?&Jnpu}kXFJpHsi;G
za)4|6C;zDfT+JiPIsR4D)I73WIkh(6*=EAC4S2Qz&o<!M20Yt<XB+Tr1D<WbvkiE*
z0nawz*#<n@lv7*DJu}pcZU!FaT6+fLt(QY3sOG`w#9VG-4U2zrb)M@Q$LVOX5w6e1
zeJ;=JS7L#G9%u7BFsD`+@zhpqnV}O@5N8oui7uErQKYiy3Mx*Z;xwV+1S(FT;sh#A
zpyC87PN3ohDo&u{1S(FT;sh#ApyCuKA>Jhm%anz8$-=v2;a#%uE?Ib&EWAq=-X#m~
zl7)B4!n<VQU9wE?l7*$qlCPIoECI0X;hBu{G<ppET(HhdpJ!>pQRmnDP<2>yi8|y-
zu$31w9jufODvjvNSbgOHTmA`0Nl1L95npM<R~qq^Mtr3aUuncw8u67ze5DazX~b6=
z@s&n=C8tNgCkKOENL;eGj1*%!n8I{0#SmmCgHdP_It<+oJqSGtJprAAo`#-<UVwfF
z$#k$PIMY+%SeBX@n3>!@+Z=NTeWz#JsINLZvwmeu$K<HDGAq4i_$TXbU0++&b<NFh
z*}UfXy4nKY<{RHK6iXKho7W$@`Ia{K_R&W7x`Q{~($>0jw9#7a-FbRt&zV~fu4`m8
z+;isSq4CDKJ%mN8z4$Zxd+-m{+FJclIW{LnX~LLaBL>wXxWaHA7|sL3d0;pX4CjI2
zJTROGhV#I19vIF8!+Bsh4-Ds-7|v7P+K*um`s6Y7$%8(5&?gW2<UyZ2=#vM1@}N&1
z^vQ!hdC(^h`s6{MJlvAAlMrgvd5EZg1<yN(8CFl2ptD@1SZZycds2pgG$SNA=g(>c
zt-4eG!fC*`2W6M!oReq7stb&ZfN>EpE&|3yz_<t)7XjlUU|a-@i-2(vFfIbdMZmbo
zgmDotE`n9$JSDkl%np26EJvp4YI5M85XdKU1c>&xe(X!-*S+IwXHI_TaC6p2o=CQ&
zCV%Mz$;m}S$2K1R@Ex07?>d*P|Mg5sEZ`9}&J3UVKM$<#*mLjt@r{;m$-?B!#-?p`
zJqO1d`fh#lnB~t(TjmZYE!sZjv+u(GwrJPr>!j|<D70A1OiXyU7T!tzSTihCI*1|j
zChM17491`-=m>NgItx7pJqbMpJp(-ly$D@^WCohab*-R8tY`udC{Nf+gfBhgui;6r
zA!3xzwgp_jzmrlhgX<EIxD1f2*5okGbJ{ZgiNgSi1CTfXi35;00Eq*TH~@(QkT?K|
z1CTfXi35;00EyJVC|l<MBvMHuMJ@ovoHPa_Q4=^`6_cvpvxZBGBWsTM)cTMySu`Tl
zw62raPZpLn7cEO#ax=l|+imuo(!xzUch%qXcd<}oZSc<!{h{k{^LTq<Ze3@2@ybg5
zC%)R5httY4me&+C_g7ll9-Py8i(N;Yn*DZcR<_oq7Zaz${W53;>~tXw7vprU=>~qv
zz)zWppEB@M27b!GPZ{_r13zWprwsg*fuAz)QwDy@z)u<YDTB}4kvsd0Iff4_=)(&7
zu!26UpbsnP!wUMaf<COE4=d=y3i_~uKCGb65R{!k4kUuA;n`~BnYn8-DDrXb;<K)R
z&6(e+TJ`u)iC*N?EGcu41eY-q%b|y#hBcS5xFP!aS2N3E30q9W=Gh4`4Enn)-%tkP
zvzGCAtb)ijdA8j8Y3xEBnVA2iA38kp8Zz`ELrDcH8{kETUS#M+hF)aoMTTBv=tYKJ
zWavePUS#M+hF)YS2}P=f;Bb!I5pEB|b?K12oS&s!)?8N}H)K4HjK`7jI5Hkb#^cC%
z92t)z<8fp>j*Q2V@i;ObN5<o(jK`7jxRS9{mi2J=aqhmJ@p{Ix#IiA9A^e?`)Jj@E
zmQ50pS%zj>D{88;R0dMk`$;{k@)VZ0^w{zCvV!Ght2giM`J+c1diq;?53Q-saNU$v
z=t@m5u3zqX!`XL@mkz92+i2;GCBxb8IF=9Jy2J9%<^3~llW)7{?zK4$$(t;h`J7PI
z>|NQg^&5Zr^@+-nzNV%2N9I&loy9xN@gwSma;X>cC*A!1GU!14S-9W_x)@7cj3v1m
zWR(pEbCh|LOs#T&dYLaUaQtZRg)b)msjj~-+2Tn4+U(2v6I(-mxNt^qnEioKMAK6G
z^1IWennnh{<~#OYe8F~%HBO)QQ=Ts$F_l1SJvunk_kYkLkJVz>a2M7`Y`9F{sAdvJ
zZ^wq)vEg=XxE&jA$A;Un;dX4e9UE@PhTE~>c5JvE8!iP*%7)wFj+8-3vV$;H%__6G
zZ>GFDSAnV&yA^O1QzT_-^10+B<?}MGnOw`cN)1Zgd1>Qn-bsGrg?UvGk`z9Vk3<E>
zrpf<3&WdpNkyWNAhbAii`r{cN&&U2Z>({Ew`!e45^d-Na{qUu!3hRBN$9%Ql78-r!
z{g-4htoLEgk-;irP~DzSzV$mMM#3^=VOx8Hb7@X^HUyA?05T9j1_H=H02v4%0|8_p
zfD8nXfdDcPKn4QHKmZx00OT;p45hcS!jP!hxSBuPRKR9+uuzoC41qPz8tMy*r7l6A
zX=SmpJ9YU-o=nlVf5xSEpV~eC<{P$;cruEX^j^Qpx^zkJZP#sVvgc>5-gnn~KU2D_
zX7!1W++umUq;*ES?vr<~(e<{;+s?jg?5^iOx?6YVXX`cNH^1|9M>l`u-S_PA!dLgj
z-&p>i?Rl+Ad*d|A2-Ha!wVnyc&ROA8jo7j*Q(J<av4w-O*0@B=0?POxs>d*16>ba5
zz8u^~<%DsJA3u1jYb>9rEwkI#-2K^`yWPX(&Z7U%-kZS3SzUMk^UNw~w9DGp(OA1=
zZKKh?FCNK@EXkHE+hAkBHrRk|Vq*u_fh=G*gaAnlCVP_rPP5Vgwn##jmL*ABCv6Gj
zP22QM%F?85lC}h}HGaS6KF>2V(#Xcf;{D|PfBwnmFxQWyXP)QY-}#+$&pr3t>>YQV
z*cAJzCu=g2lWNNHI&a?4Vz+k;+g5jcc=ff<er~60?HB(1v1>Mc>E6BG>XrZYiP8H%
zcK_-&>&kui1xD|xQT{>axtE=ja88A#o%x)hyaryvBx59#gfGO3ddKSOokc@(S!Y<!
zGFxS#R;AJ66iOX=K9J`Fc|MTm19?7>=L2~@kmmz=K9J`Fc|MTm19?6Zc|MTm19|jP
zlBVfXNtJ&>E@GKMaMDf9WwJ(Y^qign*6f^ge|>hexP9XK_l#7p@aNept132c-Za*A
zb#ZL)OAm^V|EQK%I=*J5cXZVk-NCB7@2s9IDa%Z6EAP8;vNJW-Wq-4-=xl#YTVG2_
zfq!`IrrN6dbj_WV6_>`rKjPhg(7*eJ?KRh5Q&e|$!dau`l~;~-lvH;QWGA?>*X&8O
zKVl2;0xPwxQgK$YvtYD1*e3@u>~%Hvx*B_3jlHhMURPtUtFhPB*z0QSbv5?78hc%h
zy{^VySJOER8sxVMl<CoBsdt)Xj7Y7~lC3Shv6%OM>~%l(x*vPpZ?Oxh9;5LPqN0EM
zY22az!;Sgw$9(r=zWXuX{g`h;dGaR?8tI6*XcoR$9l0&5juO9D1|dlRk`$4TWXuhf
z4KIU1N)=*ijTVQ^a+`pTkN^k?fRF$P34o9Q2nm3Y00;?ykN^k?fRF$Pkz5gKn(D?O
z073#fLc)#!NiGnH=?yf`br?unYA%!9VYOtLk*S;t`y<Kul{s~LZ#%lYbad5lQD#Pt
zZ&_(VMn+XvS?S()@2mWv?lkNesZ7<KhS?Rxt7>AB^RvghySMZfXXRuS6m+)vtpA=>
z+uUEZ=812e8gJM%Tql`B-mLOE@AAHu^d%+51@YF8M7a)U>%7z5KAY2#o}Ap!)|r=C
zo*1{Js2q;kpncwYxAq(8$xS|;2C9@JL`KgBt8ey4+HV57jkx&VJ7oWR?R&=kZ2Ym@
zPxCZ+?0<je4*R>cLqp2uG})81TI_z7<vNM~>A47EJQHNR{9GDBCXsE(e&i1181fME
zIPx^|Jn|Cq8luL_K|_z&@iuYl+x2X~WU>L%^z}WK@iJIY)-wyNjlt+@llG(qPQ12S
zhV4n#_o`<mS4vF0oWg8Az0x}edS@h5x6&9!rjhHAgUC_jIC26xg*=D6h`frtfr#Ge
zeZWc<eNn3S#pT!OpWhd{hGn1D`^L+stgBXti??7OEquVZbu7B;g5Qn4worE#EYQQ^
zi)^rb*7|Pi?cgw7EC;Hu5oWRqW|T2&PH}9o7JXLx#c#O8^>OlnCiqSEx@cwkI#?=y
zB!NdKujLf((0kDWqAVcF0-`J+$^xP+Aj$%wEFj7PqAVcF0-`J+$_Qt&K+2;?I8%*q
zDkGdK|Bz@%DkGfA2&Xc_sf=(cBb>?zr!vB+jBqL=oXQBNGQz2haH<+%aR}pK*X+<-
z#3saM)BWv8rc(~MnEF_q#9|?_SV$}u5{rezVj;0uNGui-i-p8uA+cCUEEW=rg~Vb_
z5{rezVtH!ajW3DVE#ru2YfC$7YC1%$wPtHnzhM5eL&j){?LV|>M?FtGcZ@V;ASC0g
zEKQpZKA-zzN4+|}jB%>8{fD(*{f!G#qK~XyjV_Q^Bdq_mlva<tkC%H{`{iC+B5tVP
zRi4Egtg?<m&`!e3`dw|@Rlg%)3f%$nx;1ZFqjfa!H-8iOpT1y~_E*7nYd(WYSm4}C
z_Hx_Hf**aal=gmEqtmm=;u$f~@Hz+y-%WTa9u&ocqIggg4~pVJQ9LM$2SxFqC>|8W
zgQ9p)6c36da;=P8Je?)+Z+*%lR#k9Na9Z8<;@8&9Wi{ijbC%T>VU{jyt(_rU<_a!z
zb&qWBHY_GX{H8~Tr3YAgfTagmdVr+|SbBh^2UvQ5r3YAgfTagmdVr+_b?6f(jSNJ^
zWVl=7>64ZkK3iq71cqX@=2$H=)*6A($bDXs`@bSlZ2QaLw&3;#?RfCIdhG%2frj9A
z?ZM#v&6O3+%@vi+=4Wu1*|OD{ttI>-f5{)!2d~qP^OwPGwqE1!&K@%w+WxtBYL*<K
zrRToqIEQUW0Yy!g?}J52MG)7;rqEqyu_@=o0hshwOsGZfg>fx0)Jh4pmV{cFp;k_)
zl^<#qg<9TFt2ETA2(_w1t=dqlA=GLzT3CW+hpo|8l9`~nO47V(4q_tnuhc~Uj`lZg
zn$5SbQPbLkKh&Dqg2BdpzF@FjYub0dADp@6d_S@8+jd%89z1pW+5`Ky{Y~&mZSZfd
zy=C^p3tZg4z%}$6dlK|o;~AGsOUDepqaHL6ztDPG_(IMUN)wc)=}GJv{Gw=l40I{s
zg*1LMMK%%?r>88zlfy46b~$OcYw4a8Pr5d+#~qubWd#2%Db~H`+2CsJQHNu6c3+}9
zZWTY6EgN0ss$Io%*n(b7&Q!{@49t-Jrr$l5yGvZm&S%&f7|AHgtF_9X@;oV)MD;xK
zn@(|MyiI(4Q)5F@im$BHi+k13?5F+1XSGLztDlvJ3jUjx!9zJ5t6u-{s!{8Uv{%Ks
z6RjT{m43-3*0;vi2k+IG{b0=b!}+7(2hsfm`QliPe^2*l9+x-GV_OsaZ^y~tF>Uqi
z{dM)Zwj5jLnJv!3I{RlH*JS?d4|;7cF%L|#Fgr;`6=D!M9Zj5#c-}jnf4f6$6E#CL
z0#$T`F;Yevwtj(o#B#3$?vp5vi|*8=c=i7`S(pCgx4-?*k(rVA+28#B<B$K<*?i|`
z-q_;&4B9HSgc8p^Wly&~XYl?qizUt9Kx(whSzK1?)BJetOYq=1;GX?};p?<BNO<RR
zb^c^wzE)5;S&*+iRXA2ySXi{Wut>`;SeIYO<#mMx+Bf-?Lak_MsK{!K%`eEG%r7j=
zpVYonpcNLbD=M@W7Og+~s{(b8g2I9c?a3m3Fe$%3F3;$&B%S-L{ir=R!ZtxA`YvAC
zd!w(~=r&4Okv|#_N2YIL;hcOH@F_t$*$XTduaeJ3K4o7|1D_Ikm!B)E(*htGcu746
zE4&xDU04Zq6kjNbKQI+XjF5!$C6r&or<gAvpOO|OF}L&Ci1S@<_JAIgDWx&RqkY(P
zdaNtV*6d?uD}3#%v%eaeeZ`tJWX-d_JkML2{rbEM&&|GM%^9-h%)W$vlwmm5*{XQk
zI#UNDHyUK%(unRe%TO;bJ1~~;a!ce4NT!@#W|-vjOZKckl|4+vWnJDf4_9RujrBxl
zO~SX+O416J=f?&=5O=72by;p#PMq~!#Wn8WU#AtNJ(*OPWc3Em?wI)GT8G<STf5{-
z+Nv)(;_b`6e{}VIYchQ-msx7h{o48qo1b}kXuo5t@MWv+738Q5Sd1diwpdGP<a0F|
z$(EAWU1sKb%icy}q@h%A{;h)ZYA#Nu_=>vp>cQHIvEGV|n!&odfyy-B<nE5*vC{m;
zj12aJ_EnS(H5F~#P&-(Y(XsW`9ygnLGn3Mnq$mHXa@bdpRn_55FRyMWEc7=v=K0pO
z7r9-In5UL@*XE@yZ7eJu_vbe?H5YbXHBe%A#@N}!!(18f$P(jlq?4`cwUm>=U@(=j
z+!zjS6-uWSMl54n<pT5`BDbhQPO0)6sd_(`;w^~+h(;w6UY4y8naZKaHd=a)V-Y{|
zhJIFVwD6}COl+Ps<1>_WEl^=YkECA1>$Wo2pB!=PDb^LeN8Q1?_+vf6{BxEs#s$~M
zKWIJkp6$*R_q7jp9X@l1_SkxxR<C_+%C3&s&>jv>OU%mrw0|*o_Uiq=+I0Qa+}Q%F
zPn-R*lm9C2Z9Dg}{jae-W0q?ydo8zFCr(;!NAYD9_jcYd1B_?rajbRBw$_=mt#!<{
z)-l^!$82jIv#oW^w$?G*TE}c_9kZ=<%(m7s+gitLYaO$#b!xV?jynz!50xp<5Iv^n
z#vj(_gop9w597@r#+yHkH-8v!{xIJBVZ8anc=Lzx<`3h|AI6(Mj5mMS^yUxa%^y~t
ztC?YXnC}tl@j+i*q3;^v>M&P_<^5={qP>dW*lhg93}382*9?xc`GoRU?+w{SV>5Ty
zE*nP#gfB$RAETB|3?B!y>7?4OdO~QjL{HBtfow{oryZnlmN22>A6N8dlA}{Xj!p?V
zIwj=jlz{LOV!9>Zyo4N`5^{7($k8bwN2kQ%W~m>Zw#dz;6Z94bDFaFlbvCYV3tbo5
z->pv}b~A<8%@krcQ;6O4#BQb#yO~1lW(u*JDa3B35WAT|>}CqFn<>O@a|*GWPTQ>p
z;%2_(7USLmcmh0nUbkd;*Alx`iQckz*W6to>v~xHBr)@5-nZJ>Cfg0nm3mtjKVvIG
zqBTj&6lH0)r6oGjmk`zSJJ?92|HJ;BgfDguSgp2o@9h{FwZ^W0U&o3y^;7!>-rtv;
z8f$B9&TFd7w_Ew2cCS^_N;+4Kj^vGRPAM4Z>&)79mCJFB#OBJj$GBRXD+ZgEy1H!n
z{Uz`38yzeh9bes5(p2f)F+1bk(P#eqU3q&}$ECZiZ9Tosj*i~`*0xPUzO<5}&Q-P9
zam_V}x#iieOm{+JU!pV7ncvykP?GLz%qY!G-Z+)wT@t)8v&fwjuf3VSY)NxXX=`8J
z|JV|<;!28w-_<e`a|_Fwme-co`h339h<~EHHulrK9P=*@4^!k0vMBy_1~*0OMfWaJ
z)LEimeIev$3j=0HaAX+Q;s_Cez&v)Lib9RzbcnMd^DaRaz?N0P5|C8_vPwW!2>>Yp
zStTH=1Z0(ftP+q_0<ua#Rtd-|F_BdQvP2`qwUiww`r-gksnx=JRvNo(ws~1;LZz;x
ztG;-6xNZA~9(v-+&7Zk-EJ<_O<AMe7s5?0Ae$aaMaId}L!(V*r$jAqFPj`FD)*KvP
z`=Py)ZTXesht3|*zA<HYc$VMx7d!X-!?!=Zx5t0=ho<bya))$+g;;|dH-Gx(o;Tm@
z*>nF_zkTJkU)a|ZIPmGOJi2E4L;HKISvt)!R(<DQc9g@jJ!tU`D_ymXjk(fgYcW;w
zDJ37|GnMNSDp6kKHaKw`oVZQ>e?R}d1388~gglNsjXaOMguI3rv50L9#5Oui_Q&K|
zwkd}3F&K5iFmZfU4q`;k0&sZ%E)T%v0k}K>mj~eT09+n`%L8zE04@)}<pH={h2td)
z`Qmq%8(GL}dBnB)I)sBpy8MGjyvlfGJ>be_a>H;NlaMgC8s1L$LKuT{ZN1{wRAM}`
zZl!xfRXVp;f#E9s&0A;$koCw8<N$I6c>s9?If*=rynwudypBi)l`nK(fi^qr5`b?n
z@RfQCy}-8@`1S(dUW@aJ-Xw6}3+{WteJ{B01^2z+z8Bn6CPWXu^n&kRo{F#JmaAaT
ztBfz1hj_1<!o>Qiu`eqTeJIo*DcOt14sC6|5|FBCZDv=EY}(4O{WhFr*|2WFmtyy<
znpjs}+E$icy<+PPdwkC1#JJAEg666mtNpXKfot|P4Q<S{7qxt7ux{-@)6%q5Hgd@y
zdQ+21dxJ4WeVt89;$k{(y{5a#))&sa%vsh`=IO34$SQBjZy#^=WF*HGws#NLG`6P{
zEh~s|CAM{4Jy_D-kXgR$?9UcT<4h~4Zb+{huS`g<81AiXmH2Y*xnIOS%p6wE(tSo&
zRb?Ko^rQqmDM3$40DTF*LkW6Pf}WJ1Cne}f33^h3o|K>`C4kT%76*-VL_nC$-AX{q
zJn)6RMk4?hz7Vd*V}LJm(X^2;fv9sD&W;X3$xg_``N<AlQCVs#fze24><+P+%Ik1i
zWynIAjhZK|%=Hi2Pu!9Di}qk&@RMJ02S?)n!uDt6eC%_7v$~@^(`}1LXMFPw?ZNvp
zWq~uCv^ctIi9um10p!WxAD+0Wzc?`>eR1|W>n##+w^}+3?%Hg*!P+k8-b>C_ukc72
zJYrM?YNauZNEwLhkb}rk<T!EyIfXojyokJtyn)CXOUh}4JKjk5NK!{G?VY+uxRX)c
z$*AsRRCh9}I~moTjOtECbtj{`lTqEtsP1G`cQUFwP4?T#sP0ti)WjW|<c{23&nx5E
zX-gr%A$~T5|91@&hyI9>?-5Ja6Oo%8PHHs<+F0uh&likzZgoM@T^B2BTT&HLRLyEB
zXQQ|DV@)e{I;#Xul_s54LT8oGStWE<37u6!XO+-dC3IE^t}CIlO6aT-I;(`vDixhI
zh3+d>dkvi;3pQJHi@gQr+5&TJfw{K8Tw7qSEil&>C~pgtw*|`E0_AOi^0q*ETl67t
z(#SwWv92-hj~|GO7TOggM0U}xpxSe)J9?6>*(gq5gu{0{bs#b`v%SS}aZaB&dpX|B
z1g9qXn;SP*-hN+6qn8RDXTK2P-Vs*Pw;HK@&Aw)Pw2PONTb3P@G1tXY&fSiCwzTBC
zZDvyEXa4#A^>t~^f~E7EIjg1c+&{<M0JmiV#@o-!K~dRZ;mvXeG{ZAjVH%mJN&wYv
zqzfd5TIr!yMyQo*w6Hm_lI9KV2Ucvvp5QY4DX;UC_6_$Z&;H?xO~IuhC+fL-+}a=9
zPkh;Koj!i%liF9N?Ls$anyguoEORzqv;9vI#6pZu=N0?E;uB3<c3C&g5Y*6PECYr|
zWJC4k@ss2_`l%SF9L8ZPt*`l&!#L&qc{z+z4&#)=IOQ--IgC>d<CMcV<uFb;j8hKd
zlnXjtu*mhW$n~(u^%k2L;Kyk^jWEk{;n!Rb?_AH98$aDfV?UyP`aF%7kk=6Pw+<TV
zh(O)XlU}bpj_Xk&eb1bF>Pen@(tPSko_dm}p5&<~dFn}?dXlG}<f$il>Pen@lBb^J
zsV8~rNu{RKMlZ}*t~FYE2=2!7yGuqXvaq`p28V$b<Md<YE+xqty?Xdw9v*ioiP`7*
zJtXD1#PSP<KP9Efbf1ZSij8ud>^M&T&^N^K4Wq(f&6ZIZW>lZwPSMzo+=ASR+>bnr
zJb^re{1kZ^`2(UnN+*pBMEZU@bn^|TDS!#DUu#?e&IN2AHs%bG4iv?0^u6s1%sv(6
zNP!~RX-rXr(lUx0Fkz)Qk*2#+_WP>Ji#n(G933qkY%Y!UtR7z*;YT?Vobib<)`e%A
zyRPyk#l$3+c2-xe9%`-3>|Z(SSDutcc-ql%=$dZ7t&be9p%31E(|B!mO)tJwU8FCS
zQ=hY}vn-3*<-*icdni!4f}F6HqT=>7o35!R9c*@ucvQ)GDLMWe)2XtBct_6Ml#+%9
zFrwoBQRiew=D4Y)n?y02iF$}EpRSjAU_Rq)XE<cMoqReOmU#F`PbW(?TKey0;q~T(
zepVQ2c|yM>cai)EuLNC%p;!TmVkwW#Qd(wOlR;I%-P+y3RlzSUL|D7{?OP1S(pKBQ
z`3L1C9c`a|c`kF!9<|=0i0kY+P3wkEW&YiRU-Sj|YaB~=vvopB2<I!t3aELw81GT_
z?=-nC3?{4AdtjG6DD@t^8mT$F2R_;ZAMJsU_CQ5@prSo^HGANhJ@CvP-K08bq$7g$
zHtx4asp=lOq>C=;s#W(6aPI*34sh=P_YQFH0QU}X?*R7>aPI*34sh=P_ck)CWbT=c
zsE|_}51pfwid%9FD{M82c8$VTqp;N|Y&8m7jRKZY*lHBE8ilP!VXINtYE-e+xbenP
zv08t3ovrqT*lJMVG8o}yMa}lYfHFWC_OfQ!V-#a_ZKA<igLFl$?iJNSO0_!Ow$KP5
z>yaJE0ptks0P+ZO5_uMR0eJ;^9g#_18&KBSQ2e<SU~@clMYhUM=>E|J>@|UZGy!o<
zKwJ|L*962h0dY-0ToVx21jID~aZNy66Z&8}X=ETW<BQ>L>rd+&Xs+T@{=JLOU4n8U
zE~l$8-I(`96h;slx-ffrRJ5#&>7ccll?b6S$9xJqR#hGo^P`_-uYdQ)H@+<v)4p%D
z_OCqAxOsJZQn1TzgVTcUg{aIs=xrSR(Dhw!i_DfM<|hh;ZD?3`Q%6pHrVv|PG@ap7
zqzAn*1Nc#SmLki2=Vdcv>K2~MIR%Y)OXpt!FcKb>sVrg{P&^Ymf1*=aLa3D%YUPGn
z1xCxDEfx1qo9A6MYGn?u=5gMmysJDtICXAgw2$@qL~HBu*(7`L>)Ka@t=@P}h5GN&
z{(FwA)oXjIXxHpNh@aIEEVk#uQ`8>TD#^lRKGdSm-&)Z07F|(VX$&LN$aTm;<S23+
zIf0x)o<m+lUPazORE``osQ{4GcOjm%4C-^YL6~R|CK`l^24SK>m}n3t8ia`kVWL5p
zXb>hEgoy@WqCs6T95m7qVL6$Z55jW#Nud%Go8c8oj8c^nog5CaNfde1%YfEL(2HTf
z)JlFasg5#!QaPd6_=Y8xdgB}PmMCB3ev>Anj+!j>g`(Hg%#r;mnMx6H5LD?BiL(4C
zDK8^YvP}KA-}CX+`R(09Wr?{7p5^RF$&3jFq>~c!2Jdxf$se?LY#U~S%ItT%*Ywm^
zuOF&vvh`Y1atac&>eyzo;YWY_+<H%UQ(4TH?ADzAeH(8I%|IOX7;Qyy*KD&kb=PgT
ztyog+p6#tK{Y`Rt^GIVkwPr27=l<F0b7ZrwNr@Kic{x#A&!cjZ5-xpUQKg=h^=M+u
zni#Vt#;l1kYhuir7_%nEtcfveV$7NtvnIx@i7_*3PC00#BSL1fCKloMc7v~O6JOon
zs~dcEgRgGz)eXM7!B;o<>IPrk;Hw*ab%U>N@YM|@Obs@o&tZj)TEmOnWmv3}b1~#x
z3^^A=&c%>(G2~nfITu6D#gKC`<Xj9n7emg)kh2uqz$bOm$Ux+MWSw`hO2LUyNiepw
z6ms7_-B|TutormmYM~K8)+0NR1IQ8N0pt<nB=Ris0`dy-I-+WGNj9|U;f7XEs2i6N
zQIJb*)23RWQOv18bNXsVclGFj@tu#pXQ*w*hfjQK>(&!JYj0~`J$^RVjE5f>Uwii+
z;^7q&x7y;1S}L=fs|v<_)y?)hd$+IY%yj92@xjB7-f;5^-~QCz?xEh^q19&s3kAe&
zn^UV>hN^2@Dm_i_RX)@J>yMjleJrf|Edzqj2IhN$O9$Jqb$o_ua+HE5sV=Mhl2XuA
z3YtnmQz>XF1x=-(sT4Gof~Hc?R0^6(K~pJcQZ;JD|7rl`4WPUMlsAC#22kDr${Rp=
z11N6*<qe>`0hBj@a;b3vDjYP@5kZA;kK{}=>nwWNbpuS48#Up=6E<UCM)*SH46aZ|
zc_An-1m%UGybzQZg7QL8UI@wyL3tr4F9hX<pu7;27n&$91m%V5eKL5T#fy(O<NRm9
zr6(=j^ij9CF?zOsWKAcjYIs3(+BcW<O#7^Tx6QmeR19G4&<$nXTbA|o&sHx`KES#p
zdzoiRjW?rhX_43Z;<Ayp>f{YieC*0_5rCSqimH~`)P=&$+Up60<qd_!<ylM0uO`=`
z@Z3?`Ie4>+slDNTmWfFzle7V`LwX*F#1bhyDK+*aMMUaHg3cBivR7d}vI9AQ96=sH
z9zjkb&mu1%uOP1@qQ`h?DuJR&`F46mV|~M;7hg}W&8_wiIaTF!mOszk@{?;;-uuBL
z{o`L8U48e>YZBvQD@Ocz-CgZjiN%H4uDZh3TMzDU>b$luGbLqXd;Zv!*VOGj+<N$f
z9~<pD+}rEVt!^ps4}N@f^h57`cW2{<zOuL_1!?gml{M){+NWCcN>|)8JaTtW;hO0y
zt9RT~)Ky=Qo+Wc1@@3Bbt@S(TZ7ZIZ(LY}4AFr5Pnd(db5b{&TvQ|^Oon-S486;k^
z_FTLW2%y-w6qDmW1-zcW+4}j7pIx=)*h=f<@`BFBl9;5L+OoJfhdrmrn~-XMPkmQm
z`zOc!WA!QS_|lY?q0!Qf+bc$v2g)k0Xwfori@X&>9odalMXto^_CRHIt+z76WzGNS
zopsFxO(Qi;?b#i@eT9J)d8JwIIKuMs9@#;!<5fp7iqI(Ufol|*hZwduhIvu$LnbsX
zZXdwTV0fI?c#0Azr%vCcL^<%(GROaRX|YK$wcib%3I6qGcK)q<_B-xpw3{AwTNB*h
z{GYC4pLpQ*tGZeo#dSCB+FbHP@RvV6x-{4zo}9B;{(I(UDcu|P-~F&Q`j~poT=Mt+
z%QnPhs+8w+@SKubub$QLebl3+@XM*{(bBvc8yRgGERsuwQAtTEU>%*VcDlZFua<K_
z%YP!y{hmXIM{7K`q9q@R&B;u1d6sVd{x`qER;H(#E6)B}(;S;O9iO~yQ%6d#J*%Q~
z?G1yc-g{Vfa%kdbJ3i!a!P^0I{G)=CQ85F9z0{Lx*jeHCRM=vP-kBZ>y^%B(?n;-x
zvB5#H;j&Vfb)EL1Ep;2}(t|fYcG^Ar6n(jS#;xrvf8-+@wfN0_>pMzQo_W9ay-x?<
z{m9whn*I3IZ(jY?yy7LX*8D%=nJehS2W_%3S)$=dX8%P#l{u|U=BcFGC__w2C*|)w
zE<&Huqw-9JnyvQ-8S!K5#<cO|;8#BWr&=B-AXdMBXIjcL*2$HzJA$8EKKp+AQ-0r5
zUvmwr{>r1j{)~A^4vg~F7&Cq&oR=ikNMyomW)G$Lc_<@si0G^>b7^CP&Hkkm?%ChF
zzxB0cPwxHi;7^Ti0&?2)5F`Kn*LqZTkoC=H9(eOjvx|a1j`@q=E9w~=$wPhBCS^`S
zewXnCVFP4Ll)@JbN1HJ<9@_BC)LMuYdbF_Sm5VFxq&qP)WCEtqi;DkMjLq(1O+Z!m
z3oj0k=xHQ+a0-O>f|gfx^LNKP>Jr^)ImvN$Eha8QBL458wqMF-drX!mBQQB#_J{kl
zJnO$Sm!I4+-P`J2+c<Vpfc*;A;(BWG=@I;jQSHxCN>Z|mGs^v*Ge5IG#cP8Lj_PnM
z1Irn#`WP=^M7P5FZ>%(jFGP+_9Fr{lPz61=OQrvXv8#Q?7z*pXZmn-FV%3PqChSP4
z@=TnsX}cDFt+L#0K2y{jr&I{HG-8fp_z(J6(DiIp5z7>dWs)5y$}+{Gu(4RCSS(X4
zmMIp?6pLkw#WKb6RT8?5#WKZWnPRa_vTsFp99k@~x<2Ujzoi~1g;-Q2aj9DD>$0V)
zozq=5>wncXyRUMkW)&`JTw8j?o|2vsdsj+>C#9@$X>O9uomtUU!>;MVg5IuHTi??3
z`|VlTX|<KJr&2n5TN6&_R3&&yMmO#3wI<YU{hF5e{pRvJ@~94}kJWPg#mCX3O3VAq
zelgBA2oFsp0>xF+n4-E)>&Kd;=}uD`PE#6AQyNZF8ctIhPE#6AQyNZF8ctIhPE#6A
zQyNZF8cvh3rOinr0}&@MLvmW1RPwc|wOwG9oJfqAewvA%+hqI1?2cW&ciH~Q`>wxx
z{QkYe@hS0*QyobKNmqSqU31r+cYkDf?LC`IGt%08kNn^l_M2lqtrff{Y2Cs5K600T
z`M&9vSgY;o8wytK4iq<Rz2}O_Yd3xI{@e9_=%sE<fPB?rvi1zjM&^}y_<;mqC1;+Z
zPm+8S&nw6C%JIB%Jg*$jE64N7@w{?8uN==S$MeeZymCCRZ0weC(#SyMm8GI^fxNcV
z7MH-dysUCra8H_>JS4qZe?N5FjhhB5UGcV}zQ&IIe(&gGS2S&C&rD3)e)ox~**CJR
zzsRzFKecP+<l0sF4dZQ|?xD16HWqbX(XsZfeOFaDcI@B<t>>7SI`W;51Mf=92gORr
zu0+rrN8_^h^`-J2)uGrycxR2#k%l8<tcvJy#&SFawR<u&fhsd7Oxe_VxtydO**4Z~
z8mi99PpK_RY`MO&u6M=mzQm+&ni-v;{3Gp7Ninj&S=cr-)sa`6n3`QvT2tA+`<m*w
z*fZV2(q<N?_Dhvb#O_dHT<z$9<hj;rndTlTM)^`I1D<F1l8GiG-WAp=!~G2tePm?{
z<%mS)KV-o9V&03?z)8HeOc~S}d?&r7ZwXFAH#LSMpHFe7Yjm*I0M;77S_4>X0Ba3k
ztpThxfVBp&)&SNTz*+-XYXEDFIjN}utTliYkg5XeW_p+yN%1XAAA^z^Y2Mh#+;i9c
z+s^zi_p@7rJ&_3&_AT{wX|vB9&^AuseZ&O6@Luc417}};Fn0FuwN2(;C9OXAx8ZRT
zHV^*tA7|hERPfe^XMglN)^zTlz3%K9W2chnuL>N-_+8U#49j5o+vs;Gwy8QYs_!q@
z)g>rNWLKMAPZ=&tIh-wBuD9lQ`3%aX|KuXO3ol4E6uR!a#ICaTSbZt8KeDz3@5%k{
z#q^f#fq?dW@E>BeV*1KOUU#!AOZ8P7{?i@w)l&Lu86vwB-bSBQki{i^)?w*9Z{IBq
z^_{fl_uWPIn9OU4zc;FMhfdAcES{w6BbVBLe-~F!(_K}yyt6sCGIL<<7T?u3X;Z3C
zFQzx`|61lRPEIcNm$h!}^&Z^eb~=N9A)Co<GLwnvbnZ6#_VD8Mtf}~sXnbdS)OGw4
zdsBOJf!@5Re(a3uM~Sb;1T$k=;Nw=n^lM4CkR(`TtJ1Mm>AL6DN@EzAMy^8+B1e(q
z$O+^W@*MIa@+$HMBJp)e8}pw=LKU%$YDr;cj$(%kS~Ry20InlsD=N^&*vqGQ!W9bg
zo=~gIXt5t%akIYFv>C2$5jTKj5SOGMO8&L(2}l_R$;<X|cEts$S95)I+hauq%a)6Y
ztSd@vHB4km%GrOrBoc;tGc$_Et{p5YPg#=RSnaDDxcyxXiScj6$M6d2p)nm!iI#b>
zNmU_Ud7C_Z>4=|!xtV^bP8TMY*2VFPwT$kCh#$B_=-WOj3~Y5>EDzh)DiYS2SnL*I
zlbBZL9jebb%~EUAYkT>j;SL~D2~sO*d*qXUFBNmX2wsWOrbXCOEfvq|fNywT^`+Tb
z^We*c##-V9x~-Mge0!n0H;wd*xv%<C9hAt8)vk|S;=o&93pp#-hFTZlw%C3@e}lD6
z@-bpsLKyf?$o~}Yyb{K%G#RfF#;b(!Dq*}z7_Sn>tAz0?VZ2HhuM)<qgz+k2yh<2P
z5)#kre@3xfq`Ud{$K~SmZH}Y((M#-m+wj}!apfmspY5NAql#F1=(hB0w@FH|>^4;z
zaoP1dX9(Xms@hcgX`fUPkWswsI*~JkQq23x9CT1-TRo<)W(1MK7R*TX2wyN_9cl{J
zPJqVTRANPUWv7(vXw4#-D4U<@`==z-w2Z5goWW@;68DgFJfl)#3ylD>9@&8$K#m{}
zAdes?k!O(?kXMk`5wX5{&hQNDY!;P<s~?m?d`FVP^wUseGm^?Lv!?k<t0Jq>@^2L;
z5f3m;YG+K(e#8B&rk!%{vHM52Y*?}6nmfk4wIf$9({9{8c;|D!`0z*HcWq2Ua`{lx
zl}9&Jw_d-Ya&_t6V}twF)@2G|>t*|FcDvo??V4)rx?yc=oW1186*qkOK)3eeUGEN#
zc-t~Fy_xYndmgYpvXvanU|RX={nl@o^o@zB3f6LPRJLVU`x@1%8IVkU4J#A9%{28k
z6TQtuZ!^)`O!PJrz0E{#Gtt{j^fnW{%|vfA(c4V)mVh{Y701|&(EDa4K)25Q-K@8D
zv)<OtdRsT^ZQa<}Zr0nnS#RrRy{((|wr<wjx>;}QX1z_8eHlInjdVof4wCpaa2g5u
zK-CiZs*c#gX+TOv9o2lmSUL+|D3CuXh}ghXBo~VGgtY{t8bLMR#0d(5o)*w!<VLj6
z2q5c`9moOX2=V~(2yzm67I^`A1$iBj9x0ON)+e+BOlSv~&<-%69biH`z=U>y3GDzA
z+5slC159WKn9vR|p&ejCJD~T1lST%jCbSZ|U%=s#0Ke1g46m*ciL!ZRoh9O=6#M>>
zk-okX?>vXArN*ae!+`@&y?>~C@29@?{O-OZ2R5bG*4P@S|77L1uimqJWqIS)yEb&+
z{_dM<w4}`)O`e?WdCpc_ZIu>3_?}01?ft22kjgH~vjt!6yLnyxz`Gv&^5c_RKfk}X
zJaBazbB#=k#qk<kma3vUFH0dLsoJC%rvUsFnD{FIe+A&L0Q?nzzXI@A0R9TVUjg_l
z0DlGGuK@fNfWHDAfAqGB>PSIZg@LHZ;GD#L;F=AnBtq!bhuq7Mvtw5elzJI*FGKES
z$h{1?mm&8u<X(o{%aD5+axX*fWyrk@xmP_zDR(S|m@3G6FH`QEs?u4aZ(C!rs6tc4
zCvlmV`cw6@vYalNR2M&~X<u?%*MI7zj|FO{-o4`Y!N+D#Xh$8k&f%xD(&x5!-1h8U
z-r-X1r(r5c>e&1F>#jQa&__DH^Uc)4gc{E+|DY}X^3@-`y1{PO9yhe!hR%DPaSmCb
zT*iqdzn^<ziMc~U<H0qZ3l^a!qC^UX51RN)=gv}XR@x-!i9c8iC)C0TwQxc$oKOoV
z)WQk1a6&DdPzxv2!U?r-LM@yiIeCf`YT*RQ>?2^rUGuqXEqAS=T}4}XB78bY)aW;e
z!gJC`XsIF$2PwCvZ(U5`9ukz2`wKM6e%|Y1l*7kZtE}%>E@UHM#f7q$fffBQY<}tj
zFyRxixgg>7xyNGLAqUe{mgtwffK2qHZbAc}P*666(E?$#Ko~6$Mhk?|0%5d37%dP+
z3xv@EVYEOPEf7YFCH{(D8*$zii>7C>v@qa8U@W*aQWrfEg3QjmX|n1v7lt+xYSSW0
z{CxX|*F_=H{p67+Uz-ogz1nw!wfUx(V|_{c%c8mnaMl%BR|gB`BQ%&EIP<UJpqLE`
zwmACX2iXHri293(*WHqZBRr7~V1}_EFV!gI)LAJjlg7$Z4ose<9P<LBrRJ?hB#>#U
ztkoEiL9x*?tFoQlP!|_`_`TM^gLTT)6O(O^t*=X;eeQrZz0Mk*L)pgl7@x%d!f`)a
zQ^c%^oW$82hvX#I6CY3+E-k`(i<FBZa7pHc<ujxcr_qa$t&EBng!^rQfOoqQ7D%J(
zBrG7C$i@5ea)0SqC#kS8bfts}%&<UYmtH6&5Yg9>4z+DIqQCF=6wR|yyZh2o&;Cev
zoFYacc#Vm-@E~Mm&NEK$YDh|m9GN%ELx9uH{Sv&Tvc^zn`Pw_N!Vo^=%J62x?yZr@
z9KKK~)I<nCawn41O0OKcru)6J9V^dZB$-o}N)4oimmy3f>+9$e>(&u&Jr%teQCz5<
z3qhLLb~NG_Sd++D5*gVxQ4d5CgXxY=bXWFfwpxBARWT$NUZFf0woiublVSU0*ghGy
zPloN2Vf$p*J{h)8hV7GK`()T&4k}P=pA09<aR(rq_pUuHsFwY=`IcnR2R}5x4-$G%
z{BUVFe=B@9MBrP#Gu9$kW?)pk^)@gc;+NMVdi$dBz98$oCE({!5$kHdB)Q{%!A0rJ
z@&5M=7D9HRt5Krh1^=8xqzuM><PPK*@(}Vk@-*^1@)GhIVvJG-H<QFC#zT#Rkt!1g
zchvq#BbyULJR^R$;+F(QI0ckT#^qvVwwYrT%FQu|eh&FOElDL$9A=6B+d9YCeo|kT
zH2dZOZFtM<>|Bodxva;9dHzg&h)pC8oCKe^(1CPZgMNBLjum~Y9+}?(lITGu0#G~O
z!wZURzrVmk?-BE)bK<<`HNZfm_uRh_{2zn+mRdggPH<moXm$0ixi361Gr8}){MN{(
zA9FCZ1v%{}?m5T*Ewrwhv4r%hhs==_?xHWAV13EWqIoI%@L4iv<Ye^ZluI>&MvhPz
z)8UPmQV>or<*?LJ0+f09h|C<4$QM`uvbp9wrS?z3Cl^?f*rgVDI7lM=wAO;C6$n|$
zv0<z&wpYNO8x*F6-a!hzz4i0Uu2B83j8vmF_Z<XrQv1`EHt(r_AV|Ae{xjzxwGTzO
zKj;M+W47xYKUB{)zrx+ZJ(|Fn%<st(Nx`zsdxBtDbRYegjZBu*V5;ppcus1Gepfb~
zN!GiXX<l~KSm8OdUkz#tzl9M_R&$JWed?cXSq>#kA={B#5TS_sk%y5dkY|veA}=F<
zKoqe$X$Z9{2cBdD^Nfeg2nW3;cin9TTEcy9?VrH?U;f@?t6-|<#y8$?ze_;=<`2yf
zu5gr_etF&)i%j(<60(-w7UgrPUQdhoHd(GLo%=1zt)EYs-8A<roRhMgXx#r(mv{dp
zHKgaczk}!B<h)jm>kW%Lu6n5&z4jw+hF)Y<pGm|>na6Oi%*h)ln%g_tpDsKI&JRb}
z3Y#S(m}<`o>8sD+9Hp<(*qRZF3aO~xn)^Vk2Z@H(&wUoFTJ2E^I=4GrsgW8g_TbC(
z>rrJ7{$#Q3fy|<F@ZIEu8Ogj+wjrM$)*W4a$6Ge0-y&;@3p=(DKQR(r3AEoW<jkHD
z1qgoG?11wT|C>Jye$vzp!E3R_;`%;#mFSbKek-<&O7@FdBnro;jX#NsKZdJ=NQ_;4
zVc8FAj$(K`A#Njg(Bmc7(X?)!G}+;5oL9uYFu3nMrEl7U|8ciFIO%>wTYto@HT~N9
zv{vK3?=SvL(mwz4&mCv(cg&=`Ib<I=8*iGoGq2g>Lgp?;yIE{S-E5BiEHU6Zq84kl
z-_9^C)vKouvwKsXvl2Jn@Cq;c963P~dq|ZxEh)<mCgquYUnN%*AJ^0O^{^aHXe*6j
zWE!~+IfxuZjw2_KQ^<43i^!|U8wgw}GwDve*G|0GPQ2Gnyw^^=*G|0GPQ2Gnyw^^=
zS7zVHOUP@8;k|aE=$(AMzFrwVu(U*GWF-+1W+S;W98eBd#FEXSD^<_M0BV^nmw@xd
zTZNGQ8SEC4EWSRBNgu|f4`b4YG3mpY^kGc;FeZH%lRk_|AI78)W73B)kqtt0vy+A#
zJ0!-WL=^&>yJX+3IV0o8>YOEKnqJ<~JZ{@Q$8EONZJNJ!Z>_3|I^=Ys?X@`-wZ`>b
zMYA6@Su)+*KY#Jw>I!crGAnPjmRnz&TU<-+FM9LQ5UbiOdBJqM_&|c|mD=lJTsw@E
zhX`Cdz>5RCIKYboyg0y%9F^e!FH#V~0bU&7#Q|O%;6)AupdaP`>4@x4{9{D%jM5*`
ztr^P-L(6nzt0O$5^r2$7OGEb`KdR+zS=3U~rnil6@pG;Jd0Dtt>vWd~Y1>nJ;NEU2
z;=JnLFfWm_d50_`+6g&}QxA%+fDs(05j|p`1&3yt9GV3NvfxmT^FR(FN0H;m2}F*a
zeGYjMc@=pBk+mv`GRgc~to34LZOA^UEaPZsiL0-aS)tTnmtzVCOe{uO+puw!?W#SB
zSfxmv5UZ42<4`KeQqLzWpU>h;K8r8;`cXHrG_nz_i7epdLj?IO;p7vMSHIzA9Vef4
zoO~kk`K;sQ^E~++d4pDP-wK^#E1=j4D7FHMt$<=Hpx6p1wgQT+fMP44*a|4N0*bAG
zVk=CFt$<=H6vY~6beJo|c5ObBE;uW++M?+5p(nJb7vj(0Bj=qjUi<;k_B9JmCY2w*
zC+H@g_qb)1<y!4yGaLn?CyAL%+D4MC;UQc$lj^5ct_FKj8&=Xhr8cbc4Qjx(Wb-QD
zpauxkfa@A?T?4Lbz;z9{t^wCI;JOA}*MRF9a9sngB_~+&5RChYm#_gn+5qcsfb}=P
z`Ws;V4Y2+OSbqbozX8_Y0PAmn^*6x!8%);U0PAnyLG)+c9*S;+OHvrbnj>yQjvmO>
zX>$gvtyjzz72B+1Y%>_!48}HtvCUv?GZ@<p#x{eo&0uUZ7~2fSHiNOvU~IFAF)3EN
zS;yD{W?ZcV>!-%ZL0N44vKrfc@txICJ1Se9YRytalYMvdfoZcx(_dm@R+b6OE1Uc^
z)lu>Job2h*b$X4>O%84MLV&dw_l|DuFDy-7l3!odxUBC__SDD4SwnWdFf}GOC$E2^
zHP@4vl2y61s;p(_=E~$Go5yRG-Yn8=<qLQKL@a8~z03XvKD-B>q!OxjimHr|OP$V*
zbqq(HiJ>|$R0oFYz)&3+sslrHV5klZ)q$ZpFjNPI>cCJP7^<V+8QIf_+>rrvf>SAw
zq*q2ZNW+ib4<VDtHe^3?2XYK~2zeZN8hIXh33&}M{D}&XC8PoS@+~P$i>eu7*(@b>
z5A>G4uU^$+l~Q@ig69j+IGjDSm>J#xFLhYE6<bQ!oXzl(&QJ_7%AR&qsf9)WS&!^M
z4j@O62ardQlgP8k3&<<T>xigQHIXhkFkK!@Z&C7}Z@|$N*VGTD{b1S;ru|^r52pQK
z+7G7vVA>C+{b1S;ru|@AGHjG<>gP2jPe-Cos^)^70t;oXGU}+Co7tNkDw!c8lZ}j;
z)M8@cvdb>hB70lCe|@)C-^T90s(Q3Mu;;e69rv)6y?#?=bMPPaVy^WK){P}sYOcDv
z*@su|Gn~->R*?pWe=>ja#`g~E``A-bKIFNr?dQkzz3gczTlebqT=#yx!@jK06YSmn
z)s8bi=~3RN%|_J2Vex>!e|K?eg{6d^>ER^jzdLD}WT1RH0(~IRXClxC0(~IR2LgQ{
z&<6s2AkYT_eIU>W0(~IR2LgQ{P>#pbizvwvJwCcy*3~EZH0RW6%Y+}g8$u?LZODG)
z4&)f}5b`+kH1a(167m{iAg~4m3dx!)^|I!dV~JA(-5hH5@+5LiUu9RPJByO7L}YPa
zVbUX*^h97Xa)Esf&nJ^h{aiEsoPbgto26jW*x27fBY><&b|43kBgg~DBgjeQS>y%e
z736h9uvy1T$l>S0wt5R?qLbQmY_@^THn7<SHrv2v8`x|En{8mT4Q#f7%{H*v1~%Kk
zW}Au4Hn7>IV-v7BE)Ab)D(j!h*G-MGHH>`#oJ*iKLU`XcXxEeef0gg*8??%lsmZFL
z&gMMF4+E>-E`seVS~m51-@V=GcCPA^4FZH}Ez6ikz3G_Zy#tnYR;y&c$!;>K$)MK`
z5ezSu^_O{6vBk&GK_Y&>Y6zJ`wjukGJCI|@L&)RE)5!D4OUP@8f#N=fUFNqlRF5(4
zCz*`H0C?Ecy<wWe=-x28H;nELqkF^X-Y~j1jP4Did&B77FuFI4?hPwwtu*eZYo9`X
zjfwcEHOC7^3CwwvB-6L+&~FF&?fUbz&<G&wksZhZ<OuQr@(6Mgc@}vAc?EeL5$F$c
ziy8&}l|~Ee#5Yi2PiR>$us6l$cH|c1PUL>%VdM$q8RVzP%g7%PgO<(OdKZWo%xCFL
zT|Y>3vMt2dHZ9t_AZQTH+9jrXOth^$KYuSc&x+!2Pgplv%k7VypUv@m?Uq8Y|7)j^
z1K77rTZ{gG^y}I*gHjGFJ)KdGgJ`U-5gWxD7IUX;z#of7OolW<T8pa@(gWERx$olX
zh6+CXeo^(~{K1H~uOw!4LhMB4x&LzgH@Z><@eav8R3S6NF0{kr?Lej-9&d-o+u`wc
zc)T4RZ->X*;qi8Oyd55IhsTA=a0VST(h;j<6ZD&yDiXh<D8jEWcIbwk->6!Fk(Es=
zc~*%X$T{KSJh@3>l7wF=`m855m2p*m+M`ou58gr#-a-$Q*#l+vK$$&IW)GCv17-F=
znLSWu50u#hW%ihq*@L&xV;CX*{`j;u&IhwOCD%?R<ZyaLIMm8DGbbU<uV;g*lWNuG
zYRL+9erZEp@RQqIRkhmBj@NHH`_FZg<71U~zIc3M=+=k7_xC%uKQm?hd42to*=G-E
z8`jQ_f5D#HwyEb254CLUF7CYP<5%waoOULZ4-g#6%PKAUUGQ)14tw9NU*5I<r>Blx
z-<qhW^vwRd_1TmRPe)De=bG<4_Gc5@9^Th;kK-qLFbZz8S?U?@Gt9H}@y=fK@mBnC
znPWYGITTl=A9qz>%2;^pi{7!Zznl?I!^d>~#pRB;P5GEA1LSRtcm{JCyT!{`%bZ4y
zwPmALvFM|{9PJ)oBn_W5mR~M*^q2q9j=mN(WpIAsa`Diw&pGx*%^co7M6`RN<_&g>
zj~X`*JF->0dKJD?r|b-ql!6({YL5Dl&ottDSP1dVFFR)4n}97@iY-}+Em?{!S&A)L
ziY-~HpS$6wF@#Ja+mQXp9mp|6Rj+o?NJmsq#LqJhA(O~9WIu8TatwJ0c^r8fc^-KQ
zc?~g4)@tsun!D)bHk3Q0s4Qw%)0o(?v4{lpa1j~9duo*5Xw<`pZIGClE!ojT$XkLq
zq3E^*app$15Ag5#f$e9x_5$(>@;V}s1lcFGSb=W+^uQ5}=NNaL`gyOL`NkB+b4vYx
zJO8}};Yj%uEa(&#bP5YPg$13$f=*#Ur?8+?SkNg;j2;V`!h%lGmpE2Vj~>Z1qv-6f
zT88NiZECS=64NZ;$ExOvt9Ti4Bd05Jo231kUkCr`@DDz`vj3LPedqZbZ~E>%<Be1M
z{S901-Lm=fckCD{X}tEMTh~7Lft@QW&iwqwM_065y?$(TRYm=dj^d^@eQkxsV^>_e
zb5CpYu2yZtT(CUxgTU?I*md(yzxm1CUCVEObmtW(ANi=Y_o^=(=wE)|Q(t~`&DMtx
z4)pAP;49xc`<~IR+=|+Y-1_divX$*6T5&^rLviV{kA#*iiG>U?-<Tm!slxIJaY`iT
zx>x4G34k#HFeU)T1i+X87!v@aU_JpbCIH3+z?c9S698j^3C0A#m_P^OKPeEF3!=&+
ze5a^P1;gU1+~Z`FS1?!3c*<V8rKe>-7bZ<V4B&#v-FPx-9{Zmz%?o}#c;>I%pII=G
zJ9yIlcbX&k^#_(-Z;!KmRdb&?R#bPsEY|CT|D&zI^}zS2Irj_4CtO)XdpgN(`wv+s
zh&THxi@wUDud?W?Ecz;ozRIGnvgoTU`YMaQ%A&8b=&LOHN*277ubD+($+8)JC3}YI
zk#^G}8KJANiy5_K8cu7K&}cJHGeg+5NA;hJ{zGSF{+*9L<b&yaoXLFjAs<!9M-}o>
zg?v;YA63Xl74lJqd{jZyl&5pj$UyY4D5aKkr?Hux9FiEK*K<}eCAqS2nxW&~$fIID
z|A^a~=>F!X-R_99VcgnJX6@%)OCqf=d}PeZHP&Y&tz>ph%~VCiK{0jbNlH}n>7SkZ
zg>%@oTaDW=k<rhXBR69iv8+*j*2Vrd1NE0Zl1g_*z{3c57y%C>;9&$jjDUv`@Gt@%
zM!>@eco+c>Bj91g#KQ=97@^0d3h5fl2u^~sR0F7`Y{BE^tu%&_Y2-TOAaWErj+{VF
zA<rQ%BCjHEAi}y`iXTm#yfkbzgD%0AoFOH;xtQ3}*D_Y2<;!`(3DI;Z>vdtQEt9Q<
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
UXs$Yu^~TGzyQ3bv&<?A=0D=))r2qf`

literal 0
HcmV?d00001

diff --git a/spxvi/fonts/PalemMUFI-nm.ttf b/spxvi/fonts/PalemMUFI-nm.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..6ef59c4d430ba1696aa89487fe9ab7b9218cb148
GIT binary patch
literal 857832
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

literal 0
HcmV?d00001

diff --git a/spxvi/img/icons/page_white_text.png b/spxvi/img/icons/page_white_text.png
new file mode 100644
index 0000000000000000000000000000000000000000..813f712f726c935f9adf8d2f2dd0d7683791ef11
GIT binary patch
literal 342
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6SkfJR9T^zbpD<_bdI{u9mbgZg
z1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wE-%6;pyTSA|c6o&@eC9QG)Hj&ExYL
zO&oVL^)+cM^qd@ApywS>pwx0H@RDN}hq;7mU-SKczYQ-hnrr=;iDAQMZQ+*g=YOM=
z!QlMQEn7FbaD->uKAYgo_j9)W&$$zS*W9}m(ey0q$&7l-XEWO0Y(9M=SnhLbwy<xp
z<-V!w{rtjKUv+o*|6m()ceab>;d>@~SY$Ku*0xPvIOQeV1x7u_z-2-X>_74(yfh7C
znXL|3GZ+d2`3re2hs?MK<V&+KGL$sTUzRzG=^m3+$2Td42G30@X|lcy44dbP=-$#!
h7h_<U68r8SGxL_I=i_|Jgn@o$@O1TaS?83{1OPX3f*b$<

literal 0
HcmV?d00001

diff --git a/spxvi/img/icons/table.png b/spxvi/img/icons/table.png
new file mode 100644
index 0000000000000000000000000000000000000000..abcd93689a08ec9bdbf0984927e8da06c043c7cd
GIT binary patch
literal 566
zcmV-60?GY}P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt006JZ
zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz$Vo&&R5;6}
zQ_U+xQ565Z58o`v%oMVb<eSnoVnJD05lWGrEbXnt!XKiPC`#;DC}bi<DT!DpA2XA0
zndaRO=f1~#Z)8DE-FNP}@0{QH-E+>>q?GuNnCdgP^*Bj5V_b?dAq2Ppn9^MBB^YUM
zad0N-T<p(`REBK;A?5f$xS;qinWq-c8(ap2W(Tia%u;4XSr{zR7PmZ2XJ7v&T4!Kc
zJj(~*)M2=0^jF#6k_5`QR|9odCG*>{Ujg*A6d~mYV4na=hT4Nz+_}SGTgW|Iir!%$
z;@OGkWI6+j0H}~K4RYR%!7y|zM`O@*K>rL{*&}x3lR**HrMXC1->#slU>X|w!U1xQ
zqc<E(W8k;Xub;t~NM|6)HYwfOL7W&k+IG-A5L2U;)4rx8n-cl~2u)371_gFE2e5IJ
zKv$zT7VC#`M5+o=kYl^!^y&$DS*EXu!a*~1%??)brRj)f0oXcuZ~-d<nQrGC0LGje
z5Z%uDVr(8K&{5|xSdPZg9|^d&Vqoa_Rs*_1U3ork?%z=n%E9IBtNRveOEc{tzX&0P
zuM2W#dj6~_#YLX#uUeeyV%d*}{WwgIFUeJ<wf{cn55JTTC~$R6(EtDd07*qoM6N<$
Eg1A5W5C8xG

literal 0
HcmV?d00001

diff --git a/spxvi/js/spxvi.js b/spxvi/js/spxvi.js
new file mode 100644
index 0000000..c7d7d70
--- /dev/null
+++ b/spxvi/js/spxvi.js
@@ -0,0 +1,74 @@
+function Spxvi(data) {
+  this.startUp();
+}
+
+Spxvi.prototype.startUp = function() {
+  $('#fleksja p[title="fleksja"]').hide();
+  $('#fleksja div').append('<i id="flexion_swap" class="fa fa-file-text-o" aria-hidden="true" title="Pokaż wersję tekstową/tabelaryczną"></i>');
+
+  this.clearTagsFromText();
+  this.onLanguageChange();
+  this.showFlexion();
+}
+
+Spxvi.prototype.clearTagsFromText = function() {
+  $('#fleksja table td').each(function() {
+    let title = $(this).attr('title'),
+        titleWithoutTags = $(title).text();
+    $(this).attr('title', titleWithoutTags);
+  });
+}
+
+Spxvi.prototype.onLanguageChange = function() {
+  $( "#languages" ).on('iconselectmenuchange', function() {
+    switch(this.value) {
+      case 'lang-pl':
+        $('#flexion_swap').attr('title', 'Pokaż wersję tekstową/tabelaryczną');
+        break;
+      case 'lang-en':
+        $('#flexion_swap').attr('title', 'Show txt/table version');
+        break;
+    }
+  });
+}
+
+Spxvi.prototype.showFlexion = function() {
+  $('#lexp_results').on('click', '#flexion_swap', function() {
+    let click = $(this).data('clicks');
+
+    if (click) {
+      $('#fleksja p[title="fleksja"]').stop().fadeOut('slow', function() {
+        $('#fleksja table').stop().fadeIn('slow');
+      });
+    } else {
+      $('#fleksja table').stop().fadeOut('slow', function() {
+        $('#fleksja p[title="fleksja"]').stop().fadeIn('slow');
+      });
+    }
+
+    $(this).data('clicks', !click);
+  });
+}
+
+Spxvi.id = "spxvi";
+
+$(function () {
+  Element.addVisualizer(Spxvi.id, Spxvi);
+
+  $('#lexp_results').on('mouseup', '#lexpelement_spxvi', function(event) {
+    let lemma = selectWord() || '',
+        lang = $('#lang').val(),
+        data = new Object();
+
+    data.lemma = lemma;
+    data.lang = lang || 'pl';
+    data.left = event.originalEvent.offsetX || 0;
+    data.top = event.originalEvent.clientY - 55 || 0;
+
+    if (lemma.length < 10) {
+      data.left = event.originalEvent.offsetX + 20 || 0;
+    }
+
+    positionTooltip(data);
+  });
+});
\ No newline at end of file
diff --git a/spxvii/img/kolo.gif b/spxvii/img/kolo.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f0ca97ad5960c87e38afdc9248e87d9c785d4f4d
GIT binary patch
literal 73
zcmZ?wbhEHb<Y(Y#XkcUjg8%>jEB<6*<YHiC&;jv5G7L-#J^Yo`FHattoq4fR&$OzI
YuWgZV&#{UYZ;9B0+{gX?h%s0L0J5SM6aWAK

literal 0
HcmV?d00001

diff --git a/spxvii/img/romb.gif b/spxvii/img/romb.gif
new file mode 100644
index 0000000000000000000000000000000000000000..9a24c3050d8356cd3ebb4716edf3ae5d6e6e22a4
GIT binary patch
literal 75
zcmZ?wbhEHb<Y(Y#XkcUjg8%>jEB<6*<YHiC&;jv5G7L;gJ@O6R5BAJyaf{0MeCp2!
a`I;n!H20S}s$T*fpGgJPFa$6%SOWm{C>G=Z

literal 0
HcmV?d00001

diff --git a/spxvii/img/trojkat.gif b/spxvii/img/trojkat.gif
new file mode 100644
index 0000000000000000000000000000000000000000..6a7154403a366e6193f23d6eea128ef88b5a88b5
GIT binary patch
literal 96
zcmZ?wbhEHb<Y(Y#XkcUjg8%>jEB+I8E=o--Nlj5G&n(GM2+2rQaQE~LU{L(Y!pOzI
v$e;sK2-3p9B-hiw@-$;_LyKcnM(XKlg*$7)l+xU1%4UeI(eqMdWv~VSA!!?(

literal 0
HcmV?d00001

diff --git a/spxvii/spxvii.css b/spxvii/spxvii.css
new file mode 100644
index 0000000..8d7a3ca
--- /dev/null
+++ b/spxvii/spxvii.css
@@ -0,0 +1,1997 @@
+/*body { font-family: Times New Roman;}*/
+#lexpelement_spxvii {text-align: left; width: 90%; margin: 0 auto;}
+.tytBorder {border-style: double; border-width: 3px; padding: 0px 2px;}
+.forma {color: rgb(0,0,200);}
+.formy_haslowe {font-weight: bold; font-style: italic; font-size: 120%;}
+.forma_haslowa {border: solid 1px; padding: 0px 3px; margin: 1px 3px 1px 0px; background-color: rgb(80, 150, 255); font-style: normal;}
+.forma_podhaslowa {border: solid 1px rgb(150,150,150); padding: 0px 3px; margin: 1px 3px 1px 0px; color: rgb(0,0,0); background-color: rgb(150, 240, 255); font-style: normal;}
+.formy_haslowe .frekwencja {font-size: 80%; font-weight: normal; margin: 5px 0px;}
+.formy_haslowe .funkcja {color: rgb(0,0,0); font-size: 80%; margin: 5px 0px;}
+.obcy {font-family: sans-serif; font-size: 85%;}
+.slowniki {margin: 5px 0px; font-style: italic;}
+.slowniki_warianty {font-style: normal;}
+.slowniki_pod {font-style: normal;}
+.gramatyka {font-style: italic; color: rgb(0,0,200);}
+.gramatyka td {vertical-align: top; font-style: italic; color: rgb(0,0,200);}
+.gramatyka .gram_formy {font-style: normal; font-weight: bold;}
+.gramatyka a {font-style: italic; color: rgb(0,0,200);}
+.etymologia {font-style: italic; color: rgb(0,90,0); margin: 5px 0px;}
+.etymologia div {margin-left: 10px;}
+.etymologia a {color: rgb(0,90,0);}
+.odsylacz {text-transform: uppercase;}
+.znaczenie {font-style: italic; font-weight: bold; color: rgb(255,0,0); margin: 5px 0px;}
+.znaczenie a {font-style: italic; font-weight: bold; color: rgb(255,0,0); margin: 5px 0px;}
+.frekwencja {color: rgb(0,0,0); font-weight: normal; font-size: inherit;}
+.znaczenie .rekcja {margin-left: 15px; color: rgb(0,0,0);}
+.autentyk {color: rgb(0,0,0); font-style: normal; font-weight: normal; padding-left: 10px;}
+.nieautentyk {background-color: rgb(245,245,245); color: rgb(0,0,0); font-style: normal; font-weight: normal; padding-left: 10px;}
+.znaczenie .zrodlo {font-size: 80%; color: inherit; font-weight: normal; font-style: italic;}
+.znaczenie ul, .z_gramatyk ul, ul.cyt_zr {list-style-type: none; padding-left: 15px; margin: 0px; text-indent: -8px;}
+.znaczenie .zwiazki {color: rgb(0,0,0); margin: 5px 0px; padding-left: 10px;}
+.znaczenie .zwiazki a {color: inherit; font-weight: inherit; font-style: inherit;}
+.znaczenie .zwiazki div {font-weight: normal; padding-left: 10px;}
+.znaczenie .zwiazki div img, .lista_zwiazki img {font-weight: normal; width: 11px; height: 11px;}
+.znaczenie .zwiazki span.glowka , .lista_zwiazki a {font-weight: bold; font-style: italic; }
+.znaczenie .zwiazki span.glowka span.male {font-size: 80%};
+.znaczenie .zwiazki .przysl {text-indent: -15px; padding-left: 25px;}
+.znaczenie .zwiazki .zrodlo {font-size: 80%; color: inherit; font-weight: normal; font-style: italic;}
+.z_gramatyk {font-style: italic; color: rgb(255,0,0); font-weight: bold;}
+.z_gramatyk .zrodlo {font-size: 80%; color: inherit; font-style: italic;}
+.podhaslo {margin-left: 25px;}
+.autorzy {text-align: right; margin: 0px; padding-right: 15px; color: rgb(0,0,0); font-style: normal; font-weight: bold;}
+.autorzy a {font-style: italic;}
+.odsylacz {text-transform: uppercase; font-style: normal; color: rgb(0,0,200);}
+.odsylacz span {text-transform: none;}
+.odsylacz a {color: inherit; text-decoration: underline;}
+.odsylacz a:hover {text-decoration: none;}
+li {text-align: justify; margin-right: 5px;}
+.zrodlo {font-size: 80%; color: inherit; font-style: italic; font-weight: normal;}
+.cyt_zr_nagl {font-style: italic; text-align: center; font-weight: bold; margin: 5px 5px; font-size: 110%;}
+.cyt_zr_nagl span {font-style: normal;}
+.cyt_zr_nagl a {font-style: normal;}
+div.wciecie {margin-left: 80px;}
+.kwalifikator {color: rgb(0,0,0);}
+.kwalifikator a {color: rgb(0,0,0);}
+span.przym_od {font-style: normal; font-size: 90%;}
+span.przym_od a {color: rgb(0,0,200); text-decoration: underline;}
+span.przym_od a:hover {text-decoration: none;}
+span.przym_od span {font-style: italic; font-size: 90%;}
+
+body {text-align: center;}
+form {margin: 0px; padding: 0px;}
+a {text-decoration: none; color: rgb(0,0,0);}
+a:hover {text-decoration: underline;}
+img {border-style: none;}
+.b {font-weight: bold;}
+.i {font-style: italic;}
+.bi {font-weight: bold; font-style: italic;}
+.ib {font-weight: bold; font-style: italic;}
+.typy_zw {vertical-align: middle;}
+.haslo_info {text-align: right; padding: 0px 10px; margin: 0px 10px 7px auto; font-size: 80%; border: solid 1px; display: table;}
+.info {text-align: right; font-style: normal; font-weight: bold;}
+.info span {text-align: center; padding: 0px 10px; margin: 0px 10px; font-size: 80%; border: solid 1px;}
+.info .komentarz {font-size: 80%; color: rgb(0,0,0);}
+div.uklad {margin: auto; text-align: left; border-style: outset; border-width: 1px; min-height: 600px;}
+input.znajdz {width: 150px;}
+div.znajdz {text-align: center;}
+div.znajdz_haslo {background-color: rgb(150,150,255)}
+div.znajdz_zwiazek {background-color: #a9dc72}
+div.znajdz_in_haslo {visibility: visible; position: relative;}
+div.znajdz_in_zwiazek {visibility: hidden; position: absolute;}
+input.znajdz_prz {width: 110px;}
+a.litera {font-weight: bold;}
+code {font-style: italic; background-color: rgb(240,240,240);}
+.tekst h2 {font-size: 130%; font-weight: bold; margin: 0px; padding: 0px 5px;}
+.tekst h4 {font-weight: bold; margin: 0px; padding: 0px 5px;}
+.tekst p {text-align: justify; text-indent: 0.5cm; padding: 0px 5px;}
+table.wtyczki td {text-align: center;}
+p {text-indent: 0.5cm; text-align: justify; margin: 0px; padding: 1px 0px;}
+.stat_tab td {border: 1px solid;}
+.zr_link {font-weight: normal; text-decoration: underline; color: rgb(0,0,200);}
+.zr_link:hover {text-decoration: none;}
+td.gramatyka_komorka { width: 300px; }
+td.gramatyka_formy { width: 180px; text-align: left; }
+div.ilustracja {float: right; max-width: 50%; padding: 10px 0px 15px 15px; text-align: center; color: #404040; font-style: italic; font-weight: normal;}
+div.ilustracja > img {display: block; max-width: 100%;}
+
+hr.clear {clear: both; border-style: none; margin: 0;}
+div.menu {background-color: rgb(0,0,120); color: rgb(255,255,255); padding: 5px; font-family: Times New Roman;}
+	div.menu ul {list-style: none; margin: 0; padding: 5px;}
+	div.menu > ul > li {float: left; border-left: solid 1px rgb(255,255,255); border-right: solid 1px rgb(255,255,255); padding: 0 5px; margin: 1px -1px 1px 0;}
+	div.menu > ul > li:hover {background-color: rgb(80,80,160);}
+		div.menu li > ul {position: absolute; visibility: hidden; padding: 5px 10px; background-color: rgb(80,80,160); color: rgb(255,255,255); z-index: 10;}
+		div.menu li:hover > ul {visibility: visible; margin: 0 0 0 -5px; padding: 0;}
+			div.menu li > ul li {padding: 2px 5px; margin: 0;}
+			div.menu li > ul li:hover {background-color: rgb(100,100,200);}
+	div.menu a {color: rgb(255,255,255); white-space: nowrap; font-weight: inherit; text-decoration: inherit;}
+	div.menu li.aktywna {font-weight: bold;}
+div.o_slowniku {padding: 10px;}
+	div.o_slowniku h1 {font-size: 150%; margin: 50px 0;}
+	div.o_slowniku h2, div.o_slowniku h3 {font-weight: bold; margin: 10px 0px 10px 0px; font-size: 150%;}
+		div.o_slowniku h3 > div {display: none; font-weight: normal; margin-left: 10px;}
+	div.o_slowniku p {line-height: 150%;}
+	div.o_slowniku div {line-height: 150%;}
+	div.o_slowniku div.haslo {padding-left: 20px; line-height: 100%;}
+
+table.podstawyMaterialowe th {
+	text-align: center;
+	font-weight: bold;
+	border-bottom: dashed 1px rgb(140,140,140);
+}
+table.podstawyMaterialowe td {
+	border-bottom: dashed 1px rgb(140,140,140);
+}
+
+
+.fa{
+    display:inline-block;
+    font:normal normal normal 14px/1 FontAwesome;
+    font-size:inherit;
+    text-rendering:auto;
+    -webkit-font-smoothing:antialiased;
+    -moz-osx-font-smoothing:grayscale
+}
+
+.detailView{
+    padding:66px 0 0
+}
+.detailView__container{
+    width:100%;
+    max-width:1170px;
+    margin:0 auto;
+    padding:0 15px
+}
+.detailView__container::before,.detailView__container::after{
+    display:table;
+    content:" "
+}
+.detailView__container::after{
+    clear:both
+}
+@media (max-width: 969px){
+    .detailView__container{
+        padding:0 20px
+    }
+}
+.detailView__row{
+    display:flex;
+    flex-wrap:wrap;
+    align-items:baseline;
+    margin-bottom:20px
+}
+.detailView__row:last-child{
+    margin-bottom:0
+}
+@media (max-width: 959px){
+    .detailView__row-left{
+        width:100%;
+        margin-bottom:15px
+    }
+}
+@media (min-width: 960px){
+    .detailView__row-left{
+        flex-grow:1;
+        flex-shrink:1
+    }
+}
+.detailView__row-right{
+    position:relative
+}
+@media (max-width: 959px){
+    .detailView__row-right{
+        display:flex;
+        flex-wrap:wrap;
+        width:100%
+    }
+}
+@media (min-width: 960px){
+    .detailView__row-right{
+        flex-basis:224px;
+        flex-grow:0;
+        flex-shrink:0;
+        margin-left:auto
+    }
+}
+.detailView__title{
+    font-family:"Cormorant Garamond", serif;
+    color:#07293f;
+    font-size:36px;
+    font-weight:700
+}
+.detailView__title.-color-downy{
+    color:#68cfbf
+}
+.detailView__subtitle{
+    width:100%;
+    margin-bottom:5px;
+    color:#07293f;
+    font-size:18px
+}
+.detailView__subtitle:last-child{
+    margin-bottom:0
+}
+.detailView__badge{
+    display:inline-flex;
+    margin-left:20px;
+    padding:0 10px;
+    border-radius:4px;
+    background-color:#68cfbf;
+    color:#fff;
+    font-size:16px;
+    font-style:italic;
+    font-weight:600
+}
+.detailView__label{
+    font-family:"Cormorant Garamond", serif;
+    color:#7f3428;
+    font-size:18px;
+    font-weight:700
+}
+@media (max-width: 959px){
+    .detailView__label{
+        width:100%
+    }
+}
+@media (min-width: 960px){
+    .detailView__label{
+        align-self:flex-end;
+        margin-left:auto;
+        margin-bottom:auto;
+        margin-top:auto;
+        margin-right:2rem;
+    }
+}
+.detailView__button{
+    display:block;
+    position:relative;
+    min-width:220px;
+    padding:5px;
+    transition:background-color .2s ease;
+    border:2px solid #68cfbf;
+    border-radius:4px;
+    font-family:"Lato", sans-serif;
+    color:#07293f;
+    font-weight:700;
+    text-align:center;
+    text-decoration:none;
+    cursor:pointer
+}
+.detailView__button:hover,.detailView__button.-active{
+    background-color:#68cfbf;
+    color:#fff
+}
+@media (min-width: 960px){
+    .detailView__button.-active::before,.detailView__button.-active::after{
+        opacity:1
+    }
+}
+.detailView__button::before{
+    display:block;
+    position:absolute;
+    right:-2px;
+    bottom:-2px;
+    width:228px;
+    height:4px;
+    transition:opacity .2s ease;
+    background-color:#68cfbf;
+    content:"";
+    opacity:0
+}
+.detailView__button::after{
+    display:block;
+    position:absolute;
+    right:222px;
+    bottom:-2px;
+    width:4px;
+    height:4px;
+    transition:opacity .2s ease;
+    border-radius:0 0 50%;
+    background-color:#f5f5f5;
+    content:"";
+    opacity:0
+}
+.detailView__popup{
+    display:none;
+    position:absolute;
+    right:0;
+    width:640px;
+    border-top:4px solid #68cfbf;
+    border-radius:4px 0 4px 4px;
+    background-color:#fff;
+    box-shadow:0 3px 7px -3px rgba(0,0,0,0.47);
+    z-index:1000
+}
+@media (max-width: 959px){
+    .detailView__popup{
+        position:relative;
+        right:auto;
+        width:100%
+    }
+}
+.detailView__popup-item{
+    display:flex;
+    align-items:center;
+    padding:25px 0;
+    border-bottom:1px dashed #3c3c3c
+}
+.detailView__popup-item:last-child{
+    border-bottom:0 none
+}
+.detailView__popup-quote-method{
+    flex:86px 0 0;
+    font-family:"Cormorant Garamond", serif;
+    color:#07293f;
+    font-size:16px;
+    font-weight:700;
+    text-align:center
+}
+.detailView__popup-content{
+    display:block;
+    width:100%;
+    padding:0 5px;
+    color:#07293f;
+    font-size:12px
+}
+.detailView__popup-content p{
+    margin-bottom:16px;
+    font-size:16px;
+    font-weight:400;
+    line-height:1.3
+}
+@media (max-width: 767px){
+    .detailView__popup-content p{
+        font-size:16px
+    }
+}
+.detailView__popup-content strong{
+    font-weight:700
+}
+.detailView__popup-content b{
+    font-weight:700
+}
+.detailView__popup-content em,.detailView__popup-content i{
+    font-style:italic
+}
+.detailView__popup-content u,.detailView__popup-content ins{
+    text-decoration:underline
+}
+.detailView__popup-content small{
+    font-size:smaller
+}
+.detailView__popup-content mark{
+    background-color:#ff0;
+    color:inherit
+}
+.detailView__popup-content del{
+    text-decoration:line-through
+}
+.detailView__popup-content sub{
+    font-size:smaller;
+    vertical-align:sub
+}
+.detailView__popup-content sup{
+    font-size:smaller;
+    vertical-align:super
+}
+.detailView__popup-content ul{
+    display:block;
+    padding-left:20px;
+    list-style-type:disc
+}
+.detailView__popup-content ol{
+    display:block;
+    padding-left:20px;
+    list-style-type:decimal
+}
+.detailView__popup-content li{
+    display:list-item;
+    text-align:match-parent
+}
+.detailView__popup-content table{
+    display:table;
+    width:100%;
+    max-width:750px;
+    margin:0 auto 15px;
+    border-radius:6px;
+    border-color:#3c3c3c;
+    color:#3c3c3c;
+    border-collapse:separate;
+    border-spacing:2px
+}
+.detailView__popup-content tr{
+    display:table-row;
+    border-color:inherit;
+    vertical-align:inherit
+}
+.detailView__popup-content th{
+    padding:8px;
+    background-color:#d7dfe7;
+    font-size:18px;
+    font-weight:600;
+    text-align:center;
+    cursor:default;
+    vertical-align:middle
+}
+.detailView__popup-content th.-th-sub{
+    font-size:14px
+}
+.detailView__popup-content td{
+    padding:8px;
+    border-bottom:1px solid #d7dfe7;
+    background-color:transparent;
+    font-size:18px;
+    font-weight:600;
+    text-align:center;
+    cursor:default;
+    vertical-align:middle
+}
+.detailView__popup-content img{
+    display:block;
+    max-width:100%;
+    height:auto;
+    margin:0 auto
+}
+.detailView__popup-content a{
+    color:inherit;
+    text-decoration:none
+}
+.detailView__popup-content .cms-col-25{
+    width:25%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-col-25{
+        width:100%
+    }
+}
+.detailView__popup-content .cms-col-33{
+    width:33.33%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-col-33{
+        width:100%
+    }
+}
+.detailView__popup-content .cms-col-50{
+    width:50%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-col-50{
+        width:100%
+    }
+}
+.detailView__popup-content .responsive-table{
+    display:block;
+    width:100%;
+    overflow:auto
+}
+.detailView__popup-content .cms-panel{
+    display:block;
+    width:100%;
+    margin-bottom:20px;
+    padding:28px 32px;
+    border-radius:6px;
+    background-color:#fff;
+    box-shadow:1px 1px 2px 0 rgba(0,0,0,0.2);
+    cursor:default
+}
+.detailView__popup-content .cms-panel p{
+    margin:0 0 20px;
+    text-align:justify
+}
+.detailView__popup-content .cms-panel p:last-of-type{
+    margin:0
+}
+.detailView__popup-content .cms-availability-panel{
+    display:block;
+    width:100%
+}
+.detailView__popup-content .cms-availability-panel__header{
+    display:flex;
+    align-items:center;
+    width:100%;
+    margin-bottom:15px
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-availability-panel__header{
+        display:none
+    }
+}
+.detailView__popup-content .cms-availability-panel__header>div{
+    cursor:default
+}
+.detailView__popup-content .cms-availability-panel__header>div p{
+    margin:0;
+    color:#7a7a7a;
+    font-size:18px;
+    font-weight:bold;
+    text-align:center
+}
+@media (max-width: 969px){
+    .detailView__popup-content .cms-availability-panel__header>div p{
+        font-size:14px
+    }
+}
+.detailView__popup-content .cms-availability-panel__header>div:nth-of-type(1){
+    flex-shrink:0;
+    width:20%;
+    min-width:242px
+}
+.detailView__popup-content .cms-availability-panel__header>div:nth-of-type(2){
+    width:65%
+}
+.detailView__popup-content .cms-availability-panel__header>div:nth-of-type(3){
+    flex-shrink:0;
+    width:15%;
+    min-width:95px
+}
+.detailView__popup-content .cms-availability-panel__item{
+    display:flex;
+    align-items:stretch;
+    width:100%;
+    border-bottom:1px solid #dbdbdb
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-availability-panel__item{
+        flex-wrap:wrap
+    }
+}
+.detailView__popup-content .cms-availability-panel__item>div:nth-of-type(1){
+    display:flex;
+    flex-shrink:0;
+    align-items:center;
+    justify-content:center;
+    width:20%;
+    min-width:242px;
+    cursor:default
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-availability-panel__item>div:nth-of-type(1){
+        width:100%;
+        margin:15px auto
+    }
+}
+.detailView__popup-content .cms-availability-panel__item>div:nth-of-type(1) p{
+    margin:0;
+    color:#234153;
+    font-size:18px;
+    font-weight:bold;
+    text-align:center
+}
+.detailView__popup-content .cms-availability-panel__item>div:nth-of-type(2){
+    width:65%;
+    padding:20px;
+    background-color:#fff;
+    cursor:default
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-availability-panel__item>div:nth-of-type(2){
+        width:85%
+    }
+}
+@media (max-width: 480px){
+    .detailView__popup-content .cms-availability-panel__item>div:nth-of-type(2){
+        width:100%
+    }
+}
+.detailView__popup-content .cms-availability-panel__item>div:nth-of-type(2) p:last-of-type{
+    margin:0
+}
+.detailView__popup-content .cms-availability-panel__item>div:nth-of-type(3){
+    display:flex;
+    flex-shrink:0;
+    align-items:center;
+    justify-content:center;
+    width:15%;
+    min-width:95px;
+    padding:20px;
+    background-color:#fff;
+    cursor:default
+}
+@media (max-width: 767px){
+    .detailView__popup-content .cms-availability-panel__item>div:nth-of-type(3){
+        min-width:inherit
+    }
+}
+@media (max-width: 480px){
+    .detailView__popup-content .cms-availability-panel__item>div:nth-of-type(3){
+        width:100%
+    }
+}
+.detailView__popup-content .cms-availability-panel__result{
+    display:inline-block;
+    position:relative;
+    flex-shrink:0;
+    width:40px;
+    height:40px;
+    border-radius:100%;
+    background-color:#bdbdbd
+}
+.detailView__popup-content .cms-availability-panel__result.dostepneWPracowni{
+    background-color:#68cfbf
+}
+.detailView__popup-content .cms-availability-panel__result::after{
+    position:absolute;
+    top:50%;
+    left:50%;
+    transform:translate(-50%, -50%);
+    color:#fff;
+    content:"";
+    font-family:"FontAwesome"
+}
+.detailView__popup-content .cms-availability-panel__result.dostepneWPracowni::after{
+    content:""
+}
+.detailView__popup-content .ramka{
+    display:inline-block;
+    margin:1px;
+    padding:3px;
+    border:1px solid #234153
+}
+.detailView__popup-copy{
+    flex:84px 0 0;
+    height:37px;
+    transition:opacity .2s ease;
+    background-image:url("../images/detailVIew/copy.png");
+    background-repeat:no-repeat;
+    background-position:center;
+    cursor:pointer
+}
+.detailView__popup-copy:hover{
+    opacity:.8
+}
+.detailView-footer{
+    padding:35px 0;
+    background-color:#fff
+}
+.detailView-footer__container{
+    display:flex;
+    flex-wrap:wrap;
+    justify-content:space-between;
+    width:100%;
+    max-width:1200px;
+    margin:0 auto;
+    padding:0 15px
+}
+.detailView-footer__author{
+    font-size:18px
+}
+@media (max-width: 767px){
+    .detailView-footer__author{
+        width:100%;
+        margin-bottom:30px;
+        text-align:center
+    }
+}
+.detailView-footer__date{
+    font-size:18px
+}
+@media (max-width: 767px){
+    .detailView-footer__date{
+        width:100%;
+        text-align:center
+    }
+}
+
+
+.query{
+    display:block;
+    width:100%;
+    padding:66px 0
+}
+@media (max-width: 767px){
+    .query{
+        padding:45px 0
+    }
+}
+.query.-internal{
+    padding:20px 0 0
+}
+.query__container{
+    width:100%;
+    max-width:1170px;
+    margin:0 auto;
+    padding:0 15px
+}
+.query__container::before,.query__container::after{
+    display:table;
+    content:" "
+}
+.query__container::after{
+    clear:both
+}
+@media (max-width: 969px){
+    .query__container{
+        padding:0 20px
+    }
+}
+.query__title{
+    display:block;
+    width:100%;
+    margin-bottom:60px;
+    color:#07293f;
+    font-size:32px;
+    font-weight:bold;
+    text-align:center;
+    cursor:default;
+    font-family:"Cormorant Garamond", serif
+}
+@media (max-width: 767px){
+    .query__title{
+        margin-bottom:25px;
+        font-size:24px
+    }
+}
+.query__text{
+    display:block;
+    width:100%;
+    padding:0 5px;
+    display:block;
+    width:100%;
+    max-width:944px;
+    margin:0 auto;
+    margin-bottom:45px;
+    padding:0 40px;
+    cursor:default
+}
+.query__text p{
+    margin-bottom:16px;
+    font-size:16px;
+    font-weight:400;
+    line-height:1.3
+}
+@media (max-width: 767px){
+    .query__text p{
+        font-size:16px
+    }
+}
+.query__text strong{
+    font-weight:700
+}
+.query__text b{
+    font-weight:700
+}
+.query__text em,.query__text i{
+    font-style:italic
+}
+.query__text u,.query__text ins{
+    text-decoration:underline
+}
+.query__text small{
+    font-size:smaller
+}
+.query__text mark{
+    background-color:#ff0;
+    color:inherit
+}
+.query__text del{
+    text-decoration:line-through
+}
+.query__text sub{
+    font-size:smaller;
+    vertical-align:sub
+}
+.query__text sup{
+    font-size:smaller;
+    vertical-align:super
+}
+.query__text ul{
+    display:block;
+    padding-left:20px;
+    list-style-type:disc
+}
+.query__text ol{
+    display:block;
+    padding-left:20px;
+    list-style-type:decimal
+}
+.query__text li{
+    display:list-item;
+    text-align:match-parent
+}
+.query__text table{
+    display:table;
+    width:100%;
+    max-width:750px;
+    margin:0 auto 15px;
+    border-radius:6px;
+    border-color:#3c3c3c;
+    color:#3c3c3c;
+    border-collapse:separate;
+    border-spacing:2px
+}
+.query__text tr{
+    display:table-row;
+    border-color:inherit;
+    vertical-align:inherit
+}
+.query__text th{
+    padding:8px;
+    background-color:#d7dfe7;
+    font-size:18px;
+    font-weight:600;
+    text-align:center;
+    cursor:default;
+    vertical-align:middle
+}
+.query__text th.-th-sub{
+    font-size:14px
+}
+.query__text td{
+    padding:8px;
+    border-bottom:1px solid #d7dfe7;
+    background-color:transparent;
+    font-size:18px;
+    font-weight:600;
+    text-align:center;
+    cursor:default;
+    vertical-align:middle
+}
+.query__text img{
+    display:block;
+    max-width:100%;
+    height:auto;
+    margin:0 auto
+}
+.query__text a{
+    color:inherit;
+    text-decoration:none
+}
+.query__text .cms-col-25{
+    width:25%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .query__text .cms-col-25{
+        width:100%
+    }
+}
+.query__text .cms-col-33{
+    width:33.33%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .query__text .cms-col-33{
+        width:100%
+    }
+}
+.query__text .cms-col-50{
+    width:50%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .query__text .cms-col-50{
+        width:100%
+    }
+}
+.query__text .responsive-table{
+    display:block;
+    width:100%;
+    overflow:auto
+}
+.query__text .cms-panel{
+    display:block;
+    width:100%;
+    margin-bottom:20px;
+    padding:28px 32px;
+    border-radius:6px;
+    background-color:#fff;
+    box-shadow:1px 1px 2px 0 rgba(0,0,0,0.2);
+    cursor:default
+}
+.query__text .cms-panel p{
+    margin:0 0 20px;
+    text-align:justify
+}
+.query__text .cms-panel p:last-of-type{
+    margin:0
+}
+.query__text .cms-availability-panel{
+    display:block;
+    width:100%
+}
+.query__text .cms-availability-panel__header{
+    display:flex;
+    align-items:center;
+    width:100%;
+    margin-bottom:15px
+}
+@media (max-width: 767px){
+    .query__text .cms-availability-panel__header{
+        display:none
+    }
+}
+.query__text .cms-availability-panel__header>div{
+    cursor:default
+}
+.query__text .cms-availability-panel__header>div p{
+    margin:0;
+    color:#7a7a7a;
+    font-size:18px;
+    font-weight:bold;
+    text-align:center
+}
+@media (max-width: 969px){
+    .query__text .cms-availability-panel__header>div p{
+        font-size:14px
+    }
+}
+.query__text .cms-availability-panel__header>div:nth-of-type(1){
+    flex-shrink:0;
+    width:20%;
+    min-width:242px
+}
+.query__text .cms-availability-panel__header>div:nth-of-type(2){
+    width:65%
+}
+.query__text .cms-availability-panel__header>div:nth-of-type(3){
+    flex-shrink:0;
+    width:15%;
+    min-width:95px
+}
+.query__text .cms-availability-panel__item{
+    display:flex;
+    align-items:stretch;
+    width:100%;
+    border-bottom:1px solid #dbdbdb
+}
+@media (max-width: 767px){
+    .query__text .cms-availability-panel__item{
+        flex-wrap:wrap
+    }
+}
+.query__text .cms-availability-panel__item>div:nth-of-type(1){
+    display:flex;
+    flex-shrink:0;
+    align-items:center;
+    justify-content:center;
+    width:20%;
+    min-width:242px;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query__text .cms-availability-panel__item>div:nth-of-type(1){
+        width:100%;
+        margin:15px auto
+    }
+}
+.query__text .cms-availability-panel__item>div:nth-of-type(1) p{
+    margin:0;
+    color:#234153;
+    font-size:18px;
+    font-weight:bold;
+    text-align:center
+}
+.query__text .cms-availability-panel__item>div:nth-of-type(2){
+    width:65%;
+    padding:20px;
+    background-color:#fff;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query__text .cms-availability-panel__item>div:nth-of-type(2){
+        width:85%
+    }
+}
+@media (max-width: 480px){
+    .query__text .cms-availability-panel__item>div:nth-of-type(2){
+        width:100%
+    }
+}
+.query__text .cms-availability-panel__item>div:nth-of-type(2) p:last-of-type{
+    margin:0
+}
+.query__text .cms-availability-panel__item>div:nth-of-type(3){
+    display:flex;
+    flex-shrink:0;
+    align-items:center;
+    justify-content:center;
+    width:15%;
+    min-width:95px;
+    padding:20px;
+    background-color:#fff;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query__text .cms-availability-panel__item>div:nth-of-type(3){
+        min-width:inherit
+    }
+}
+@media (max-width: 480px){
+    .query__text .cms-availability-panel__item>div:nth-of-type(3){
+        width:100%
+    }
+}
+.query__text .cms-availability-panel__result{
+    display:inline-block;
+    position:relative;
+    flex-shrink:0;
+    width:40px;
+    height:40px;
+    border-radius:100%;
+    background-color:#bdbdbd
+}
+.query__text .cms-availability-panel__result.dostepneWPracowni{
+    background-color:#68cfbf
+}
+.query__text .cms-availability-panel__result::after{
+    position:absolute;
+    top:50%;
+    left:50%;
+    transform:translate(-50%, -50%);
+    color:#fff;
+    content:"";
+    font-family:"FontAwesome"
+}
+.query__text .cms-availability-panel__result.dostepneWPracowni::after{
+    content:""
+}
+.query__text .ramka{
+    display:inline-block;
+    margin:1px;
+    padding:3px;
+    border:1px solid #234153
+}
+@media (max-width: 767px){
+    .query__text{
+        padding:0 15px
+    }
+}
+.query__box{
+    display:block;
+    width:100%;
+    max-width:944px;
+    margin:0 auto
+}
+.query__item{
+    display:block;
+    width:100%;
+    margin-bottom:20px
+}
+.query__content{
+    display:inline-block;
+    width:100%;
+    padding:25px 0 45px
+}
+@media (max-width: 767px){
+    .query__content{
+        padding-bottom:25px
+    }
+}
+.query.-internal .query__content{
+    padding-bottom:0
+}
+.query__cms{
+    display:block;
+    width:100%;
+    padding:0 5px;
+    padding:0 40px
+}
+.query__cms p{
+    margin-bottom:16px;
+    font-size:16px;
+    font-weight:400;
+    line-height:1.3
+}
+@media (max-width: 767px){
+    .query__cms p{
+        font-size:16px
+    }
+}
+.query__cms strong{
+    font-weight:700
+}
+.query__cms b{
+    font-weight:700
+}
+.query__cms em,.query__cms i{
+    font-style:italic
+}
+.query__cms u,.query__cms ins{
+    text-decoration:underline
+}
+.query__cms small{
+    font-size:smaller
+}
+.query__cms mark{
+    background-color:#ff0;
+    color:inherit
+}
+.query__cms del{
+    text-decoration:line-through
+}
+.query__cms sub{
+    font-size:smaller;
+    vertical-align:sub
+}
+.query__cms sup{
+    font-size:smaller;
+    vertical-align:super
+}
+.query__cms ul{
+    display:block;
+    padding-left:20px;
+    list-style-type:disc
+}
+.query__cms ol{
+    display:block;
+    padding-left:20px;
+    list-style-type:decimal
+}
+.query__cms li{
+    display:list-item;
+    text-align:match-parent
+}
+.query__cms table{
+    display:table;
+    width:100%;
+    max-width:750px;
+    margin:0 auto 15px;
+    border-radius:6px;
+    border-color:#3c3c3c;
+    color:#3c3c3c;
+    border-collapse:separate;
+    border-spacing:2px
+}
+.query__cms tr{
+    display:table-row;
+    border-color:inherit;
+    vertical-align:inherit
+}
+.query__cms th{
+    padding:8px;
+    background-color:#d7dfe7;
+    font-size:18px;
+    font-weight:600;
+    text-align:center;
+    cursor:default;
+    vertical-align:middle
+}
+.query__cms th.-th-sub{
+    font-size:14px
+}
+.query__cms td{
+    padding:8px;
+    border-bottom:1px solid #d7dfe7;
+    background-color:transparent;
+    font-size:18px;
+    font-weight:600;
+    text-align:center;
+    cursor:default;
+    vertical-align:middle
+}
+.query__cms img{
+    display:block;
+    max-width:100%;
+    height:auto;
+    margin:0 auto
+}
+.query__cms a{
+    color:inherit;
+    text-decoration:none
+}
+.query__cms .cms-col-25{
+    width:25%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .query__cms .cms-col-25{
+        width:100%
+    }
+}
+.query__cms .cms-col-33{
+    width:33.33%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .query__cms .cms-col-33{
+        width:100%
+    }
+}
+.query__cms .cms-col-50{
+    width:50%;
+    padding:15px;
+    float:left
+}
+@media (max-width: 767px){
+    .query__cms .cms-col-50{
+        width:100%
+    }
+}
+.query__cms .responsive-table{
+    display:block;
+    width:100%;
+    overflow:auto
+}
+.query__cms .cms-panel{
+    display:block;
+    width:100%;
+    margin-bottom:20px;
+    padding:28px 32px;
+    border-radius:6px;
+    background-color:#fff;
+    box-shadow:1px 1px 2px 0 rgba(0,0,0,0.2);
+    cursor:default
+}
+.query__cms .cms-panel p{
+    margin:0 0 20px;
+    text-align:justify
+}
+.query__cms .cms-panel p:last-of-type{
+    margin:0
+}
+.query__cms .cms-availability-panel{
+    display:block;
+    width:100%
+}
+.query__cms .cms-availability-panel__header{
+    display:flex;
+    align-items:center;
+    width:100%;
+    margin-bottom:15px
+}
+@media (max-width: 767px){
+    .query__cms .cms-availability-panel__header{
+        display:none
+    }
+}
+.query__cms .cms-availability-panel__header>div{
+    cursor:default
+}
+.query__cms .cms-availability-panel__header>div p{
+    margin:0;
+    color:#7a7a7a;
+    font-size:18px;
+    font-weight:bold;
+    text-align:center
+}
+@media (max-width: 969px){
+    .query__cms .cms-availability-panel__header>div p{
+        font-size:14px
+    }
+}
+.query__cms .cms-availability-panel__header>div:nth-of-type(1){
+    flex-shrink:0;
+    width:20%;
+    min-width:242px
+}
+.query__cms .cms-availability-panel__header>div:nth-of-type(2){
+    width:65%
+}
+.query__cms .cms-availability-panel__header>div:nth-of-type(3){
+    flex-shrink:0;
+    width:15%;
+    min-width:95px
+}
+.query__cms .cms-availability-panel__item{
+    display:flex;
+    align-items:stretch;
+    width:100%;
+    border-bottom:1px solid #dbdbdb
+}
+@media (max-width: 767px){
+    .query__cms .cms-availability-panel__item{
+        flex-wrap:wrap
+    }
+}
+.query__cms .cms-availability-panel__item>div:nth-of-type(1){
+    display:flex;
+    flex-shrink:0;
+    align-items:center;
+    justify-content:center;
+    width:20%;
+    min-width:242px;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query__cms .cms-availability-panel__item>div:nth-of-type(1){
+        width:100%;
+        margin:15px auto
+    }
+}
+.query__cms .cms-availability-panel__item>div:nth-of-type(1) p{
+    margin:0;
+    color:#234153;
+    font-size:18px;
+    font-weight:bold;
+    text-align:center
+}
+.query__cms .cms-availability-panel__item>div:nth-of-type(2){
+    width:65%;
+    padding:20px;
+    background-color:#fff;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query__cms .cms-availability-panel__item>div:nth-of-type(2){
+        width:85%
+    }
+}
+@media (max-width: 480px){
+    .query__cms .cms-availability-panel__item>div:nth-of-type(2){
+        width:100%
+    }
+}
+.query__cms .cms-availability-panel__item>div:nth-of-type(2) p:last-of-type{
+    margin:0
+}
+.query__cms .cms-availability-panel__item>div:nth-of-type(3){
+    display:flex;
+    flex-shrink:0;
+    align-items:center;
+    justify-content:center;
+    width:15%;
+    min-width:95px;
+    padding:20px;
+    background-color:#fff;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query__cms .cms-availability-panel__item>div:nth-of-type(3){
+        min-width:inherit
+    }
+}
+@media (max-width: 480px){
+    .query__cms .cms-availability-panel__item>div:nth-of-type(3){
+        width:100%
+    }
+}
+.query__cms .cms-availability-panel__result{
+    display:inline-block;
+    position:relative;
+    flex-shrink:0;
+    width:40px;
+    height:40px;
+    border-radius:100%;
+    background-color:#bdbdbd
+}
+.query__cms .cms-availability-panel__result.dostepneWPracowni{
+    background-color:#68cfbf
+}
+.query__cms .cms-availability-panel__result::after{
+    position:absolute;
+    top:50%;
+    left:50%;
+    transform:translate(-50%, -50%);
+    color:#fff;
+    content:"";
+    font-family:"FontAwesome"
+}
+.query__cms .cms-availability-panel__result.dostepneWPracowni::after{
+    content:""
+}
+.query__cms .ramka{
+    display:inline-block;
+    margin:1px;
+    padding:3px;
+    border:1px solid #234153
+}
+@media (max-width: 767px){
+    .query__cms{
+        padding:0 15px
+    }
+}
+.query__searchResults{
+    display:inline-block;
+    width:100%;
+    padding:0 40px
+}
+@media (max-width: 767px){
+    .query__searchResults{
+        padding:0 15px
+    }
+}
+.query__advanved{
+    display:inline-block;
+    width:100%;
+    padding:0 40px
+}
+@media (max-width: 767px){
+    .query__advanved{
+        padding:0 15px
+    }
+}
+.query__selectbox{
+    display:block;
+    width:100%;
+    max-width:552px;
+    margin:0 auto
+}
+.query__select{
+    width:100%;
+    border:0;
+    border-radius:6px;
+    color:#07293f;
+    font-size:16px;
+    box-shadow:0 1px 5px 0 rgba(0,0,0,0.47)
+}
+.query__select .list{
+    width:100%
+}
+.query__select::after{
+    right:16px;
+    width:10px;
+    height:10px;
+    margin-top:-8px;
+    border-right:3px solid #07293f;
+    border-bottom:3px solid #07293f
+}
+.query__tags{
+    display:flex;
+    flex-wrap:wrap;
+    justify-content:center
+}
+.query__navigation{
+    display:block;
+    width:100%;
+    text-align:center
+}
+.query__button{
+    font-family:"Lato", sans-serif;
+    display:inline-flex;
+    align-items:center;
+    justify-content:center;
+    min-height:40px;
+    padding:0 25px;
+    transition:0.2s;
+    border:1px solid #68cfbf;
+    border-radius:6px;
+    background-color:#68cfbf;
+    color:#fff;
+    font-size:18px;
+    font-weight:bold;
+    line-height:1;
+    text-decoration:none;
+    cursor:pointer;
+    min-width:360px;
+    height:60px;
+    font-size:24px
+}
+.query__button:hover{
+    background-color:#41c3af
+}
+.query__button:active{
+    background-color:#41c3af
+}
+@media (max-width: 767px){
+    .query__button{
+        min-width:150px;
+        height:40px;
+        font-size:16px
+    }
+}
+.query-etymology{
+    padding:0 40px;
+    font-weight:700
+}
+.query-etymology__source{
+    color:#68cfbf
+}
+.query-etymology__meaning{
+    color:#07293f;
+    font-size:18px;
+    font-style:italic
+}
+.query-grammar{
+    padding:0 40px
+}
+@media (max-width: 479px){
+    .query-grammar{
+        padding:0 5px
+    }
+}
+@media (max-width: 639px){
+    .query-grammar{
+        padding:0 10px
+    }
+}
+.query-grammar__label{
+    width:100%;
+    margin-bottom:20px;
+    padding:10px 15px;
+    border-radius:3px;
+    background-color:#fff;
+    color:#68cfbf;
+    font-size:18px;
+    font-weight:700
+}
+.query-grammar__content{
+    display:flex;
+    flex-wrap:wrap;
+    margin-bottom:20px
+}
+.query-grammar__column{
+    width:50%
+}
+@media (max-width: 767px){
+    .query-grammar__column{
+        width:100%;
+        padding-bottom:40px
+    }
+}
+@media (max-width: 767px){
+    .query-grammar__column{
+        padding-bottom:0
+    }
+}
+.query-grammar__title{
+    width:100%;
+    margin-bottom:20px;
+    padding:10px 15px;
+    color:#68cfbf;
+    font-size:18px;
+    font-weight:700
+}
+.query-grammar__table-row{
+    color:#07293f;
+    font-size:18px
+}
+.query-grammar__table-row td:not([class]){
+    padding-bottom:30px
+}
+.query-grammar__variant{
+    padding:0 25px 10px 20px;
+    text-align:right
+}
+.query-grammar__gender{
+    padding:0 10px 10px 0;
+    font-style:italic
+}
+.query-grammar__case{
+    padding:0 0 10px;
+    font-weight:700
+}
+.query-label{
+    display:flex;
+    position:relative;
+    flex-wrap:wrap;
+    align-items:stretch;
+    justify-content:space-between;
+    width:100%;
+    min-height:40px;
+    padding:2px 20px;
+    border-radius:3px;
+    background-color:#fff
+}
+.query-label.-dropdown{
+    padding:2px 20px 2px 40px;
+    cursor:pointer
+}
+.query-label__name{
+    display:inline-flex;
+    position:relative;
+    flex-wrap:wrap;
+    align-items:center;
+    min-height:40px;
+    color:#07293f;
+    font-size:18px;
+    font-weight:600;
+    cursor:default
+}
+.-dropdown .query-label__name{
+    cursor:pointer
+}
+.query-label__name span{
+    margin-left:10px;
+    color:#68cfbf;
+    font-size:14px;
+    font-style:italic;
+    font-weight:400
+}
+@media (max-width: 767px){
+    .query-label__name span{
+        display:block;
+        width:100%;
+        margin-top:5px;
+        margin-left:0
+    }
+}
+.query-label__details{
+    display:inline-flex;
+    align-items:center;
+    min-height:40px;
+    padding:0 10px;
+    color:#07293f;
+    font-size:14px;
+    font-weight:400;
+    cursor:default
+}
+@media (max-width: 767px){
+    .query-label__details{
+        justify-content:flex-end;
+        width:100%;
+        padding:5px 0
+    }
+}
+.-dropdown .query-label__details{
+    cursor:pointer
+}
+.query-label__details strong{
+    margin:0 4px
+}
+.query-label__params{
+    display:inline-flex;
+    flex-wrap:wrap;
+    align-items:center
+}
+@media (max-width: 767px){
+    .query-label__params{
+        justify-content:center;
+        width:100%;
+        padding:5px 0
+    }
+}
+.query-label__params label{
+    display:inline-flex;
+    align-items:center;
+    margin:0 5px;
+    cursor:pointer
+}
+.query-label__params input[type="radio"]{
+    margin-right:10px;
+    border:1px solid #07293f
+}
+.query-label__params span{
+    color:#07293f;
+    font-size:18px;
+    font-weight:600
+}
+.query-label__dropdown{
+    position:absolute;
+    top:50%;
+    left:-30px;
+    margin-right:12px;
+    transform:translate(0, -50%);
+    transition:0.2s;
+    color:#92dacf;
+    cursor:pointer
+}
+.query-label__dropdown:hover{
+    color:#6ccdbe
+}
+.query-label__dropdown.-active{
+    color:#6ccdbe
+}
+.query-links{
+    padding:0 20px;
+    color:#07293f;
+    font-size:18px
+}
+.query-links__link{
+    font-family:"Cormorant Garamond", serif;
+    color:inherit;
+    font-weight:700;
+    text-decoration:underline
+}
+.query-links__link:hover{
+    text-decoration:none
+}
+.query-list{
+    padding:0 0 20px 20px
+}
+.query-list__item .query-list{
+    padding-top:5px;
+    padding-bottom:0
+}
+.query-list__item{
+    position:relative;
+    padding:0 0 10px;
+    color:#07293f;
+    font-size:18px;
+    list-style:none
+}
+.query-list__item:last-child{
+    padding-bottom:0
+}
+.query-list__item::before,.query-list__item::after{
+    display:block;
+    position:absolute;
+    content:""
+}
+.query-list__item.-circle.-small::before{
+    top:10px;
+    left:-18px;
+    width:8px;
+    height:8px;
+    border-radius:50%
+}
+.query-list__item.-circle.-big::before{
+    top:8px;
+    left:-20px;
+    width:12px;
+    height:12px;
+    border-radius:50%
+}
+.query-list__item.-red::before{
+    background-color:#840000
+}
+.query-list__item.-downy::before{
+    background-color:#68cfbf
+}
+.query-list__item.-tiber::before{
+    background-color:#07293f
+}
+.query-list__item.-square::before{
+    top:9px;
+    left:-20px;
+    width:12px;
+    height:12px;
+    background-color:#07293f
+}
+.query-list__item.-triangle::before{
+    top:7px;
+    left:-20px;
+    border-top:0 solid transparent;
+    border-right:6px solid transparent;
+    border-bottom:13px solid #07293f;
+    border-left:6px solid transparent
+}
+.query-list__item.-diamond::before{
+    top:3px;
+    left:-20px;
+    border-top:0 solid transparent;
+    border-right:6px solid transparent;
+    border-bottom:9px solid #07293f;
+    border-left:6px solid transparent
+}
+.query-list__item.-diamond::after{
+    top:12px;
+    left:-20px;
+    border-top:9px solid #07293f;
+    border-right:6px solid transparent;
+    border-bottom:0 solid transparent;
+    border-left:6px solid transparent
+}
+.query-meaning{
+    display:flex;
+    margin-bottom:20px;
+    padding:0 20px;
+    border-bottom:1px dashed #bdbdbd
+}
+.query-meaning:last-child{
+    margin-bottom:0
+}
+.query-meaning__content{
+    flex-grow:1;
+    flex-shrink:1
+}
+.query-meaning__image-section{
+    flex-grow:0;
+    flex-shrink:0;
+    text-align:center
+}
+.query-meaning__image-box{
+    display:inline-block;
+    position:relative
+}
+.query-meaning__image{
+    display:block;
+    max-width:120px;
+    height:auto
+}
+.query-meaning__overlay{
+    display:block;
+    position:absolute;
+    top:50%;
+    left:50%;
+    transform:translate(-50%, -50%);
+    width:74px;
+    height:auto
+}
+.query-meaning__image-title{
+    color:#07293f;
+    font-size:12px;
+    font-weight:700
+}
+.query-meaning__image-subtitle{
+    color:#68cfbf;
+    font-size:12px;
+    font-style:italic;
+    font-weight:700
+}
+.query-meaning__head{
+    margin-bottom:5px;
+    font-size:18px
+}
+.query-meaning__head .-red{
+    color:#840000
+}
+.query-meaning__badge{
+    display:inline-block;
+    margin-left:5px;
+    padding:0 10px;
+    border-radius:4px;
+    background-color:#dbdbdb;
+    color:#68cfbf;
+    font-size:16px;
+    font-style:italic;
+    font-weight:600
+}
+.query-meaning__label{
+    color:#68cfbf
+}
+.query-meaning__label:hover{
+    text-decoration:underline
+}
+.query-statistic{
+    display:block;
+    margin:25px auto 45px
+}
+.query-tag{
+    display:inline-block;
+    margin:10px 20px;
+    transition:0.2s;
+    color:#07293f;
+    font-size:18px;
+    text-align:center;
+    text-decoration:none
+}
+.query-tag:hover{
+    color:#68cfbf
+}
+.queryResults{
+    padding:66px 0
+}
+.queryResults__container{
+    width:100%;
+    max-width:1170px;
+    margin:0 auto;
+    padding:0 15px
+}
+.queryResults__container::before,.queryResults__container::after{
+    display:table;
+    content:" "
+}
+.queryResults__container::after{
+    clear:both
+}
+@media (max-width: 969px){
+    .queryResults__container{
+        padding:0 20px
+    }
+}
+.queryResults__head{
+    display:flex;
+    flex-wrap:wrap;
+    align-items:center;
+    margin-bottom:45px;
+    padding-bottom:25px;
+    border-bottom:1px dashed #b6bfc4
+}
+@media (max-width: 767px){
+    .queryResults__head-left{
+        width:100%;
+        margin-bottom:20px
+    }
+}
+@media (max-width: 767px){
+    .queryResults__head-right{
+        display:flex;
+        justify-content:center;
+        width:100%
+    }
+}
+@media (min-width: 768px){
+    .queryResults__head-right{
+        margin-left:auto;
+        justify-self:flex-end
+    }
+}
+.queryResults__title{
+    font-family:"Cormorant Garamond", serif;
+    color:#07293f;
+    font-size:36px;
+    font-weight:700
+}
+@media (max-width: 767px){
+    .queryResults__title{
+        text-align:center
+    }
+}
+.queryResults__subtitle{
+    color:#07293f;
+    font-size:18px
+}
+@media (max-width: 767px){
+    .queryResults__subtitle{
+        text-align:center
+    }
+}
+.queryResults__button{
+    font-family:"Lato", sans-serif;
+    display:inline-flex;
+    align-items:center;
+    justify-content:center;
+    min-height:40px;
+    padding:0 25px;
+    transition:0.2s;
+    border:1px solid #68cfbf;
+    border-radius:6px;
+    background-color:#68cfbf;
+    color:#fff;
+    font-size:18px;
+    font-weight:bold;
+    line-height:1;
+    text-decoration:none;
+    cursor:pointer;
+    min-width:225px
+}
+.queryResults__button:hover{
+    background-color:#41c3af
+}
+.queryResults__button:active{
+    background-color:#41c3af
+}
+.queryResults__stats{
+    margin-bottom:35px;
+    color:#07293f;
+    font-size:24px;
+    font-weight:700;
+    text-align:center
+}
+.queryResults__content{
+    max-width:840px;
+    margin:0 auto;
+    padding:0 15px
+}
+.queryResults__item{
+    position:relative;
+    margin-bottom:35px
+}
+.queryResults__item::before{
+    display:block;
+    position:absolute;
+    top:8px;
+    left:-23px;
+    width:8px;
+    height:8px;
+    border-radius:50%;
+    background-color:#68cfbf;
+    content:""
+}
+.queryResults__item:last-child{
+    margin-bottom:0
+}
+.queryResults__text{
+    color:#234153;
+    font-size:18px
+}
+.queryResults__text b{
+    font-weight:600
+}
+.queryResults__text i{
+    font-style:italic
+}
+.queryResults__text span{
+    padding:0 5px;
+    color:#68cfbf;
+    font-size:18px;
+    font-style:italic;
+    font-weight:600
+}
+.queryResults__text span.-background{
+    border-radius:3px;
+    background-color:#dbdbdb
+}
+.queryResults__see{
+    color:#07293f;
+    font-size:18px
+}
+.queryResults__link{
+    color:#07293f;
+    font-weight:700;
+    text-decoration:underline
+}
+.queryResults__link:hover{
+    text-decoration:none
+}
\ No newline at end of file
diff --git a/spxvii/spxvii.js b/spxvii/spxvii.js
new file mode 100644
index 0000000..c827d5a
--- /dev/null
+++ b/spxvii/spxvii.js
@@ -0,0 +1,41 @@
+function Spxvii(data) {
+  $('div.query__content').hide();  
+  $('div.query-label').on('click',  function() {
+    let click = $(this).data('clicks');
+    
+
+    if (!click) {
+        $(this).parent().find('>.query__content').fadeIn('slow');
+      
+    } else {
+        $(this).parent().find('>.query__content').fadeOut('slow');    }
+
+    $(this).data('clicks', !click);
+  });
+  
+  
+}
+
+Spxvii.id = "spxvii";
+
+$(function() {
+    
+   Element.addVisualizer(Spxvii.id, Spxvii);
+    
+  $('#lexp_results').on('mouseup', '#lexpelement_spxvii', function(event) {
+    let lemma = selectWord() || '',
+        lang = $('#lang').val(),
+        data = new Object();
+
+    data.lemma = lemma;
+    data.lang = lang || 'pl';
+    data.left = event.originalEvent.offsetX || 0;
+    data.top = event.originalEvent.clientY - 55 || 0;
+
+    if (lemma.length < 10) {
+      data.left = event.originalEvent.offsetX + 40 || 0;
+    }
+
+    positionTooltip(data);
+  });
+});
\ No newline at end of file
diff --git a/walenty/walenty.css b/walenty/walenty.css
new file mode 100644
index 0000000..125ff45
--- /dev/null
+++ b/walenty/walenty.css
@@ -0,0 +1,58 @@
+#lexpelement_walenty.ace_editor {
+  display: none !important;
+}
+
+.header-title {
+  color: #41423A;
+  font-size: 30px;
+  font-family: 'Saira Semi Condensed', sans-serif;
+}
+
+.table-responsive {
+  width: 90%;
+  margin: 0 auto;
+  padding: 20px 0;
+}
+
+.table {
+  margin: 0;
+  border: 3px solid #B5B5B5;
+  width: auto;
+  min-width: 400px;
+}
+
+.table td,
+.table th {
+  padding: 12px 15px !important;
+}
+
+.td-title,
+.td-header {
+  font-weight: bold;
+  background-color: #D8D8D8;
+  letter-spacing: 1px;
+}
+
+.td-title {
+  text-align: center;
+}
+
+.td-data {
+  background-color: #C8C8C8;
+}
+
+.td-example-data {
+  background-color: white;
+}
+
+[id^='schema'] {
+  cursor: pointer;
+}
+
+.check-icon {
+  float: right;
+  height: 32px;
+  width: 32px;
+  background-image: url('/img/check.png');
+  background-repeat: no-repeat;
+}
\ No newline at end of file
diff --git a/walenty/walenty.js b/walenty/walenty.js
new file mode 100644
index 0000000..845bf96
--- /dev/null
+++ b/walenty/walenty.js
@@ -0,0 +1,318 @@
+function Walenty(data) {
+  console.log(data);
+  // this.showHTML();
+}
+
+Walenty.prototype.showHTML = function(tag) {
+  let data = this.getData('schemata'),
+      dataSemantic = this.getData('meanings');
+
+  $('#lexpelement_walenty').after('<div id="lexpelement_walenty_content"></div>');
+
+  $('#lexpelement_walenty_content').append('<h2 class="header-title"><span lang="pl">Schematy</span><span lang="en">Schemes</span></h2>');
+  $('#lexpelement_walenty_content').append('<div class="decoration"></div>');
+  for (let i = data.length - 1; i >= 0; i--) {
+    this.makeTable(data[i], i);
+  }
+
+  $('#lexpelement_walenty_content').append('<h2 class="header-title"><span lang="pl">Przykłady</span><span lang="en">Examples</span></h2>');
+  $('#lexpelement_walenty_content').append('<div class="decoration"></div>');
+  this.getStrayExamples();
+}
+
+Walenty.prototype.getData = function(value) {
+  let editor = ace.edit("lexpelement_walenty"),
+      code = editor.getValue(),
+      lines = editor.session.doc.getAllLines(),
+      dataArray = new Array(),
+      jsonText = JSON.parse(code);
+  return jsonText[value];
+}
+
+Walenty.prototype.makeTable = function(data, counter) {
+  let tdSchema = '',
+      tdTitle = '',
+      tdData = '',
+      self = this;
+
+  // console.log(data);
+
+  // Text_rep
+  let splittedArray = '',
+      splittedArray2 = '';
+
+  if (data.text_rep.indexOf('imperf: ') > -1) {
+    splittedArray = data.text_rep.split("imperf: ");
+    if (splittedArray[1].indexOf(' + ') > -1) {
+      splittedArray2 = splittedArray[1].split(" + ");
+    }
+  } else if (data.text_rep.indexOf(': ') > -1) {
+    splittedArray = data.text_rep.split(": ");
+    if (splittedArray[1].indexOf(' + ') > -1) {
+      splittedArray2 = splittedArray[1].split(" + ");
+    }
+  }
+
+  let filteredArray = [];
+  splittedArray.forEach(function(singleData, i) {
+    if (singleData.indexOf('{') > -1) {
+      if (singleData.indexOf(' + ') > -1) {
+        singleData.split(' + ').forEach(function(data, i) {
+          filteredArray.push(data);
+        });
+      } else {
+        filteredArray.push(singleData);
+      }
+    }
+  });
+
+  if (splittedArray2 != '') {
+    splittedArray2.forEach(function(singleData, i) {
+      tdTitle += '<td class="td-data">' + singleData.substring(0, singleData.indexOf('{')) + '</td>';
+      tdData += '<td class="td-data">' + singleData.substring(singleData.indexOf('{') + 1, singleData.length - 1) + '</td>';
+    });
+  } else {
+    filteredArray.forEach(function(singleData, i) {
+      if (singleData.indexOf('{') > -1) {
+        tdTitle += '<td class="td-data">' + singleData.substring(0, singleData.indexOf('{')) + '</td>';
+        tdData += '<td class="td-data">' + singleData.substring(singleData.indexOf('{') + 1, singleData.length - 1) + '</td>';
+      }
+    });
+  }
+
+  //Phrases
+  let colSpanner = splittedArray2.length,
+      schemaName = data.opinion;
+
+  switch (data.opinion) {
+    case 'cer':
+      schemaName = "pewny";
+      break;
+    case 'col':
+      schemaName = "potoczny";
+      break;
+    case 'unc':
+      schemaName = "potoczny";
+      break;
+    default:
+      schemaName = '?';
+  }
+
+  let = schemaNameIdPositionStart = data.id.indexOf('.'),
+        schemaNameIdPositionEnd = data.id.indexOf('-'),
+        schemaNameId = data.id.substring(schemaNameIdPositionStart + 1, schemaNameIdPositionEnd);
+  schemaName += ' [' + schemaNameId + ']';
+
+  tdSchema = '<td id="schema-' + counter + '" class="td-data" colspan="' + colSpanner +'">' + schemaName + '<span class="check-icon"></span>' + '</td>';
+  let phrasesArr = new Array();
+  data.positions.forEach(function(singleData) {
+    singleData.phrases.forEach(function(singleData2) {
+      phrasesArr.push('#' + singleData2.id);
+    });
+  });
+
+  let tableData =
+    '<div class="table-responsive">' +
+      '<table class="table table-bordered">' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="td-header"><span lang="pl">Schemat</span><span lang="en">Scheme</span></td>' +
+            tdSchema +
+          '</tr>' +
+          '<tr>' +
+            '<td class="td-header"><span lang="pl">Funkcja</span><span lang="en">Function</span></td>' +
+            tdTitle +
+          '</tr>' +
+          '<tr>' +
+            '<td class="td-header"><span lang="pl">Typy fraz</span><span lang="en">Types of phrases</span></td>' +
+            tdData +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>' +
+    '<div id="info-schema-' + counter + '"></div>';
+
+  $('#lexpelement_walenty_content').append(tableData);
+
+  $('#schema-' + counter).bind('click', function() {
+    let id = $(this).attr('id');
+    console.log(phrasesArr);
+    let examples = self.getData('examples'),
+        tdExample = '',
+        checkArr = new Array();
+
+    for (let i = 0; i < examples.length; i++) {
+      for (let j = 0; j < examples[i].phraseRefs.length; j++) {
+        if (phrasesArr.includes(examples[i].phraseRefs[j])) {
+          if (!checkArr.includes(examples[i].sentence)) {
+            checkArr.push(examples[i].sentence);
+            let = positionStart = examples[i].id.indexOf('.'),
+                  positionEnd = examples[i].id.indexOf('-');
+                  exampleID = examples[i].id.substring(positionStart + 1, positionEnd);
+
+            tdExampleID = '<td class="td-example-data">' + exampleID + '</td>';
+            tdExampleSentence = '<td class="td-example-data">' + examples[i].sentence + '</td>';
+            tdExampleSource = '<td class="td-example-data">' + examples[i].source + '</td>';
+            tdExampleOpinion = '<td class="td-example-data">' + examples[i].opinion + '</td>';
+            tdExample += '<tr>' + tdExampleID + tdExampleSentence + tdExampleSource + tdExampleOpinion + '</tr>';
+          }
+        }
+      }
+    }
+
+    let tableExampleData =
+      '<div class="table-responsive">' +
+        '<table class="table table-bordered">' +
+          '<thead>' +
+            '<tr>' +
+              '<td class="td-header"><span lang="pl">Identyfikator</span><span lang="en">ID</span></td>' +
+              '<td class="td-header"><span lang="pl">Przykład</span><span lang="en">Example</span></td>' +
+              '<td class="td-header"><span lang="pl">Źródło</span><span lang="en">Source</span></td>' +
+              '<td class="td-header"><span lang="pl">Ocena</span><span lang="en">Rating</span></td>' +
+            '</tr>' +
+          '</thead>' +
+          '<tbody>' +
+              tdExample +
+          '</tbody>' +
+        '</table>' +
+      '</div>';
+
+    $('[id^="info-schema"]').each(function() {
+      $(this).empty();
+    });
+
+    if (tdExample == "") {
+      $('#info-' + id).empty();
+      console.log('Brak przykładów');
+    } else {
+      $('#info-' + id).empty().append(tableExampleData);
+    }
+  });
+}
+
+Walenty.prototype.getSemantic = function(data, counter) {
+  let tdFrame = '',
+      tdRole = '',
+      tdSelectionPreferences = '',
+      numberOfColumnsToSpan = 1;
+
+  let semFrames = this.getData('semFrames');
+  $(semFrames).each(function(index, element) {
+    if (element.meanings.includes('#' + data.id)) {
+      numberOfColumnsToSpan = element.arguments.length;
+      tdFrame = '<td colspan="' + numberOfColumnsToSpan + '" class="td-data">DODAC POTOCZNA ALBO PEWNA .. [' + element.id.substring(element.id.indexOf('_') + 1, element.id.indexOf('-')) + ']</td>';
+
+      $(element.arguments).each(function(index, element) {
+        let selectionPreferenceTd = '-';
+        tdRole += '<td class="td-data">' + element.role + '</td>';
+        if (element.predefs[0]) {
+          selectionPreferenceTd = element.predefs[0];
+        }
+        tdSelectionPreferences += '<td class="td-data">' + selectionPreferenceTd + '</td>';
+      });
+    }
+  });
+
+  let thTitle = data.name + '-' + data.variant;
+  let titleSpan = numberOfColumnsToSpan + 1;
+  if (numberOfColumnsToSpan == 1) {
+    titleSpan = numberOfColumnsToSpan;
+  }
+
+  let tableData =
+    '<div class="table-responsive">' +
+      '<table class="table table-bordered">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="td-title" colspan="' + titleSpan + '">' + thTitle + '</th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            '<td class="td-header">Rama</td>' +
+            tdFrame +
+          '</tr>' +
+          '<tr>' +
+            '<td class="td-header">Rola</td>' +
+            tdRole +
+          '</tr>' +
+          '<tr>' +
+            '<td class="td-header">Preferencje selekcyjne</td>' +
+            tdSelectionPreferences +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>' +
+    '<div id="info-semantic-schema-' + counter + '"></div>';
+
+  $('#lexpelement_walenty_content').append(tableData);
+}
+
+Walenty.prototype.getStrayExamples = function() {
+  let examples = this.getData('examples'),
+      strayExamples = '';
+
+  $(examples).each(function(index, element) {
+    if (element.meaning === null) {
+      strayExamples +=
+        '<tr>' +
+          '<td>' + element.id.substring(element.id.indexOf('.') + 1, element.id.indexOf('-')) + '</td>' +
+          '<td>' + element.sentence + '</td>' +
+          '<td>' + element.source + '</td>' +
+          '<td>' + element.opinion + '</td>' +
+        '</tr>';
+    }
+  });
+
+  let tableData =
+    '<div class="table-responsive">' +
+      '<table class="table table-bordered">' +
+        '<thead>' +
+          '<tr>' +
+            '<th class="td-title"><span lang="pl">Identyfikator</span><span lang="en">ID</span></th>' +
+            '<th class="td-title"><span lang="pl">Przykład</span><span lang="en">Example</span></th>' +
+            '<th class="td-title"><span lang="pl">Źródło</span><span lang="en">Source</span></th>' +
+            '<th class="td-title"><span lang="pl">Ocena</span><span lang="en">Rating</span></th>' +
+          '</tr>' +
+        '</thead>' +
+        '<tbody>' +
+          '<tr>' +
+            strayExamples +
+          '</tr>' +
+        '</tbody>' +
+      '</table>' +
+    '</div>';
+
+  $('#lexpelement_walenty_content').append(tableData);
+}
+
+Walenty.id = "walenty";
+
+$(function () {
+  Element.addVisualizer(Walenty.id, Walenty);
+
+  $('#lexp_results').on('click', '#lexpresource_walenty', function() {
+    if ($('#arrow-change-lexpresources_walenty').hasClass('glyphicon-chevron-down')) {
+      $('#lexpelement_walenty_content').hide();
+    } else {
+      $('#lexpelement_walenty_content').show();
+    }
+  });
+
+  $('#lexp_results').on('mouseup', '#lexpelement_walenty_content', function(event) {
+    let lemma = selectWord() || '',
+        lang = $('#lang').val(),
+        data = new Object();
+
+    data.lemma = lemma;
+    data.lang = lang || 'pl';
+    data.left = event.originalEvent.clientX - 80 || 0;
+    data.top = event.originalEvent.clientY - 55 || 0;
+
+    if (lemma.length < 10) {
+      data.left = event.originalEvent.clientX - 65 || 0;
+    }
+
+    positionTooltip(data);
+  });
+});
\ No newline at end of file
diff --git a/word2vec/jqcloud-1.0.4.js b/word2vec/jqcloud-1.0.4.js
new file mode 100644
index 0000000..b6333b2
--- /dev/null
+++ b/word2vec/jqcloud-1.0.4.js
@@ -0,0 +1,235 @@
+/*!
+ * jQCloud Plugin for jQuery
+ *
+ * Version 1.0.4
+ *
+ * Copyright 2011, Luca Ongaro
+ * Licensed under the MIT license.
+ *
+ * Date: 2013-05-09 18:54:22 +0200
+*/
+
+(function( $ ) {
+  "use strict";
+  $.fn.jQCloud = function(word_array, options) {
+    // Reference to the container element
+    var $this = this;
+    // Namespace word ids to avoid collisions between multiple clouds
+    var cloud_namespace = $this.attr('id') || Math.floor((Math.random()*1000000)).toString(36);
+
+    // Default options value
+    var default_options = {
+      width: $this.width(),
+      height: $this.height(),
+      center: {
+        x: ((options && options.width) ? options.width*0.9 : $this.width()) / 2.0,
+        y: ((options && options.height) ? options.height*0.8 : $this.height()) / 2.0
+      },
+      delayedMode: word_array.length > 50,
+      shape: false, // It defaults to elliptic shape
+      encodeURI: true,
+      removeOverflowing: true
+    };
+
+    options = $.extend(default_options, options || {});
+
+    // Add the "jqcloud" class to the container for easy CSS styling, set container width/height
+    $this.addClass("jqcloud").width(options.width).height(options.height);
+
+    // Container's CSS position cannot be 'static'
+    if ($this.css("position") === "static") {
+      $this.css("position", "relative");
+    }
+
+    var drawWordCloud = function() {
+      // Helper function to test if an element overlaps others
+      var hitTest = function(elem, other_elems) {
+        // Pairwise overlap detection
+        var overlapping = function(a, b) {
+          if (Math.abs(2.0*a.offsetLeft + a.offsetWidth - 2.0*b.offsetLeft - b.offsetWidth) < a.offsetWidth + b.offsetWidth) {
+            if (Math.abs(2.0*a.offsetTop + a.offsetHeight - 2.0*b.offsetTop - b.offsetHeight) < a.offsetHeight + b.offsetHeight) {
+              return true;
+            }
+          }
+          return false;
+        };
+        var i = 0;
+        // Check elements for overlap one by one, stop and return false as soon as an overlap is found
+        for(i = 0; i < other_elems.length; i++) {
+          if (overlapping(elem, other_elems[i])) {
+            return true;
+          }
+        }
+        return false;
+      };
+
+      // Make sure every weight is a number before sorting
+      for (var i = 0; i < word_array.length; i++) {
+        word_array[i].weight = parseFloat(word_array[i].weight, 10);
+      }
+
+      // Sort word_array from the word with the highest weight to the one with the lowest
+      word_array.sort(function(a, b) { if (a.weight < b.weight) {return 1;} else if (a.weight > b.weight) {return -1;} else {return 0;} });
+
+      var step = (options.shape === "rectangular") ? 18.0 : 2.0,
+          already_placed_words = [],
+          aspect_ratio = options.width / options.height;
+
+      // Function to draw a word, by moving it in spiral until it finds a suitable empty place. This will be iterated on each word.
+      var drawOneWord = function(index, word) {
+        // Define the ID attribute of the span that will wrap the word, and the associated jQuery selector string
+        var word_id = cloud_namespace + "_word_" + index,
+            word_selector = "#" + word_id,
+            angle = 6.28 * Math.random(),
+            radius = 0.0,
+
+            // Only used if option.shape == 'rectangular'
+            steps_in_direction = 0.0,
+            quarter_turns = 0.0,
+
+            weight = 5,
+            custom_class = "",
+            inner_html = "",
+            word_span;
+
+        // Extend word html options with defaults
+        word.html = $.extend(word.html, {id: word_id});
+
+        // If custom class was specified, put them into a variable and remove it from html attrs, to avoid overwriting classes set by jQCloud
+        if (word.html && word.html["class"]) {
+          custom_class = word.html["class"];
+          delete word.html["class"];
+        }
+
+        // Check if min(weight) > max(weight) otherwise use default
+        if (word_array[0].weight > word_array[word_array.length - 1].weight) {
+          // Linearly map the original weight to a discrete scale from 1 to 10
+          weight = Math.round((word.weight - word_array[word_array.length - 1].weight) /
+                              (word_array[0].weight - word_array[word_array.length - 1].weight) * 9.0) + 1;
+        }
+        word_span = $('<span>').attr(word.html).addClass('w' + weight + " " + custom_class);
+
+        // Append link if word.url attribute was set
+        if (word.link) {
+          // If link is a string, then use it as the link href
+          if (typeof word.link === "string") {
+            word.link = {href: word.link};
+          }
+
+          // Extend link html options with defaults
+          if ( options.encodeURI ) {
+            word.link = $.extend(word.link, { href: encodeURI(word.link.href).replace(/'/g, "%27") });
+          }
+
+          inner_html = $('<a>').attr(word.link).text(word.text);
+        } else {
+          inner_html = word.text;
+        }
+        word_span.append(inner_html);
+
+        // Bind handlers to words
+        if (!!word.handlers) {
+          for (var prop in word.handlers) {
+            if (word.handlers.hasOwnProperty(prop) && typeof word.handlers[prop] === 'function') {
+              $(word_span).bind(prop, word.handlers[prop]);
+            }
+          }
+        }
+
+        $this.append(word_span);
+
+        var width = word_span.width(),
+            height = word_span.height(),
+            left = options.center.x - width / 2.0,
+            top = options.center.y - height / 2.0;
+            
+            
+
+        // Save a reference to the style property, for better performance
+        var word_style = word_span[0].style;
+        word_style.position = "absolute";
+        word_style.left = left + "px";
+        word_style.top = top + "px";
+
+        while(hitTest(word_span[0], already_placed_words)) {
+          // option shape is 'rectangular' so move the word in a rectangular spiral
+          if (options.shape === "rectangular") {
+            steps_in_direction++;
+            if (steps_in_direction * step > (1 + Math.floor(quarter_turns / 2.0)) * step * ((quarter_turns % 4 % 2) === 0 ? 1 : aspect_ratio)) {
+              steps_in_direction = 0.0;
+              quarter_turns++;
+            }
+            switch(quarter_turns % 4) {
+              case 1:
+                left += step * aspect_ratio + Math.random() * 2.0;
+                break;
+              case 2:
+                top -= 2*step + Math.random() * 2.0;
+                break;
+              case 3:
+                left -= step * aspect_ratio + Math.random() * 2.0;
+                break;
+              case 0:
+                top += 2*step + Math.random() * 2.0;
+                break;
+                
+            }
+          } else { // Default settings: elliptic spiral shape
+            radius += step;
+            angle += (index % 2 === 0 ? 1 : -1)*step;
+
+            left = options.center.x - (width / 2.0) + (radius*Math.cos(angle)) * aspect_ratio;
+            top = options.center.y + radius*Math.sin(angle) - (height / 2.0);
+          }
+          word_style.left = left + "px";
+          word_style.top = top + "px";
+        }
+
+        // Don't render word if part of it would be outside the container
+        if (options.removeOverflowing && (left < 0 || top < 0 || (left + width) > options.width || (top + height) > options.height)) {
+          word_span.remove()
+          return;
+        }
+
+
+        already_placed_words.push(word_span[0]);
+
+        // Invoke callback if existing
+        if ($.isFunction(word.afterWordRender)) {
+          word.afterWordRender.call(word_span);
+        }
+      };
+
+      var drawOneWordDelayed = function(index) {
+        index = index || 0;
+        if (!$this.is(':visible')) { // if not visible then do not attempt to draw
+          setTimeout(function(){drawOneWordDelayed(index);},10);
+          return;
+        }
+        if (index < word_array.length) {
+          drawOneWord(index, word_array[index]);
+          setTimeout(function(){drawOneWordDelayed(index + 1);}, 10);
+        } else {
+          if ($.isFunction(options.afterCloudRender)) {
+            options.afterCloudRender.call($this);
+          }
+        }
+      };
+
+      // Iterate drawOneWord on every word. The way the iteration is done depends on the drawing mode (delayedMode is true or false)
+      if (options.delayedMode){
+        drawOneWordDelayed();
+      }
+      else {
+        $.each(word_array, drawOneWord);
+        if ($.isFunction(options.afterCloudRender)) {
+          options.afterCloudRender.call($this);
+        }
+      }
+    };
+
+    // Delay execution so that the browser can render the page before the computatively intensive word cloud drawing
+    setTimeout(function(){drawWordCloud();}, 10);
+    return $this;
+  };
+})(jQuery);
diff --git a/word2vec/jqcloud.css b/word2vec/jqcloud.css
new file mode 100644
index 0000000..f6413c9
--- /dev/null
+++ b/word2vec/jqcloud.css
@@ -0,0 +1,49 @@
+/* fonts */
+
+div.jqcloud {
+  font-family: "Helvetica", "Arial", sans-serif;
+  font-size: 10px;
+  line-height: normal;
+}
+
+div.jqcloud a {
+  font-size: inherit;
+  text-decoration: none;
+}
+
+div.jqcloud span.w10 { font-size: 550%; }
+div.jqcloud span.w9 { font-size: 500%; }
+div.jqcloud span.w8 { font-size: 450%; }
+div.jqcloud span.w7 { font-size: 400%; }
+div.jqcloud span.w6 { font-size: 350%; }
+div.jqcloud span.w5 { font-size: 300%; }
+div.jqcloud span.w4 { font-size: 250%; }
+div.jqcloud span.w3 { font-size: 200%; }
+div.jqcloud span.w2 { font-size: 150%; }
+div.jqcloud span.w1 { font-size: 100%; }
+
+/* colors */
+
+div.jqcloud { color: #009f00; } 
+div.jqcloud a { color: inherit; }
+div.jqcloud a:hover { color: #00df00; }
+div.jqcloud a:hover { color: #00cf00; }
+div.jqcloud span.w10 { color: #00cf00; }
+div.jqcloud span.w9 { color: #00cf00; }
+div.jqcloud span.w8 { color: #00cf00; }
+div.jqcloud span.w7 { color: #039d00; }
+div.jqcloud span.w6 { color: #10c5f00; }
+div.jqcloud span.w5 { color: #10a000; }
+div.jqcloud span.w4 { color: #10c500; }
+div.jqcloud span.w3 { color: #10dd00; }
+div.jqcloud span.w2 { color: #19cc00; }
+div.jqcloud span.w1 { color: #1ab500; }
+
+/* layout */
+
+div.jqcloud {
+  overflow: hidden;
+  position: relative;
+}
+
+div.jqcloud span { padding: 0; }
\ No newline at end of file
diff --git a/word2vec/jqcloud.js b/word2vec/jqcloud.js
new file mode 100644
index 0000000..32fb28a
--- /dev/null
+++ b/word2vec/jqcloud.js
@@ -0,0 +1,548 @@
+/*!
+ * jQCloud 2.0.3
+ * Copyright 2011 Luca Ongaro (http://www.lucaongaro.eu)
+ * Copyright 2013 Daniel White (http://www.developerdan.com)
+ * Copyright 2014-2017 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
+ * Licensed under MIT (http://opensource.org/licenses/MIT)
+ */
+(function(root, factory) {
+    if (typeof define === 'function' && define.amd) {
+        define(['jquery'], factory);
+    }
+    else if (typeof module === 'object' && module.exports) {
+        module.exports = factory(require('jquery'));
+    }
+    else {
+        factory(root.jQuery);
+    }
+}(this, function($) {
+'use strict';
+
+/*
+ * Plugin class
+ */
+var jQCloud = function(element, word_array, options) {
+    this.$element = $(element);
+
+    this.word_array = word_array || [];
+    this.options = options;
+
+    this.sizeGenerator = null;
+    this.colorGenerator = null;
+
+    // Data used internally
+    this.data = {
+        placed_words: [],
+        timeouts: {},
+        namespace: null,
+        step: null,
+        angle: null,
+        aspect_ratio: null,
+        max_weight: null,
+        min_weight: null,
+        sizes: [],
+        colors: []
+    };
+
+    this.initialize();
+};
+
+jQCloud.DEFAULTS = {
+    width: 100,
+    height: 100,
+    center: { x: 0.5, y: 0.5 },
+    steps: 10,
+    delay: null,
+    shape: 'elliptic',
+    classPattern: 'w{n}',
+    encodeURI: true,
+    removeOverflowing: true,
+    afterCloudRender: null,
+    autoResize: false,
+    colors: null,
+    fontSize: null,
+    template: null
+};
+
+jQCloud.prototype = {
+    initialize: function() {
+        // Set/Get dimensions
+        if (this.options.width) {
+            this.$element.width(this.options.width);
+        }
+        else {
+            this.options.width = this.$element.width();
+        }
+        if (this.options.height) {
+            this.$element.height(this.options.height);
+        }
+        else {
+            this.options.height = this.$element.height();
+        }
+
+        // Default options value
+        this.options = $.extend(true, {}, jQCloud.DEFAULTS, this.options);
+
+        // Ensure delay
+        if (this.options.delay === null) {
+            this.options.delay = this.word_array.length > 50 ? 10 : 0;
+        }
+
+        // Backward compatibility
+        if (this.options.center.x > 1) {
+            this.options.center.x = this.options.center.x / this.options.width;
+            this.options.center.y = this.options.center.y / this.options.height;
+        }
+
+        // Create colorGenerator function from options
+        // Direct function
+        if (typeof this.options.colors == 'function') {
+            this.colorGenerator = this.options.colors;
+        }
+        // Array of sizes
+        else if ($.isArray(this.options.colors)) {
+            var cl = this.options.colors.length;
+            if (cl > 0) {
+                // Fill the sizes array to X items
+                if (cl < this.options.steps) {
+                    for (var i = cl; i < this.options.steps; i++) {
+                        this.options.colors[i] = this.options.colors[cl - 1];
+                    }
+                }
+
+                this.colorGenerator = function(weight) {
+                    return this.options.colors[this.options.steps - weight];
+                };
+            }
+        }
+
+        // Create sizeGenerator function from options
+        // Direct function
+        if (typeof this.options.fontSize == 'function') {
+            this.sizeGenerator = this.options.fontSize;
+        }
+        // Object with 'from' and 'to'
+        else if ($.isPlainObject(this.options.fontSize)) {
+            this.sizeGenerator = function(width, height, weight) {
+                var max = width * this.options.fontSize.from,
+                    min = width * this.options.fontSize.to;
+                return Math.round(min + (max - min) * 1.0 / (this.options.steps - 1) * (weight - 1)) + 'px';
+            };
+        }
+        // Array of sizes
+        else if ($.isArray(this.options.fontSize)) {
+            var sl = this.options.fontSize.length;
+            if (sl > 0) {
+                // Fill the sizes array to X items
+                if (sl < this.options.steps) {
+                    for (var j = sl; j < this.options.steps; j++) {
+                        this.options.fontSize[j] = this.options.fontSize[sl - 1];
+                    }
+                }
+
+                this.sizeGenerator = function(width, height, weight) {
+                    return this.options.fontSize[this.options.steps - weight];
+                };
+            }
+        }
+
+        this.data.angle = Math.random() * 6.28;
+        this.data.step = (this.options.shape === 'rectangular') ? 18.0 : 2.0;
+        this.data.aspect_ratio = this.options.width / this.options.height;
+        this.clearTimeouts();
+
+        // Namespace word ids to avoid collisions between multiple clouds
+        this.data.namespace = (this.$element.attr('id') || Math.floor((Math.random() * 1000000)).toString(36)) + '_word_';
+
+        this.$element.addClass('jqcloud');
+
+        // Container's CSS position cannot be 'static'
+        if (this.$element.css('position') === 'static') {
+            this.$element.css('position', 'relative');
+        }
+
+        // Delay execution so that the browser can render the page before the computatively intensive word cloud drawing
+        this.createTimeout($.proxy(this.drawWordCloud, this), 10);
+
+        // Attach window resize event
+        if (this.options.autoResize) {
+            $(window).on('resize.' + this.data.namespace, throttle(this.resize, 50, this));
+        }
+    },
+
+    // Helper function to keep track of timeouts so they can be destroyed
+    createTimeout: function(callback, time) {
+        var timeout = setTimeout($.proxy(function() {
+            delete this.data.timeouts[timeout];
+            callback();
+        }, this), time);
+        this.data.timeouts[timeout] = true;
+    },
+
+    // Destroy all timeouts
+    clearTimeouts: function() {
+        $.each(this.data.timeouts, function(key) {
+            clearTimeout(key);
+        });
+        this.data.timeouts = {};
+    },
+
+    // Pairwise overlap detection
+    overlapping: function(a, b) {
+        if (Math.abs(2.0 * a.left + a.width - 2.0 * b.left - b.width) < a.width + b.width) {
+            if (Math.abs(2.0 * a.top + a.height - 2.0 * b.top - b.height) < a.height + b.height) {
+                return true;
+            }
+        }
+        return false;
+    },
+
+    // Helper function to test if an element overlaps others
+    hitTest: function(elem) {
+        // Check elements for overlap one by one, stop and return false as soon as an overlap is found
+        for (var i = 0, l = this.data.placed_words.length; i < l; i++) {
+            if (this.overlapping(elem, this.data.placed_words[i])) {
+                return true;
+            }
+        }
+        return false;
+    },
+
+    // Initialize the drawing of the whole cloud
+    drawWordCloud: function() {
+        var i, l;
+
+        this.$element.children('[id^="' + this.data.namespace + '"]').remove();
+
+        if (this.word_array.length === 0) {
+            return;
+        }
+
+        // Make sure every weight is a number before sorting
+        for (i = 0, l = this.word_array.length; i < l; i++) {
+            this.word_array[i].weight = parseFloat(this.word_array[i].weight, 10);
+        }
+
+        // Sort word_array from the word with the highest weight to the one with the lowest
+        this.word_array.sort(function(a, b) {
+            return b.weight - a.weight;
+        });
+
+        // Kepp trace of bounds
+        this.data.max_weight = this.word_array[0].weight;
+        this.data.min_weight = this.word_array[this.word_array.length - 1].weight;
+
+        // Generate colors
+        this.data.colors = [];
+        if (this.colorGenerator) {
+            for (i = 0; i < this.options.steps; i++) {
+                this.data.colors.push(this.colorGenerator(i + 1));
+            }
+        }
+
+        // Generate font sizes
+        this.data.sizes = [];
+        if (this.sizeGenerator) {
+            for (i = 0; i < this.options.steps; i++) {
+                this.data.sizes.push(this.sizeGenerator(this.options.width, this.options.height, i + 1));
+            }
+        }
+
+        // Iterate drawOneWord on every word, immediately or with delay
+        if (this.options.delay > 0) {
+            this.drawOneWordDelayed();
+        }
+        else {
+            for (i = 0, l = this.word_array.length; i < l; i++) {
+                this.drawOneWord(i, this.word_array[i]);
+            }
+
+            if (typeof this.options.afterCloudRender === 'function') {
+                this.options.afterCloudRender.call(this.$element);
+            }
+        }
+    },
+
+    // Function to draw a word, by moving it in spiral until it finds a suitable empty place
+    drawOneWord: function(index, word) {
+        var word_id = this.data.namespace + index,
+            word_selector = '#' + word_id,
+
+        // option.shape == 'elliptic'
+            angle = this.data.angle,
+            radius = 0.0,
+
+        // option.shape == 'rectangular'
+            steps_in_direction = 0.0,
+            quarter_turns = 0.0,
+
+            weight = Math.floor(this.options.steps / 2),
+            word_span,
+            word_size,
+            word_style;
+
+        // Create word attr object
+        word.attr = $.extend({}, word.html, { id: word_id });
+
+        // Linearly map the original weight to a discrete scale from 1 to 10
+        // Only if weights are different
+        if (this.data.max_weight != this.data.min_weight) {
+            weight = Math.round((word.weight - this.data.min_weight) * 1.0 * (this.options.steps - 1) / (this.data.max_weight - this.data.min_weight)) + 1;
+        }
+        word_span = $('<span>').attr(word.attr);
+
+        word_span.addClass('jqcloud-word');
+
+        // Apply class
+        if (this.options.classPattern) {
+            word_span.addClass(this.options.classPattern.replace('{n}', weight));
+        }
+
+        // Apply color
+        if (this.data.colors.length) {
+            word_span.css('color', this.data.colors[weight - 1]);
+        }
+
+        // Apply color from word property
+        if (word.color) {
+            word_span.css('color', word.color);
+        }
+
+        // Apply size
+        if (this.data.sizes.length) {
+            word_span.css('font-size', this.data.sizes[weight - 1]);
+        }
+
+        //Render using template function if provided.
+        if (this.options.template) {
+            word_span.html(this.options.template(word));
+        } else if (word.link) {
+            // Append link if word.link attribute was set
+            // If link is a string, then use it as the link href
+            if (typeof word.link === 'string') {
+                word.link = { href: word.link };
+            }
+
+            if (this.options.encodeURI) {
+                word.link.href = encodeURI(word.link.href).replace(/'/g, '%27');
+            }
+
+            word_span.append($('<a>').attr(word.link).text(word.text));
+        }
+        else {
+            word_span.text(word.text);
+        }
+
+        // Bind handlers to words
+        if (word.handlers) {
+            word_span.on(word.handlers);
+        }
+
+        this.$element.append(word_span);
+        console.log(word_span);
+        word_size = {
+            width: word_span[0].offsetWidth,
+            height: word_span[0].offsetHeight
+        };
+        
+        word_size.left = this.options.center.x * this.options.width - word_size.width / 2.0;
+        word_size.top = this.options.center.y * this.options.height - word_size.height / 2.0;
+        
+        
+        // Save a reference to the style property, for better performance
+        word_style = word_span[0].style;
+        word_style.position = 'absolute';
+        word_style.left = word_size.left + 'px';
+        word_style.top = word_size.top + 'px';
+
+        while (this.hitTest(word_size)) {
+            // option shape is 'rectangular' so move the word in a rectangular spiral
+            if (this.options.shape === 'rectangular') {
+                steps_in_direction++;
+
+                if (steps_in_direction * this.data.step > (1 + Math.floor(quarter_turns / 2.0)) * this.data.step * ((quarter_turns % 4 % 2) === 0 ? 1 : this.data.aspect_ratio)) {
+                    steps_in_direction = 0.0;
+                    quarter_turns++;
+                }
+
+                switch (quarter_turns % 4) {
+                    case 1:
+                        word_size.left += this.data.step * this.data.aspect_ratio + Math.random() * 2.0;
+                        break;
+                    case 2:
+                        word_size.top -= this.data.step + Math.random() * 2.0;
+                        break;
+                    case 3:
+                        word_size.left -= this.data.step * this.data.aspect_ratio + Math.random() * 2.0;
+                        break;
+                    case 0:
+                        word_size.top += this.data.step + Math.random() * 2.0;
+                        break;
+                }
+            }
+            // Default settings: elliptic spiral shape
+            else {
+                radius += this.data.step;
+                angle += (index % 2 === 0 ? 1 : -1) * this.data.step;
+
+                word_size.left = this.options.center.x * this.options.width - (word_size.width / 2.0) + (radius * Math.cos(angle)) * this.data.aspect_ratio;
+                word_size.top = this.options.center.y * this.options.height + radius * Math.sin(angle) - (word_size.height / 2.0);
+            }
+            word_style.left = word_size.left + 'px';
+            word_style.top = word_size.top + 'px';
+        }
+
+        // Don't render word if part of it would be outside the container
+        if (this.options.removeOverflowing && (
+                word_size.left < 0 || word_size.top < 0 ||
+                (word_size.left + word_size.width) > this.options.width ||
+                (word_size.top + word_size.height) > this.options.height
+            )
+        ) {
+            word_span.remove();
+            return;
+        }
+
+        // Save position for further usage
+        this.data.placed_words.push(word_size);
+
+        if (typeof word.afterWordRender === 'function') {
+            word.afterWordRender.call(word_span);
+        }
+    },
+
+    // Draw one word then recall the function after a delay
+    drawOneWordDelayed: function(index) {
+        index = index || 0;
+
+        // if not visible then do not attempt to draw
+        if (!this.$element.is(':visible')) {
+            this.createTimeout($.proxy(function() {
+                this.drawOneWordDelayed(index);
+            }, this), 10);
+
+            return;
+        }
+
+        if (index < this.word_array.length) {
+            this.drawOneWord(index, this.word_array[index]);
+
+            this.createTimeout($.proxy(function() {
+                this.drawOneWordDelayed(index + 1);
+            }, this), this.options.delay);
+        }
+        else {
+            if (typeof this.options.afterCloudRender == 'function') {
+                this.options.afterCloudRender.call(this.$element);
+            }
+        }
+    },
+
+    // Destroy any data and objects added by the plugin
+    destroy: function() {
+        if (this.options.autoResize) {
+            $(window).off('resize.' + this.data.namespace);
+        }
+
+        this.clearTimeouts();
+        this.$element.removeClass('jqcloud');
+        this.$element.removeData('jqcloud');
+        this.$element.children('[id^="' + this.data.namespace + '"]').remove();
+    },
+
+    // Update the list of words
+    update: function(word_array) {
+        this.word_array = word_array;
+        this.data.placed_words = [];
+
+        this.clearTimeouts();
+        this.drawWordCloud();
+    },
+
+    resize: function() {
+        var new_size = {
+            width: this.$element.width(),
+            height: this.$element.height()
+        };
+
+        if (new_size.width != this.options.width || new_size.height != this.options.height) {
+            this.options.width = new_size.width;
+            this.options.height = new_size.height;
+            this.data.aspect_ratio = this.options.width / this.options.height;
+
+            this.update(this.word_array);
+        }
+    },
+};
+
+/*
+ * Apply throttling to a callback
+ * @param callback {function}
+ * @param delay {int} milliseconds
+ * @param context {object|null}
+ * @return {function}
+ */
+function throttle(callback, delay, context) {
+    var state = {
+        pid: null,
+        last: 0
+    };
+
+    return function() {
+        var elapsed = new Date().getTime() - state.last,
+            args = arguments,
+            that = this;
+
+        function exec() {
+            state.last = new Date().getTime();
+            return callback.apply(context || that, Array.prototype.slice.call(args));
+        }
+
+        if (elapsed > delay) {
+            return exec();
+        }
+        else {
+            clearTimeout(state.pid);
+            state.pid = setTimeout(exec, delay - elapsed);
+        }
+    };
+}
+
+/*
+ * jQuery plugin
+ */
+$.fn.jQCloud = function(word_array, option) {
+    var args = arguments;
+
+    return this.each(function() {
+        var $this = $(this),
+            data = $this.data('jqcloud');
+
+        if (!data && word_array === 'destroy') {
+            // Don't even try to initialize when called with 'destroy'
+            return;
+        }
+        if (!data) {
+            var options = typeof option === 'object' ? option : {};
+            $this.data('jqcloud', (data = new jQCloud(this, word_array, options)));
+        }
+        else if (typeof word_array === 'string') {
+            data[word_array].apply(data, Array.prototype.slice.call(args, 1));
+        }
+    });
+};
+
+$.fn.jQCloud.defaults = {
+    set: function(options) {
+        $.extend(true, jQCloud.DEFAULTS, options);
+    },
+    get: function(key) {
+        var options = jQCloud.DEFAULTS;
+        if (key) {
+            options = options[key];
+        }
+        return $.extend(true, {}, options);
+    }
+};
+
+}));
\ No newline at end of file
diff --git a/word2vec/jqcloud.min.css b/word2vec/jqcloud.min.css
new file mode 100644
index 0000000..f1c3d97
--- /dev/null
+++ b/word2vec/jqcloud.min.css
@@ -0,0 +1 @@
+.jqcloud{font:10px Helvetica,Arial,sans-serif;line-height:normal;overflow:hidden;position:relative}.jqcloud-word{margin:0;padding:0}.jqcloud-word.w1{color:#aab5f0;font-size:100%}.jqcloud-word.w2{color:#9ce;font-size:150%}.jqcloud-word.w3{color:#a0ddff;font-size:200%}.jqcloud-word.w4{color:#90c5f0;font-size:250%}.jqcloud-word.w5{color:#90a0dd;font-size:300%}.jqcloud-word.w6{color:#90c5f0;font-size:350%}.jqcloud-word.w7{color:#39d;font-size:400%}.jqcloud-word.w8{color:#0cf;font-size:450%}.jqcloud-word.w9{color:#0cf;font-size:500%}.jqcloud-word.w10{color:#0cf;font-size:550%}.jqcloud-word a{color:inherit;font-size:inherit;text-decoration:none}.jqcloud-word a:hover{color:#0cf}
\ No newline at end of file
diff --git a/word2vec/jqcloud.min.js b/word2vec/jqcloud.min.js
new file mode 100644
index 0000000..4e3b163
--- /dev/null
+++ b/word2vec/jqcloud.min.js
@@ -0,0 +1,8 @@
+/*!
+ * jQCloud 2.0.3
+ * Copyright 2011 Luca Ongaro (http://www.lucaongaro.eu)
+ * Copyright 2013 Daniel White (http://www.developerdan.com)
+ * Copyright 2014-2017 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
+ * Licensed under MIT (http://opensource.org/licenses/MIT)
+ */
+!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){"use strict";function b(a,b,c){var d={pid:null,last:0};return function(){function e(){return d.last=(new Date).getTime(),a.apply(c||h,Array.prototype.slice.call(g))}var f=(new Date).getTime()-d.last,g=arguments,h=this;return f>b?e():(clearTimeout(d.pid),void(d.pid=setTimeout(e,b-f)))}}var c=function(b,c,d){this.$element=a(b),this.word_array=c||[],this.options=d,this.sizeGenerator=null,this.colorGenerator=null,this.data={placed_words:[],timeouts:{},namespace:null,step:null,angle:null,aspect_ratio:null,max_weight:null,min_weight:null,sizes:[],colors:[]},this.initialize()};c.DEFAULTS={width:100,height:100,center:{x:.5,y:.5},steps:10,delay:null,shape:"elliptic",classPattern:"w{n}",encodeURI:!0,removeOverflowing:!0,afterCloudRender:null,autoResize:!1,colors:null,fontSize:null,template:null},c.prototype={initialize:function(){if(this.options.width?this.$element.width(this.options.width):this.options.width=this.$element.width(),this.options.height?this.$element.height(this.options.height):this.options.height=this.$element.height(),this.options=a.extend(!0,{},c.DEFAULTS,this.options),null===this.options.delay&&(this.options.delay=this.word_array.length>50?10:0),this.options.center.x>1&&(this.options.center.x=this.options.center.x/this.options.width,this.options.center.y=this.options.center.y/this.options.height),"function"==typeof this.options.colors)this.colorGenerator=this.options.colors;else if(a.isArray(this.options.colors)){var d=this.options.colors.length;if(d>0){if(d<this.options.steps)for(var e=d;e<this.options.steps;e++)this.options.colors[e]=this.options.colors[d-1];this.colorGenerator=function(a){return this.options.colors[this.options.steps-a]}}}if("function"==typeof this.options.fontSize)this.sizeGenerator=this.options.fontSize;else if(a.isPlainObject(this.options.fontSize))this.sizeGenerator=function(a,b,c){var d=a*this.options.fontSize.from,e=a*this.options.fontSize.to;return Math.round(e+1*(d-e)/(this.options.steps-1)*(c-1))+"px"};else if(a.isArray(this.options.fontSize)){var f=this.options.fontSize.length;if(f>0){if(f<this.options.steps)for(var g=f;g<this.options.steps;g++)this.options.fontSize[g]=this.options.fontSize[f-1];this.sizeGenerator=function(a,b,c){return this.options.fontSize[this.options.steps-c]}}}this.data.angle=6.28*Math.random(),this.data.step="rectangular"===this.options.shape?18:2,this.data.aspect_ratio=this.options.width/this.options.height,this.clearTimeouts(),this.data.namespace=(this.$element.attr("id")||Math.floor(1e6*Math.random()).toString(36))+"_word_",this.$element.addClass("jqcloud"),"static"===this.$element.css("position")&&this.$element.css("position","relative"),this.createTimeout(a.proxy(this.drawWordCloud,this),10),this.options.autoResize&&a(window).on("resize."+this.data.namespace,b(this.resize,50,this))},createTimeout:function(b,c){var d=setTimeout(a.proxy(function(){delete this.data.timeouts[d],b()},this),c);this.data.timeouts[d]=!0},clearTimeouts:function(){a.each(this.data.timeouts,function(a){clearTimeout(a)}),this.data.timeouts={}},overlapping:function(a,b){return Math.abs(2*a.left+a.width-2*b.left-b.width)<a.width+b.width&&Math.abs(2*a.top+a.height-2*b.top-b.height)<a.height+b.height},hitTest:function(a){for(var b=0,c=this.data.placed_words.length;b<c;b++)if(this.overlapping(a,this.data.placed_words[b]))return!0;return!1},drawWordCloud:function(){var a,b;if(this.$element.children('[id^="'+this.data.namespace+'"]').remove(),0!==this.word_array.length){for(a=0,b=this.word_array.length;a<b;a++)this.word_array[a].weight=parseFloat(this.word_array[a].weight,10);if(this.word_array.sort(function(a,b){return b.weight-a.weight}),this.data.max_weight=this.word_array[0].weight,this.data.min_weight=this.word_array[this.word_array.length-1].weight,this.data.colors=[],this.colorGenerator)for(a=0;a<this.options.steps;a++)this.data.colors.push(this.colorGenerator(a+1));if(this.data.sizes=[],this.sizeGenerator)for(a=0;a<this.options.steps;a++)this.data.sizes.push(this.sizeGenerator(this.options.width,this.options.height,a+1));if(this.options.delay>0)this.drawOneWordDelayed();else{for(a=0,b=this.word_array.length;a<b;a++)this.drawOneWord(a,this.word_array[a]);"function"==typeof this.options.afterCloudRender&&this.options.afterCloudRender.call(this.$element)}}},drawOneWord:function(b,c){var d,e,f,g=this.data.namespace+b,h=this.data.angle,i=0,j=0,k=0,l=Math.floor(this.options.steps/2);for(c.attr=a.extend({},c.html,{id:g}),this.data.max_weight!=this.data.min_weight&&(l=Math.round(1*(c.weight-this.data.min_weight)*(this.options.steps-1)/(this.data.max_weight-this.data.min_weight))+1),d=a("<span>").attr(c.attr),d.addClass("jqcloud-word"),this.options.classPattern&&d.addClass(this.options.classPattern.replace("{n}",l)),this.data.colors.length&&d.css("color",this.data.colors[l-1]),c.color&&d.css("color",c.color),this.data.sizes.length&&d.css("font-size",this.data.sizes[l-1]),this.options.template?d.html(this.options.template(c)):c.link?("string"==typeof c.link&&(c.link={href:c.link}),this.options.encodeURI&&(c.link.href=encodeURI(c.link.href).replace(/'/g,"%27")),d.append(a("<a>").attr(c.link).text(c.text))):d.text(c.text),c.handlers&&d.on(c.handlers),this.$element.append(d),e={width:d.outerWidth(),height:d.outerHeight()},e.left=this.options.center.x*this.options.width-e.width/2,e.top=this.options.center.y*this.options.height-e.height/2,f=d[0].style,f.position="absolute",f.left=e.left+"px",f.top=e.top+"px";this.hitTest(e);){if("rectangular"===this.options.shape)switch(j++,j*this.data.step>(1+Math.floor(k/2))*this.data.step*(k%4%2===0?1:this.data.aspect_ratio)&&(j=0,k++),k%4){case 1:e.left+=this.data.step*this.data.aspect_ratio+2*Math.random();break;case 2:e.top-=this.data.step+2*Math.random();break;case 3:e.left-=this.data.step*this.data.aspect_ratio+2*Math.random();break;case 0:e.top+=this.data.step+2*Math.random()}else i+=this.data.step,h+=(b%2===0?1:-1)*this.data.step,e.left=this.options.center.x*this.options.width-e.width/2+i*Math.cos(h)*this.data.aspect_ratio,e.top=this.options.center.y*this.options.height+i*Math.sin(h)-e.height/2;f.left=e.left+"px",f.top=e.top+"px"}return this.options.removeOverflowing&&(e.left<0||e.top<0||e.left+e.width>this.options.width||e.top+e.height>this.options.height)?void d.remove():(this.data.placed_words.push(e),void("function"==typeof c.afterWordRender&&c.afterWordRender.call(d)))},drawOneWordDelayed:function(b){return b=b||0,this.$element.is(":visible")?void(b<this.word_array.length?(this.drawOneWord(b,this.word_array[b]),this.createTimeout(a.proxy(function(){this.drawOneWordDelayed(b+1)},this),this.options.delay)):"function"==typeof this.options.afterCloudRender&&this.options.afterCloudRender.call(this.$element)):void this.createTimeout(a.proxy(function(){this.drawOneWordDelayed(b)},this),10)},destroy:function(){this.options.autoResize&&a(window).off("resize."+this.data.namespace),this.clearTimeouts(),this.$element.removeClass("jqcloud"),this.$element.removeData("jqcloud"),this.$element.children('[id^="'+this.data.namespace+'"]').remove()},update:function(a){this.word_array=a,this.data.placed_words=[],this.clearTimeouts(),this.drawWordCloud()},resize:function(){var a={width:this.$element.width(),height:this.$element.height()};a.width==this.options.width&&a.height==this.options.height||(this.options.width=a.width,this.options.height=a.height,this.data.aspect_ratio=this.options.width/this.options.height,this.update(this.word_array))}},a.fn.jQCloud=function(b,d){var e=arguments;return this.each(function(){var f=a(this),g=f.data("jqcloud");if(g||"destroy"!==b)if(g)"string"==typeof b&&g[b].apply(g,Array.prototype.slice.call(e,1));else{var h="object"==typeof d?d:{};f.data("jqcloud",g=new c(this,b,h))}})},a.fn.jQCloud.defaults={set:function(b){a.extend(!0,c.DEFAULTS,b)},get:function(b){var d=c.DEFAULTS;return b&&(d=d[b]),a.extend(!0,{},d)}}});
\ No newline at end of file
diff --git a/word2vec/word2vec.js b/word2vec/word2vec.js
new file mode 100644
index 0000000..3207591
--- /dev/null
+++ b/word2vec/word2vec.js
@@ -0,0 +1,84 @@
+function Word2vec(data) {
+  function clean(str) {
+    return str.split(":")[0];
+}
+
+this.data = [];
+
+if (data.length > 0 && data[0].length > 0) {
+  this.data = [];
+  this.data.push({
+    text:clean(data[0][0]),
+    weight:1,
+    color: "violet"
+  });
+
+  console.log(JSON.stringify(data[0][1]));
+
+  var _tab = data[0][1];
+  for (var el in _tab) {
+    var __link = "cost_tam" + el;
+    this.data.push({
+      text: clean(_tab[el][0]),
+      weight: _tab[el][1],
+      link: "/lemma/pl/" + clean(_tab[el][0]),
+      handlers :{
+        click: function(res) {
+          return Word2vec.wordClick(res);
+        }
+      }
+    });
+
+      if (el > 50) {
+        break;
+      }
+    }
+    console.log(this.data);
+  }
+}
+
+Word2vec.wordClick = function(res) {
+  Lexp.target = "word2vec";
+  var target = "/lemma/pl/" + res.target.textContent;
+  Lexp.go2URL(target);
+
+  return false;
+}
+
+Word2vec.prototype.showHTML = function(tag) {
+  tag.html("");
+  tag.css("width", "100%");
+  stag = tag.append("<div/>").find('div:last-child');
+  data = this.data;
+
+  stag.jQCloud(this.data, {
+    height: 350,
+
+    shape: 'rectangular'
+  });
+  $("#lexpelement_word2vec .jqcloud");
+
+}
+
+Word2vec.id = "word2vec";
+var data = [], id;
+
+function reloadJQCloud() {
+  $("#lexpelement_word2vec .jqcloud").css("width", "100%");
+  $("#lexpelement_word2vec .jqcloud").empty();
+  $("#lexpelement_word2vec .jqcloud").jQCloud(data, {
+    height: 350,
+    shape: 'rectangular'
+  });
+ // $("#lexpelement_word2vec .jqcloud").css("margin","-10%");
+}
+
+$(function () {
+  Element.addVisualizer(Word2vec.id, Word2vec);
+
+  $(window).on('resize', function() {
+    clearTimeout(id);
+    id = setTimeout(reloadJQCloud, 500);
+  });
+
+});
\ No newline at end of file
-- 
GitLab